...

Package qapi

Overview ▾

Index ▾

func StrictDecode(into interface{}, from []byte) error
type ACPIOSTInfo
type ACPISlotType
    func (s ACPISlotType) MarshalJSON() ([]byte, error)
    func (s *ACPISlotType) UnmarshalJSON(data []byte) error
type Abort
type AbortWrapper
type AcpiDeviceOstEvent
type AcpiTableOptions
type ActionCompletionMode
    func (s ActionCompletionMode) MarshalJSON() ([]byte, error)
    func (s *ActionCompletionMode) UnmarshalJSON(data []byte) error
type AddClientCommand
type AddFdCommand
type AddfdInfo
type AnnounceParameters
type AnnounceSelfCommand
type Any
type AudioFormat
    func (s AudioFormat) MarshalJSON() ([]byte, error)
    func (s *AudioFormat) UnmarshalJSON(data []byte) error
type Audiodev
    func (s Audiodev) MarshalJSON() ([]byte, error)
    func (s *Audiodev) UnmarshalJSON(data []byte) error
type AudiodevAlsaOptions
type AudiodevAlsaPerDirectionOptions
type AudiodevBase
type AudiodevCoreaudioOptions
type AudiodevCoreaudioPerDirectionOptions
type AudiodevDriver
    func (s AudiodevDriver) MarshalJSON() ([]byte, error)
    func (s *AudiodevDriver) UnmarshalJSON(data []byte) error
type AudiodevDsoundOptions
type AudiodevGenericOptions
type AudiodevJackOptions
type AudiodevJackPerDirectionOptions
type AudiodevOssOptions
type AudiodevOssPerDirectionOptions
type AudiodevPaOptions
type AudiodevPaPerDirectionOptions
type AudiodevPerDirectionOptions
type AudiodevSdlOptions
type AudiodevSdlPerDirectionOptions
type AudiodevWavOptions
type AuthZListFileProperties
type AuthZListProperties
type AuthZPAMProperties
type AuthZSimpleProperties
type BackupCommon
type BackupPerf
type BalloonChangeEvent
type BalloonCommand
type BalloonInfo
type BiosAtaTranslation
    func (s BiosAtaTranslation) MarshalJSON() ([]byte, error)
    func (s *BiosAtaTranslation) UnmarshalJSON(data []byte) error
type BitmapMigrationBitmapAlias
type BitmapMigrationBitmapAliasTransform
type BitmapMigrationNodeAlias
type BitmapSyncMode
    func (s BitmapSyncMode) MarshalJSON() ([]byte, error)
    func (s *BitmapSyncMode) UnmarshalJSON(data []byte) error
type BlkdebugEvent
    func (s BlkdebugEvent) MarshalJSON() ([]byte, error)
    func (s *BlkdebugEvent) UnmarshalJSON(data []byte) error
type BlkdebugIOType
    func (s BlkdebugIOType) MarshalJSON() ([]byte, error)
    func (s *BlkdebugIOType) UnmarshalJSON(data []byte) error
type BlkdebugInjectErrorOptions
type BlkdebugSetStateOptions
type BlockCommitCommand
type BlockDeviceInfo
type BlockDeviceIoStatus
    func (s BlockDeviceIoStatus) MarshalJSON() ([]byte, error)
    func (s *BlockDeviceIoStatus) UnmarshalJSON(data []byte) error
type BlockDeviceStats
type BlockDeviceTimedStats
type BlockDirtyBitmap
type BlockDirtyBitmapAdd
type BlockDirtyBitmapAddCommand
type BlockDirtyBitmapAddWrapper
type BlockDirtyBitmapClearCommand
type BlockDirtyBitmapDisableCommand
type BlockDirtyBitmapEnableCommand
type BlockDirtyBitmapMerge
type BlockDirtyBitmapMergeCommand
type BlockDirtyBitmapMergeSource
    func (s BlockDirtyBitmapMergeSource) MarshalJSON() ([]byte, error)
    func (s *BlockDirtyBitmapMergeSource) UnmarshalJSON(data []byte) error
type BlockDirtyBitmapMergeWrapper
type BlockDirtyBitmapRemoveCommand
type BlockDirtyBitmapSha256
type BlockDirtyBitmapWrapper
type BlockDirtyInfo
type BlockErrorAction
    func (s BlockErrorAction) MarshalJSON() ([]byte, error)
    func (s *BlockErrorAction) UnmarshalJSON(data []byte) error
type BlockExportAddCommand
type BlockExportDelCommand
type BlockExportDeletedEvent
type BlockExportInfo
type BlockExportOptions
    func (s BlockExportOptions) MarshalJSON() ([]byte, error)
    func (s *BlockExportOptions) UnmarshalJSON(data []byte) error
type BlockExportOptionsBase
type BlockExportOptionsFuse
type BlockExportOptionsNbd
type BlockExportOptionsNbdBase
type BlockExportOptionsVhostUserBlk
type BlockExportRemoveMode
    func (s BlockExportRemoveMode) MarshalJSON() ([]byte, error)
    func (s *BlockExportRemoveMode) UnmarshalJSON(data []byte) error
type BlockExportType
    func (s BlockExportType) MarshalJSON() ([]byte, error)
    func (s *BlockExportType) UnmarshalJSON(data []byte) error
type BlockIOThrottle
type BlockImageCorruptedEvent
type BlockInfo
type BlockIoErrorEvent
type BlockJobCancelCommand
type BlockJobCancelledEvent
type BlockJobCompleteCommand
type BlockJobCompletedEvent
type BlockJobDismissCommand
type BlockJobErrorEvent
type BlockJobFinalizeCommand
type BlockJobInfo
type BlockJobPauseCommand
type BlockJobPendingEvent
type BlockJobReadyEvent
type BlockJobResumeCommand
type BlockJobSetSpeedCommand
type BlockLatencyHistogramInfo
type BlockLatencyHistogramSetCommand
type BlockMeasureInfo
type BlockPermission
    func (s BlockPermission) MarshalJSON() ([]byte, error)
    func (s *BlockPermission) UnmarshalJSON(data []byte) error
type BlockResizeCommand
type BlockSetIoThrottleCommand
type BlockSetWriteThresholdCommand
type BlockStats
type BlockStatsSpecific
    func (s BlockStatsSpecific) MarshalJSON() ([]byte, error)
    func (s *BlockStatsSpecific) UnmarshalJSON(data []byte) error
type BlockStatsSpecificBase
type BlockStatsSpecificFile
type BlockStatsSpecificNvme
type BlockStreamCommand
type BlockWriteThresholdEvent
type BlockdevAddCommand
type BlockdevAioOptions
    func (s BlockdevAioOptions) MarshalJSON() ([]byte, error)
    func (s *BlockdevAioOptions) UnmarshalJSON(data []byte) error
type BlockdevAmendOptions
    func (s BlockdevAmendOptions) MarshalJSON() ([]byte, error)
    func (s *BlockdevAmendOptions) UnmarshalJSON(data []byte) error
type BlockdevAmendOptionsBase
type BlockdevAmendOptionsLUKS
type BlockdevAmendOptionsQcow2
type BlockdevBackup
type BlockdevBackupCommand
type BlockdevBackupWrapper
type BlockdevCacheInfo
type BlockdevCacheOptions
type BlockdevChangeMediumCommand
type BlockdevChangeReadOnlyMode
    func (s BlockdevChangeReadOnlyMode) MarshalJSON() ([]byte, error)
    func (s *BlockdevChangeReadOnlyMode) UnmarshalJSON(data []byte) error
type BlockdevCloseTrayCommand
type BlockdevCreateCommand
type BlockdevCreateOptions
    func (s BlockdevCreateOptions) MarshalJSON() ([]byte, error)
    func (s *BlockdevCreateOptions) UnmarshalJSON(data []byte) error
type BlockdevCreateOptionsBase
type BlockdevCreateOptionsFile
type BlockdevCreateOptionsGluster
type BlockdevCreateOptionsLUKS
type BlockdevCreateOptionsNfs
type BlockdevCreateOptionsParallels
type BlockdevCreateOptionsQcow
type BlockdevCreateOptionsQcow2
type BlockdevCreateOptionsQed
type BlockdevCreateOptionsRbd
type BlockdevCreateOptionsSsh
type BlockdevCreateOptionsVdi
type BlockdevCreateOptionsVhdx
type BlockdevCreateOptionsVmdk
type BlockdevCreateOptionsVpc
type BlockdevDelCommand
type BlockdevDetectZeroesOptions
    func (s BlockdevDetectZeroesOptions) MarshalJSON() ([]byte, error)
    func (s *BlockdevDetectZeroesOptions) UnmarshalJSON(data []byte) error
type BlockdevDiscardOptions
    func (s BlockdevDiscardOptions) MarshalJSON() ([]byte, error)
    func (s *BlockdevDiscardOptions) UnmarshalJSON(data []byte) error
type BlockdevDriver
    func (s BlockdevDriver) MarshalJSON() ([]byte, error)
    func (s *BlockdevDriver) UnmarshalJSON(data []byte) error
type BlockdevInsertMediumCommand
type BlockdevMirrorCommand
type BlockdevOnError
    func (s BlockdevOnError) MarshalJSON() ([]byte, error)
    func (s *BlockdevOnError) UnmarshalJSON(data []byte) error
type BlockdevOpenTrayCommand
type BlockdevOptions
    func (s BlockdevOptions) MarshalJSON() ([]byte, error)
    func (s *BlockdevOptions) UnmarshalJSON(data []byte) error
type BlockdevOptionsBase
type BlockdevOptionsBlkdebug
type BlockdevOptionsBlklogwrites
type BlockdevOptionsBlkreplay
type BlockdevOptionsBlkverify
type BlockdevOptionsCbw
type BlockdevOptionsCor
type BlockdevOptionsCurlBase
type BlockdevOptionsCurlFtp
type BlockdevOptionsCurlFtps
type BlockdevOptionsCurlHttp
type BlockdevOptionsCurlHttps
type BlockdevOptionsFile
type BlockdevOptionsGenericCOWFormat
type BlockdevOptionsGenericFormat
type BlockdevOptionsGluster
type BlockdevOptionsIscsi
type BlockdevOptionsLUKS
type BlockdevOptionsNVMe
type BlockdevOptionsNbd
type BlockdevOptionsNfs
type BlockdevOptionsNull
type BlockdevOptionsPreallocate
type BlockdevOptionsQcow
type BlockdevOptionsQcow2
type BlockdevOptionsQuorum
type BlockdevOptionsRaw
type BlockdevOptionsRbd
type BlockdevOptionsReplication
type BlockdevOptionsSsh
type BlockdevOptionsThrottle
type BlockdevOptionsVVFAT
type BlockdevQcow2Encryption
    func (s BlockdevQcow2Encryption) MarshalJSON() ([]byte, error)
    func (s *BlockdevQcow2Encryption) UnmarshalJSON(data []byte) error
type BlockdevQcow2EncryptionBase
type BlockdevQcow2EncryptionFormat
    func (s BlockdevQcow2EncryptionFormat) MarshalJSON() ([]byte, error)
    func (s *BlockdevQcow2EncryptionFormat) UnmarshalJSON(data []byte) error
type BlockdevQcow2Version
    func (s BlockdevQcow2Version) MarshalJSON() ([]byte, error)
    func (s *BlockdevQcow2Version) UnmarshalJSON(data []byte) error
type BlockdevQcowEncryption
    func (s BlockdevQcowEncryption) MarshalJSON() ([]byte, error)
    func (s *BlockdevQcowEncryption) UnmarshalJSON(data []byte) error
type BlockdevQcowEncryptionBase
type BlockdevQcowEncryptionFormat
    func (s BlockdevQcowEncryptionFormat) MarshalJSON() ([]byte, error)
    func (s *BlockdevQcowEncryptionFormat) UnmarshalJSON(data []byte) error
type BlockdevRef
    func (s BlockdevRef) MarshalJSON() ([]byte, error)
    func (s *BlockdevRef) UnmarshalJSON(data []byte) error
type BlockdevRefOrNull
    func (s BlockdevRefOrNull) MarshalJSON() ([]byte, error)
    func (s *BlockdevRefOrNull) UnmarshalJSON(data []byte) error
type BlockdevRemoveMediumCommand
type BlockdevReopenCommand
type BlockdevSnapshot
type BlockdevSnapshotCommand
type BlockdevSnapshotDeleteInternalSyncCommand
type BlockdevSnapshotInternal
type BlockdevSnapshotInternalSyncCommand
type BlockdevSnapshotInternalWrapper
type BlockdevSnapshotSync
type BlockdevSnapshotSyncCommand
type BlockdevSnapshotSyncWrapper
type BlockdevSnapshotWrapper
type BlockdevVhdxSubformat
    func (s BlockdevVhdxSubformat) MarshalJSON() ([]byte, error)
    func (s *BlockdevVhdxSubformat) UnmarshalJSON(data []byte) error
type BlockdevVmdkAdapterType
    func (s BlockdevVmdkAdapterType) MarshalJSON() ([]byte, error)
    func (s *BlockdevVmdkAdapterType) UnmarshalJSON(data []byte) error
type BlockdevVmdkSubformat
    func (s BlockdevVmdkSubformat) MarshalJSON() ([]byte, error)
    func (s *BlockdevVmdkSubformat) UnmarshalJSON(data []byte) error
type BlockdevVpcSubformat
    func (s BlockdevVpcSubformat) MarshalJSON() ([]byte, error)
    func (s *BlockdevVpcSubformat) UnmarshalJSON(data []byte) error
type COLOExitReason
    func (s COLOExitReason) MarshalJSON() ([]byte, error)
    func (s *COLOExitReason) UnmarshalJSON(data []byte) error
type COLOMessage
    func (s COLOMessage) MarshalJSON() ([]byte, error)
    func (s *COLOMessage) UnmarshalJSON(data []byte) error
type COLOMode
    func (s COLOMode) MarshalJSON() ([]byte, error)
    func (s *COLOMode) UnmarshalJSON(data []byte) error
type COLOStatus
type CalcDirtyRateCommand
type CanHostSocketcanProperties
type ChangeBackingFileCommand
type ChangeVncPasswordCommand
type ChardevAddCommand
type ChardevBackend
    func (s ChardevBackend) MarshalJSON() ([]byte, error)
    func (s *ChardevBackend) UnmarshalJSON(data []byte) error
type ChardevBackendBase
type ChardevBackendInfo
type ChardevBackendKind
    func (s ChardevBackendKind) MarshalJSON() ([]byte, error)
    func (s *ChardevBackendKind) UnmarshalJSON(data []byte) error
type ChardevChangeCommand
type ChardevCommon
type ChardevCommonWrapper
type ChardevDBus
type ChardevDBusWrapper
type ChardevFile
type ChardevFileWrapper
type ChardevHostdev
type ChardevHostdevWrapper
type ChardevInfo
type ChardevMux
type ChardevMuxWrapper
type ChardevQemuVDAgent
type ChardevQemuVDAgentWrapper
type ChardevRemoveCommand
type ChardevReturn
type ChardevRingbuf
type ChardevRingbufWrapper
type ChardevSendBreakCommand
type ChardevSocket
type ChardevSocketWrapper
type ChardevSpiceChannel
type ChardevSpiceChannelWrapper
type ChardevSpicePort
type ChardevSpicePortWrapper
type ChardevStdio
type ChardevStdioWrapper
type ChardevUdp
type ChardevUdpWrapper
type ChardevVC
type ChardevVCWrapper
type ClientMigrateInfoCommand
type ClosefdCommand
type ColoCompareProperties
type ColoExitEvent
type Command
    func (s Command) GetReturnType() CommandResult
    func (s *Command) UnmarshalJSON(data []byte) error
type CommandBase
type CommandInfo
type CommandLineOptionInfo
type CommandLineParameterInfo
type CommandLineParameterType
    func (s CommandLineParameterType) MarshalJSON() ([]byte, error)
    func (s *CommandLineParameterType) UnmarshalJSON(data []byte) error
type CommandResult
    func (s *CommandResult) MarshalJSON() ([]byte, error)
    func (s *CommandResult) UnmarshalJSON(data []byte) error
type CompatPolicy
type CompatPolicyInput
    func (s CompatPolicyInput) MarshalJSON() ([]byte, error)
    func (s *CompatPolicyInput) UnmarshalJSON(data []byte) error
type CompatPolicyOutput
    func (s CompatPolicyOutput) MarshalJSON() ([]byte, error)
    func (s *CompatPolicyOutput) UnmarshalJSON(data []byte) error
type CompressionStats
type ContCommand
type CpuDefinitionInfo
type CpuInfoFast
    func (s CpuInfoFast) MarshalJSON() ([]byte, error)
    func (s *CpuInfoFast) UnmarshalJSON(data []byte) error
type CpuInfoFastBase
type CpuInfoS390
type CpuInstanceProperties
type CpuModelBaselineInfo
type CpuModelCompareInfo
type CpuModelCompareResult
    func (s CpuModelCompareResult) MarshalJSON() ([]byte, error)
    func (s *CpuModelCompareResult) UnmarshalJSON(data []byte) error
type CpuModelExpansionInfo
type CpuModelExpansionType
    func (s CpuModelExpansionType) MarshalJSON() ([]byte, error)
    func (s *CpuModelExpansionType) UnmarshalJSON(data []byte) error
type CpuModelInfo
type CpuS390State
    func (s CpuS390State) MarshalJSON() ([]byte, error)
    func (s *CpuS390State) UnmarshalJSON(data []byte) error
type CryptodevBackendProperties
type CryptodevVhostUserProperties
type CurrentMachineParams
type DBusVMStateProperties
type DataFormat
    func (s DataFormat) MarshalJSON() ([]byte, error)
    func (s *DataFormat) UnmarshalJSON(data []byte) error
type DeviceAddCommand
type DeviceDelCommand
type DeviceDeletedEvent
type DeviceListPropertiesCommand
type DeviceTrayMovedEvent
type DeviceUnplugGuestErrorEvent
type DirtyRateInfo
type DirtyRateMeasureMode
    func (s DirtyRateMeasureMode) MarshalJSON() ([]byte, error)
    func (s *DirtyRateMeasureMode) UnmarshalJSON(data []byte) error
type DirtyRateStatus
    func (s DirtyRateStatus) MarshalJSON() ([]byte, error)
    func (s *DirtyRateStatus) UnmarshalJSON(data []byte) error
type DirtyRateVcpu
type DisplayCocoa
type DisplayCurses
type DisplayDBus
type DisplayEGLHeadless
type DisplayGLMode
    func (s DisplayGLMode) MarshalJSON() ([]byte, error)
    func (s *DisplayGLMode) UnmarshalJSON(data []byte) error
type DisplayGTK
type DisplayOptions
    func (s DisplayOptions) MarshalJSON() ([]byte, error)
    func (s *DisplayOptions) UnmarshalJSON(data []byte) error
type DisplayOptionsBase
type DisplayProtocol
    func (s DisplayProtocol) MarshalJSON() ([]byte, error)
    func (s *DisplayProtocol) UnmarshalJSON(data []byte) error
type DisplayReloadCommand
type DisplayReloadOptions
    func (s DisplayReloadOptions) MarshalJSON() ([]byte, error)
    func (s *DisplayReloadOptions) UnmarshalJSON(data []byte) error
type DisplayReloadOptionsBase
type DisplayReloadOptionsVNC
type DisplayReloadType
    func (s DisplayReloadType) MarshalJSON() ([]byte, error)
    func (s *DisplayReloadType) UnmarshalJSON(data []byte) error
type DisplayType
    func (s DisplayType) MarshalJSON() ([]byte, error)
    func (s *DisplayType) UnmarshalJSON(data []byte) error
type DriveBackup
type DriveBackupCommand
type DriveBackupWrapper
type DriveMirror
type DriveMirrorCommand
type DummyForceArrays
type DumpCompletedEvent
type DumpGuestMemoryCapability
type DumpGuestMemoryCommand
type DumpGuestMemoryFormat
    func (s DumpGuestMemoryFormat) MarshalJSON() ([]byte, error)
    func (s *DumpGuestMemoryFormat) UnmarshalJSON(data []byte) error
type DumpQueryResult
type DumpSkeysCommand
type DumpStatus
    func (s DumpStatus) MarshalJSON() ([]byte, error)
    func (s *DumpStatus) UnmarshalJSON(data []byte) error
type EjectCommand
type Event
    func (s *Event) UnmarshalJSON(data []byte) error
type EventBase
type ExpirePasswordCommand
type ExpirePasswordOptions
    func (s ExpirePasswordOptions) MarshalJSON() ([]byte, error)
    func (s *ExpirePasswordOptions) UnmarshalJSON(data []byte) error
type ExpirePasswordOptionsBase
type ExpirePasswordOptionsVnc
type FailoverNegotiatedEvent
type FailoverStatus
    func (s FailoverStatus) MarshalJSON() ([]byte, error)
    func (s *FailoverStatus) UnmarshalJSON(data []byte) error
type FdsetFdInfo
type FdsetInfo
type FilterBufferProperties
type FilterDumpProperties
type FilterMirrorProperties
type FilterRedirectorProperties
type FilterRewriterProperties
type FloppyDriveType
    func (s FloppyDriveType) MarshalJSON() ([]byte, error)
    func (s *FloppyDriveType) UnmarshalJSON(data []byte) error
type FuseExportAllowOther
    func (s FuseExportAllowOther) MarshalJSON() ([]byte, error)
    func (s *FuseExportAllowOther) UnmarshalJSON(data []byte) error
type GICCapability
type GetfdCommand
type GrabToggleKeys
    func (s GrabToggleKeys) MarshalJSON() ([]byte, error)
    func (s *GrabToggleKeys) UnmarshalJSON(data []byte) error
type GuestCrashloadedEvent
type GuestPanicAction
    func (s GuestPanicAction) MarshalJSON() ([]byte, error)
    func (s *GuestPanicAction) UnmarshalJSON(data []byte) error
type GuestPanicInformation
    func (s GuestPanicInformation) MarshalJSON() ([]byte, error)
    func (s *GuestPanicInformation) UnmarshalJSON(data []byte) error
type GuestPanicInformationBase
type GuestPanicInformationHyperV
type GuestPanicInformationS390
type GuestPanicInformationType
    func (s GuestPanicInformationType) MarshalJSON() ([]byte, error)
    func (s *GuestPanicInformationType) UnmarshalJSON(data []byte) error
type GuestPanickedEvent
type GuidInfo
type HmatCacheAssociativity
    func (s HmatCacheAssociativity) MarshalJSON() ([]byte, error)
    func (s *HmatCacheAssociativity) UnmarshalJSON(data []byte) error
type HmatCacheWritePolicy
    func (s HmatCacheWritePolicy) MarshalJSON() ([]byte, error)
    func (s *HmatCacheWritePolicy) UnmarshalJSON(data []byte) error
type HmatLBDataType
    func (s HmatLBDataType) MarshalJSON() ([]byte, error)
    func (s *HmatLBDataType) UnmarshalJSON(data []byte) error
type HmatLBMemoryHierarchy
    func (s HmatLBMemoryHierarchy) MarshalJSON() ([]byte, error)
    func (s *HmatLBMemoryHierarchy) UnmarshalJSON(data []byte) error
type HostMemPolicy
    func (s HostMemPolicy) MarshalJSON() ([]byte, error)
    func (s *HostMemPolicy) UnmarshalJSON(data []byte) error
type HotpluggableCPU
type HumanMonitorCommandCommand
type HumanReadableText
type IOThreadInfo
type ImageCheck
type ImageInfo
type ImageInfoSpecific
    func (s ImageInfoSpecific) MarshalJSON() ([]byte, error)
    func (s *ImageInfoSpecific) UnmarshalJSON(data []byte) error
type ImageInfoSpecificBase
type ImageInfoSpecificKind
    func (s ImageInfoSpecificKind) MarshalJSON() ([]byte, error)
    func (s *ImageInfoSpecificKind) UnmarshalJSON(data []byte) error
type ImageInfoSpecificLUKSWrapper
type ImageInfoSpecificQCow2
type ImageInfoSpecificQCow2Encryption
    func (s ImageInfoSpecificQCow2Encryption) MarshalJSON() ([]byte, error)
    func (s *ImageInfoSpecificQCow2Encryption) UnmarshalJSON(data []byte) error
type ImageInfoSpecificQCow2EncryptionBase
type ImageInfoSpecificQCow2Wrapper
type ImageInfoSpecificRbd
type ImageInfoSpecificRbdWrapper
type ImageInfoSpecificVmdk
type ImageInfoSpecificVmdkWrapper
type InetSocketAddress
type InetSocketAddressBase
type InetSocketAddressWrapper
type InjectNmiCommand
type InputAxis
    func (s InputAxis) MarshalJSON() ([]byte, error)
    func (s *InputAxis) UnmarshalJSON(data []byte) error
type InputBarrierProperties
type InputBtnEvent
type InputBtnEventWrapper
type InputButton
    func (s InputButton) MarshalJSON() ([]byte, error)
    func (s *InputButton) UnmarshalJSON(data []byte) error
type InputEvent
    func (s InputEvent) MarshalJSON() ([]byte, error)
    func (s *InputEvent) UnmarshalJSON(data []byte) error
type InputEventBase
type InputEventKind
    func (s InputEventKind) MarshalJSON() ([]byte, error)
    func (s *InputEventKind) UnmarshalJSON(data []byte) error
type InputKeyEvent
type InputKeyEventWrapper
type InputLinuxProperties
type InputMoveEvent
type InputMoveEventWrapper
type InputSendEventCommand
type IntWrapper
type IoOperationType
    func (s IoOperationType) MarshalJSON() ([]byte, error)
    func (s *IoOperationType) UnmarshalJSON(data []byte) error
type IothreadProperties
type IscsiHeaderDigest
    func (s IscsiHeaderDigest) MarshalJSON() ([]byte, error)
    func (s *IscsiHeaderDigest) UnmarshalJSON(data []byte) error
type IscsiTransport
    func (s IscsiTransport) MarshalJSON() ([]byte, error)
    func (s *IscsiTransport) UnmarshalJSON(data []byte) error
type JSONType
    func (s JSONType) MarshalJSON() ([]byte, error)
    func (s *JSONType) UnmarshalJSON(data []byte) error
type JobCancelCommand
type JobCompleteCommand
type JobDismissCommand
type JobFinalizeCommand
type JobInfo
type JobPauseCommand
type JobResumeCommand
type JobStatus
    func (s JobStatus) MarshalJSON() ([]byte, error)
    func (s *JobStatus) UnmarshalJSON(data []byte) error
type JobStatusChangeEvent
type JobType
    func (s JobType) MarshalJSON() ([]byte, error)
    func (s *JobType) UnmarshalJSON(data []byte) error
type JobVerb
    func (s JobVerb) MarshalJSON() ([]byte, error)
    func (s *JobVerb) UnmarshalJSON(data []byte) error
type KeyValue
    func (s KeyValue) MarshalJSON() ([]byte, error)
    func (s *KeyValue) UnmarshalJSON(data []byte) error
type KeyValueBase
type KeyValueKind
    func (s KeyValueKind) MarshalJSON() ([]byte, error)
    func (s *KeyValueKind) UnmarshalJSON(data []byte) error
type KvmInfo
type LostTickPolicy
    func (s LostTickPolicy) MarshalJSON() ([]byte, error)
    func (s *LostTickPolicy) UnmarshalJSON(data []byte) error
type MachineInfo
type MapEntry
type MemUnplugErrorEvent
type Memdev
type MemoryBackendEpcProperties
type MemoryBackendFileProperties
type MemoryBackendMemfdProperties
type MemoryBackendProperties
type MemoryDeviceInfo
    func (s MemoryDeviceInfo) MarshalJSON() ([]byte, error)
    func (s *MemoryDeviceInfo) UnmarshalJSON(data []byte) error
type MemoryDeviceInfoBase
type MemoryDeviceInfoKind
    func (s MemoryDeviceInfoKind) MarshalJSON() ([]byte, error)
    func (s *MemoryDeviceInfoKind) UnmarshalJSON(data []byte) error
type MemoryDeviceSizeChangeEvent
type MemoryFailureAction
    func (s MemoryFailureAction) MarshalJSON() ([]byte, error)
    func (s *MemoryFailureAction) UnmarshalJSON(data []byte) error
type MemoryFailureEvent
type MemoryFailureFlags
type MemoryFailureRecipient
    func (s MemoryFailureRecipient) MarshalJSON() ([]byte, error)
    func (s *MemoryFailureRecipient) UnmarshalJSON(data []byte) error
type MemoryInfo
type MemsaveCommand
type MigrateCancelCommand
type MigrateCommand
type MigrateContinueCommand
type MigrateIncomingCommand
type MigratePauseCommand
type MigrateRecoverCommand
type MigrateSetCapabilitiesCommand
type MigrateSetParameters
type MigrateSetParametersCommand
type MigrateStartPostcopyCommand
type MigrationCapability
    func (s MigrationCapability) MarshalJSON() ([]byte, error)
    func (s *MigrationCapability) UnmarshalJSON(data []byte) error
type MigrationCapabilityStatus
type MigrationEvent
type MigrationInfo
type MigrationParameter
    func (s MigrationParameter) MarshalJSON() ([]byte, error)
    func (s *MigrationParameter) UnmarshalJSON(data []byte) error
type MigrationParameters
type MigrationPassEvent
type MigrationStats
type MigrationStatus
    func (s MigrationStatus) MarshalJSON() ([]byte, error)
    func (s *MigrationStatus) UnmarshalJSON(data []byte) error
type MirrorCopyMode
    func (s MirrorCopyMode) MarshalJSON() ([]byte, error)
    func (s *MirrorCopyMode) UnmarshalJSON(data []byte) error
type MirrorSyncMode
    func (s MirrorSyncMode) MarshalJSON() ([]byte, error)
    func (s *MirrorSyncMode) UnmarshalJSON(data []byte) error
type MonitorMode
    func (s MonitorMode) MarshalJSON() ([]byte, error)
    func (s *MonitorMode) UnmarshalJSON(data []byte) error
type MonitorOptions
type MouseInfo
type MultiFDCompression
    func (s MultiFDCompression) MarshalJSON() ([]byte, error)
    func (s *MultiFDCompression) UnmarshalJSON(data []byte) error
type NFSServer
type NFSTransport
    func (s NFSTransport) MarshalJSON() ([]byte, error)
    func (s *NFSTransport) UnmarshalJSON(data []byte) error
type NameInfo
type NbdServerAddCommand
type NbdServerAddOptions
type NbdServerOptions
type NbdServerRemoveCommand
type NbdServerStartCommand
type NbdServerStopCommand
type NetClientDriver
    func (s NetClientDriver) MarshalJSON() ([]byte, error)
    func (s *NetClientDriver) UnmarshalJSON(data []byte) error
type NetFilterDirection
    func (s NetFilterDirection) MarshalJSON() ([]byte, error)
    func (s *NetFilterDirection) UnmarshalJSON(data []byte) error
type NetLegacyNicOptions
type Netdev
    func (s Netdev) MarshalJSON() ([]byte, error)
    func (s *Netdev) UnmarshalJSON(data []byte) error
type NetdevAddCommand
type NetdevBase
type NetdevBridgeOptions
type NetdevDelCommand
type NetdevHubPortOptions
type NetdevL2TPv3Options
type NetdevNetmapOptions
type NetdevSocketOptions
type NetdevTapOptions
type NetdevUserOptions
type NetdevVdeOptions
type NetdevVhostUserOptions
type NetdevVhostVDPAOptions
type NetfilterInsert
    func (s NetfilterInsert) MarshalJSON() ([]byte, error)
    func (s *NetfilterInsert) UnmarshalJSON(data []byte) error
type NetfilterProperties
type NetworkAddressFamily
    func (s NetworkAddressFamily) MarshalJSON() ([]byte, error)
    func (s *NetworkAddressFamily) UnmarshalJSON(data []byte) error
type NewImageMode
    func (s NewImageMode) MarshalJSON() ([]byte, error)
    func (s *NewImageMode) UnmarshalJSON(data []byte) error
type NicRxFilterChangedEvent
type NumaCpuOptions
type NumaDistOptions
type NumaHmatCacheOptions
type NumaHmatLBOptions
type NumaNodeOptions
type NumaOptions
    func (s NumaOptions) MarshalJSON() ([]byte, error)
    func (s *NumaOptions) UnmarshalJSON(data []byte) error
type NumaOptionsBase
type NumaOptionsType
    func (s NumaOptionsType) MarshalJSON() ([]byte, error)
    func (s *NumaOptionsType) UnmarshalJSON(data []byte) error
type ObjectAddCommand
type ObjectDelCommand
type ObjectOptions
    func (s ObjectOptions) MarshalJSON() ([]byte, error)
    func (s *ObjectOptions) UnmarshalJSON(data []byte) error
type ObjectOptionsBase
type ObjectPropertyInfo
type ObjectType
    func (s ObjectType) MarshalJSON() ([]byte, error)
    func (s *ObjectType) UnmarshalJSON(data []byte) error
type ObjectTypeInfo
type OffAutoPCIBAR
    func (s OffAutoPCIBAR) MarshalJSON() ([]byte, error)
    func (s *OffAutoPCIBAR) UnmarshalJSON(data []byte) error
type OnOffAuto
    func (s OnOffAuto) MarshalJSON() ([]byte, error)
    func (s *OnOffAuto) UnmarshalJSON(data []byte) error
type OnOffSplit
    func (s OnOffSplit) MarshalJSON() ([]byte, error)
    func (s *OnOffSplit) UnmarshalJSON(data []byte) error
type PCDIMMDeviceInfo
type PCDIMMDeviceInfoWrapper
type PCIELinkSpeed
    func (s PCIELinkSpeed) MarshalJSON() ([]byte, error)
    func (s *PCIELinkSpeed) UnmarshalJSON(data []byte) error
type PCIELinkWidth
    func (s PCIELinkWidth) MarshalJSON() ([]byte, error)
    func (s *PCIELinkWidth) UnmarshalJSON(data []byte) error
type PRManagerInfo
type PanicAction
    func (s PanicAction) MarshalJSON() ([]byte, error)
    func (s *PanicAction) UnmarshalJSON(data []byte) error
type PciBridgeInfo
type PciBusInfo
type PciDeviceClass
type PciDeviceId
type PciDeviceInfo
type PciInfo
type PciMemoryRange
type PciMemoryRegion
type PmemsaveCommand
type PowerdownEvent
type PrManagerHelperProperties
type PrManagerStatusChangedEvent
type PreallocMode
    func (s PreallocMode) MarshalJSON() ([]byte, error)
    func (s *PreallocMode) UnmarshalJSON(data []byte) error
type QAuthZListFormat
    func (s QAuthZListFormat) MarshalJSON() ([]byte, error)
    func (s *QAuthZListFormat) UnmarshalJSON(data []byte) error
type QAuthZListPolicy
    func (s QAuthZListPolicy) MarshalJSON() ([]byte, error)
    func (s *QAuthZListPolicy) UnmarshalJSON(data []byte) error
type QAuthZListRule
type QCryptoBlockAmendOptions
    func (s QCryptoBlockAmendOptions) MarshalJSON() ([]byte, error)
    func (s *QCryptoBlockAmendOptions) UnmarshalJSON(data []byte) error
type QCryptoBlockAmendOptionsLUKS
type QCryptoBlockCreateOptions
    func (s QCryptoBlockCreateOptions) MarshalJSON() ([]byte, error)
    func (s *QCryptoBlockCreateOptions) UnmarshalJSON(data []byte) error
type QCryptoBlockCreateOptionsLUKS
type QCryptoBlockFormat
    func (s QCryptoBlockFormat) MarshalJSON() ([]byte, error)
    func (s *QCryptoBlockFormat) UnmarshalJSON(data []byte) error
type QCryptoBlockInfo
    func (s QCryptoBlockInfo) MarshalJSON() ([]byte, error)
    func (s *QCryptoBlockInfo) UnmarshalJSON(data []byte) error
type QCryptoBlockInfoBase
type QCryptoBlockInfoLUKS
type QCryptoBlockInfoLUKSSlot
type QCryptoBlockLUKSKeyslotState
    func (s QCryptoBlockLUKSKeyslotState) MarshalJSON() ([]byte, error)
    func (s *QCryptoBlockLUKSKeyslotState) UnmarshalJSON(data []byte) error
type QCryptoBlockOpenOptions
    func (s QCryptoBlockOpenOptions) MarshalJSON() ([]byte, error)
    func (s *QCryptoBlockOpenOptions) UnmarshalJSON(data []byte) error
type QCryptoBlockOptionsBase
type QCryptoBlockOptionsLUKS
type QCryptoBlockOptionsQCow
type QCryptoCipherAlgorithm
    func (s QCryptoCipherAlgorithm) MarshalJSON() ([]byte, error)
    func (s *QCryptoCipherAlgorithm) UnmarshalJSON(data []byte) error
type QCryptoCipherMode
    func (s QCryptoCipherMode) MarshalJSON() ([]byte, error)
    func (s *QCryptoCipherMode) UnmarshalJSON(data []byte) error
type QCryptoHashAlgorithm
    func (s QCryptoHashAlgorithm) MarshalJSON() ([]byte, error)
    func (s *QCryptoHashAlgorithm) UnmarshalJSON(data []byte) error
type QCryptoIVGenAlgorithm
    func (s QCryptoIVGenAlgorithm) MarshalJSON() ([]byte, error)
    func (s *QCryptoIVGenAlgorithm) UnmarshalJSON(data []byte) error
type QCryptoSecretFormat
    func (s QCryptoSecretFormat) MarshalJSON() ([]byte, error)
    func (s *QCryptoSecretFormat) UnmarshalJSON(data []byte) error
type QCryptoTLSCredsEndpoint
    func (s QCryptoTLSCredsEndpoint) MarshalJSON() ([]byte, error)
    func (s *QCryptoTLSCredsEndpoint) UnmarshalJSON(data []byte) error
type QKeyCode
    func (s QKeyCode) MarshalJSON() ([]byte, error)
    func (s *QKeyCode) UnmarshalJSON(data []byte) error
type QKeyCodeWrapper
type QMPCapability
    func (s QMPCapability) MarshalJSON() ([]byte, error)
    func (s *QMPCapability) UnmarshalJSON(data []byte) error
type QType
    func (s QType) MarshalJSON() ([]byte, error)
    func (s *QType) UnmarshalJSON(data []byte) error
type QapiErrorClass
    func (s QapiErrorClass) MarshalJSON() ([]byte, error)
    func (s *QapiErrorClass) UnmarshalJSON(data []byte) error
type Qcow2BitmapInfo
type Qcow2BitmapInfoFlags
    func (s Qcow2BitmapInfoFlags) MarshalJSON() ([]byte, error)
    func (s *Qcow2BitmapInfoFlags) UnmarshalJSON(data []byte) error
type Qcow2CompressionType
    func (s Qcow2CompressionType) MarshalJSON() ([]byte, error)
    func (s *Qcow2CompressionType) UnmarshalJSON(data []byte) error
type Qcow2OverlapCheckFlags
type Qcow2OverlapCheckMode
    func (s Qcow2OverlapCheckMode) MarshalJSON() ([]byte, error)
    func (s *Qcow2OverlapCheckMode) UnmarshalJSON(data []byte) error
type Qcow2OverlapChecks
    func (s Qcow2OverlapChecks) MarshalJSON() ([]byte, error)
    func (s *Qcow2OverlapChecks) UnmarshalJSON(data []byte) error
type QmpCapabilitiesCommand
type QomGetCommand
type QomListCommand
type QomListPropertiesCommand
type QomListTypesCommand
type QomSetCommand
type QtestProperties
type QueryAcpiOspmStatusCommand
type QueryBalloonCommand
type QueryBlockCommand
type QueryBlockExportsCommand
type QueryBlockJobsCommand
type QueryBlockstatsCommand
type QueryChardevBackendsCommand
type QueryChardevCommand
type QueryColoStatusCommand
type QueryCommandLineOptionsCommand
type QueryCommandsCommand
type QueryCpuDefinitionsCommand
type QueryCpuModelBaselineCommand
type QueryCpuModelComparisonCommand
type QueryCpuModelExpansionCommand
type QueryCpusFastCommand
type QueryCurrentMachineCommand
type QueryDirtyRateCommand
type QueryDisplayOptionsCommand
type QueryDumpCommand
type QueryDumpGuestMemoryCapabilityCommand
type QueryFdsetsCommand
type QueryGicCapabilitiesCommand
type QueryHotpluggableCpusCommand
type QueryIothreadsCommand
type QueryJobsCommand
type QueryKvmCommand
type QueryMachinesCommand
type QueryMemdevCommand
type QueryMemoryDevicesCommand
type QueryMemorySizeSummaryCommand
type QueryMiceCommand
type QueryMigrateCapabilitiesCommand
type QueryMigrateCommand
type QueryMigrateParametersCommand
type QueryNameCommand
type QueryNamedBlockNodesCommand
type QueryPciCommand
type QueryPrManagersCommand
type QueryQmpSchemaCommand
type QueryReplayCommand
type QueryRockerCommand
type QueryRockerOfDpaFlowsCommand
type QueryRockerOfDpaGroupsCommand
type QueryRockerPortsCommand
type QueryRxFilterCommand
type QuerySevAttestationReportCommand
type QuerySevCapabilitiesCommand
type QuerySevCommand
type QuerySevLaunchMeasureCommand
type QuerySgxCapabilitiesCommand
type QuerySgxCommand
type QuerySpiceCommand
type QueryStatusCommand
type QueryTargetCommand
type QueryTpmCommand
type QueryTpmModelsCommand
type QueryTpmTypesCommand
type QueryUuidCommand
type QueryVersionCommand
type QueryVmGenerationIdCommand
type QueryVncCommand
type QueryVncServersCommand
type QueryXenReplicationStatusCommand
type QueryYankCommand
type QuitCommand
type QuorumFailureEvent
type QuorumOpType
    func (s QuorumOpType) MarshalJSON() ([]byte, error)
    func (s *QuorumOpType) UnmarshalJSON(data []byte) error
type QuorumReadPattern
    func (s QuorumReadPattern) MarshalJSON() ([]byte, error)
    func (s *QuorumReadPattern) UnmarshalJSON(data []byte) error
type QuorumReportBadEvent
type RbdAuthMode
    func (s RbdAuthMode) MarshalJSON() ([]byte, error)
    func (s *RbdAuthMode) UnmarshalJSON(data []byte) error
type RbdEncryptionCreateOptions
    func (s RbdEncryptionCreateOptions) MarshalJSON() ([]byte, error)
    func (s *RbdEncryptionCreateOptions) UnmarshalJSON(data []byte) error
type RbdEncryptionCreateOptionsBase
type RbdEncryptionCreateOptionsLUKS
type RbdEncryptionCreateOptionsLUKS2
type RbdEncryptionCreateOptionsLUKSBase
type RbdEncryptionOptions
    func (s RbdEncryptionOptions) MarshalJSON() ([]byte, error)
    func (s *RbdEncryptionOptions) UnmarshalJSON(data []byte) error
type RbdEncryptionOptionsBase
type RbdEncryptionOptionsLUKS
type RbdEncryptionOptionsLUKS2
type RbdEncryptionOptionsLUKSBase
type RbdImageEncryptionFormat
    func (s RbdImageEncryptionFormat) MarshalJSON() ([]byte, error)
    func (s *RbdImageEncryptionFormat) UnmarshalJSON(data []byte) error
type RdmaGidStatusChangedEvent
type RebootAction
    func (s RebootAction) MarshalJSON() ([]byte, error)
    func (s *RebootAction) UnmarshalJSON(data []byte) error
type RemoteObjectProperties
type RemoveFdCommand
type ReplayBreakCommand
type ReplayDeleteBreakCommand
type ReplayInfo
type ReplayMode
    func (s ReplayMode) MarshalJSON() ([]byte, error)
    func (s *ReplayMode) UnmarshalJSON(data []byte) error
type ReplaySeekCommand
type ReplicationMode
    func (s ReplicationMode) MarshalJSON() ([]byte, error)
    func (s *ReplicationMode) UnmarshalJSON(data []byte) error
type ReplicationStatus
type ResetEvent
type ResumeEvent
type RingbufReadCommand
type RingbufWriteCommand
type RngEgdProperties
type RngProperties
type RngRandomProperties
type RockerOfDpaFlow
type RockerOfDpaFlowAction
type RockerOfDpaFlowKey
type RockerOfDpaFlowMask
type RockerOfDpaGroup
type RockerPort
type RockerPortAutoneg
    func (s RockerPortAutoneg) MarshalJSON() ([]byte, error)
    func (s *RockerPortAutoneg) UnmarshalJSON(data []byte) error
type RockerPortDuplex
    func (s RockerPortDuplex) MarshalJSON() ([]byte, error)
    func (s *RockerPortDuplex) UnmarshalJSON(data []byte) error
type RockerSwitch
type RtcChangeEvent
type RtcResetReinjectionCommand
type RunState
    func (s RunState) MarshalJSON() ([]byte, error)
    func (s *RunState) UnmarshalJSON(data []byte) error
type RxFilterInfo
type RxState
    func (s RxState) MarshalJSON() ([]byte, error)
    func (s *RxState) UnmarshalJSON(data []byte) error
type S390CrashReason
    func (s S390CrashReason) MarshalJSON() ([]byte, error)
    func (s *S390CrashReason) UnmarshalJSON(data []byte) error
type SGXEPCSection
type SGXInfo
type SMPConfiguration
type SchemaInfo
    func (s SchemaInfo) MarshalJSON() ([]byte, error)
    func (s *SchemaInfo) UnmarshalJSON(data []byte) error
type SchemaInfoAlternate
type SchemaInfoAlternateMember
type SchemaInfoArray
type SchemaInfoBase
type SchemaInfoBuiltin
type SchemaInfoCommand
type SchemaInfoEnum
type SchemaInfoEnumMember
type SchemaInfoEvent
type SchemaInfoObject
type SchemaInfoObjectMember
type SchemaInfoObjectVariant
type SchemaMetaType
    func (s SchemaMetaType) MarshalJSON() ([]byte, error)
    func (s *SchemaMetaType) UnmarshalJSON(data []byte) error
type ScreendumpCommand
type SecretCommonProperties
type SecretKeyringProperties
type SecretProperties
type SendKeyCommand
type SetActionCommand
type SetLinkCommand
type SetNumaNodeCommand
type SetPasswordAction
    func (s SetPasswordAction) MarshalJSON() ([]byte, error)
    func (s *SetPasswordAction) UnmarshalJSON(data []byte) error
type SetPasswordCommand
type SetPasswordOptions
    func (s SetPasswordOptions) MarshalJSON() ([]byte, error)
    func (s *SetPasswordOptions) UnmarshalJSON(data []byte) error
type SetPasswordOptionsBase
type SetPasswordOptionsVnc
type SevAttestationReport
type SevCapability
type SevGuestProperties
type SevInfo
type SevInjectLaunchSecretCommand
type SevLaunchMeasureInfo
type SevState
    func (s SevState) MarshalJSON() ([]byte, error)
    func (s *SevState) UnmarshalJSON(data []byte) error
type SgxEPC
type SgxEPCDeviceInfo
type SgxEPCDeviceInfoWrapper
type SgxEPCProperties
type ShutdownAction
    func (s ShutdownAction) MarshalJSON() ([]byte, error)
    func (s *ShutdownAction) UnmarshalJSON(data []byte) error
type ShutdownCause
    func (s ShutdownCause) MarshalJSON() ([]byte, error)
    func (s *ShutdownCause) UnmarshalJSON(data []byte) error
type ShutdownEvent
type SmbiosEntryPointType
    func (s SmbiosEntryPointType) MarshalJSON() ([]byte, error)
    func (s *SmbiosEntryPointType) UnmarshalJSON(data []byte) error
type SnapshotDeleteCommand
type SnapshotInfo
type SnapshotLoadCommand
type SnapshotSaveCommand
type SocketAddress
    func (s SocketAddress) MarshalJSON() ([]byte, error)
    func (s *SocketAddress) UnmarshalJSON(data []byte) error
type SocketAddressBase
type SocketAddressLegacy
    func (s SocketAddressLegacy) MarshalJSON() ([]byte, error)
    func (s *SocketAddressLegacy) UnmarshalJSON(data []byte) error
type SocketAddressLegacyBase
type SocketAddressType
    func (s SocketAddressType) MarshalJSON() ([]byte, error)
    func (s *SocketAddressType) UnmarshalJSON(data []byte) error
type SpiceBasicInfo
type SpiceChannel
type SpiceConnectedEvent
type SpiceDisconnectedEvent
type SpiceInfo
type SpiceInitializedEvent
type SpiceMigrateCompletedEvent
type SpiceQueryMouseMode
    func (s SpiceQueryMouseMode) MarshalJSON() ([]byte, error)
    func (s *SpiceQueryMouseMode) UnmarshalJSON(data []byte) error
type SpiceServerInfo
type SshHostKeyCheck
    func (s SshHostKeyCheck) MarshalJSON() ([]byte, error)
    func (s *SshHostKeyCheck) UnmarshalJSON(data []byte) error
type SshHostKeyCheckBase
type SshHostKeyCheckHashType
    func (s SshHostKeyCheckHashType) MarshalJSON() ([]byte, error)
    func (s *SshHostKeyCheckHashType) UnmarshalJSON(data []byte) error
type SshHostKeyCheckMode
    func (s SshHostKeyCheckMode) MarshalJSON() ([]byte, error)
    func (s *SshHostKeyCheckMode) UnmarshalJSON(data []byte) error
type SshHostKeyHash
type StatusInfo
type StopCommand
type StopEvent
type StrOrNull
    func (s StrOrNull) MarshalJSON() ([]byte, error)
    func (s *StrOrNull) UnmarshalJSON(data []byte) error
type String
type StringWrapper
type SuspendDiskEvent
type SuspendEvent
type SysEmuTarget
    func (s SysEmuTarget) MarshalJSON() ([]byte, error)
    func (s *SysEmuTarget) UnmarshalJSON(data []byte) error
type SystemPowerdownCommand
type SystemResetCommand
type SystemWakeupCommand
type TPMEmulatorOptions
type TPMEmulatorOptionsWrapper
type TPMInfo
type TPMPassthroughOptions
type TPMPassthroughOptionsWrapper
type TargetInfo
type ThrottleGroupProperties
type ThrottleLimits
type TlsCredsAnonProperties
type TlsCredsProperties
type TlsCredsPskProperties
type TlsCredsX509Properties
type TpmModel
    func (s TpmModel) MarshalJSON() ([]byte, error)
    func (s *TpmModel) UnmarshalJSON(data []byte) error
type TpmType
    func (s TpmType) MarshalJSON() ([]byte, error)
    func (s *TpmType) UnmarshalJSON(data []byte) error
type TpmTypeOptions
    func (s TpmTypeOptions) MarshalJSON() ([]byte, error)
    func (s *TpmTypeOptions) UnmarshalJSON(data []byte) error
type TpmTypeOptionsBase
type TraceEventGetStateCommand
type TraceEventInfo
type TraceEventSetStateCommand
type TraceEventState
    func (s TraceEventState) MarshalJSON() ([]byte, error)
    func (s *TraceEventState) UnmarshalJSON(data []byte) error
type TransactionAction
    func (s TransactionAction) MarshalJSON() ([]byte, error)
    func (s *TransactionAction) UnmarshalJSON(data []byte) error
type TransactionActionBase
type TransactionActionKind
    func (s TransactionActionKind) MarshalJSON() ([]byte, error)
    func (s *TransactionActionKind) UnmarshalJSON(data []byte) error
type TransactionCommand
type TransactionProperties
type UnixSocketAddress
type UnixSocketAddressWrapper
type UnplugPrimaryEvent
type UuidInfo
type VersionInfo
type VersionTriple
type VfioStats
type VirtioMEMDeviceInfo
type VirtioMEMDeviceInfoWrapper
type VirtioPMEMDeviceInfo
type VirtioPMEMDeviceInfoWrapper
type VncBasicInfo
type VncClientInfo
type VncConnectedEvent
type VncDisconnectedEvent
type VncInfo
type VncInfo2
type VncInitializedEvent
type VncPrimaryAuth
    func (s VncPrimaryAuth) MarshalJSON() ([]byte, error)
    func (s *VncPrimaryAuth) UnmarshalJSON(data []byte) error
type VncServerInfo
type VncServerInfo2
type VncVencryptSubAuth
    func (s VncVencryptSubAuth) MarshalJSON() ([]byte, error)
    func (s *VncVencryptSubAuth) UnmarshalJSON(data []byte) error
type VserportChangeEvent
type VsockSocketAddress
type VsockSocketAddressWrapper
type WakeupEvent
type WatchdogAction
    func (s WatchdogAction) MarshalJSON() ([]byte, error)
    func (s *WatchdogAction) UnmarshalJSON(data []byte) error
type WatchdogEvent
type WatchdogSetActionCommand
type X86CPUFeatureWordInfo
type X86CPURegister32
    func (s X86CPURegister32) MarshalJSON() ([]byte, error)
    func (s *X86CPURegister32) UnmarshalJSON(data []byte) error
type XBZRLECacheStats
type XBlockdevAmendCommand
type XBlockdevChangeCommand
type XBlockdevSetIothreadCommand
type XColoLostHeartbeatCommand
type XDbgBlockGraph
type XDbgBlockGraphEdge
type XDbgBlockGraphNode
type XDbgBlockGraphNodeType
    func (s XDbgBlockGraphNodeType) MarshalJSON() ([]byte, error)
    func (s *XDbgBlockGraphNodeType) UnmarshalJSON(data []byte) error
type XDebugBlockDirtyBitmapSha256Command
type XDebugQueryBlockGraphCommand
type XExitPreconfigCommand
type XQueryIrqCommand
type XQueryJitCommand
type XQueryNumaCommand
type XQueryOpcountCommand
type XQueryProfileCommand
type XQueryRamblockCommand
type XQueryRdmaCommand
type XQueryRomsCommand
type XQueryUsbCommand
type XenColoDoCheckpointCommand
type XenLoadDevicesStateCommand
type XenSaveDevicesStateCommand
type XenSetGlobalDirtyLogCommand
type XenSetReplicationCommand
type YankCommand
type YankInstance
    func (s YankInstance) MarshalJSON() ([]byte, error)
    func (s *YankInstance) UnmarshalJSON(data []byte) error
type YankInstanceBase
type YankInstanceBlockNode
type YankInstanceChardev
type YankInstanceType
    func (s YankInstanceType) MarshalJSON() ([]byte, error)
    func (s *YankInstanceType) UnmarshalJSON(data []byte) error

Package files

alternates.go commands.go doc.go enums.go events.go helpers.go structs.go unions.go

func StrictDecode

func StrictDecode(into interface{}, from []byte) error

Creates a decoder that errors on unknown Fields Returns true if successfully decoded @from string @into type Returns false without error is failed with "unknown field" Returns false with error is a different error was found

type ACPIOSTInfo

OSPM Status Indication for a device For description of possible values of @source and @status fields see "_OST (OSPM Status Indication)" chapter of ACPI5.0 spec.

Since: 2.1

type ACPIOSTInfo struct {
    Device   *string      `json:"device,omitempty"` // device ID associated with slot
    Slot     string       `json:"slot"`             // slot ID, unique per slot of a given @slot-type
    SlotType ACPISlotType `json:"slot-type"`        // type of the slot
    Source   int64        `json:"source"`           // an integer containing the source event
    Status   int64        `json:"status"`           // an integer containing the status code
}

type ACPISlotType

type ACPISlotType int32
const (
    ACPISlotTypeDimm ACPISlotType = iota
    ACPISlotTypeCpu               // logical CPU slot (since 2.7)
)

func (ACPISlotType) MarshalJSON

func (s ACPISlotType) MarshalJSON() ([]byte, error)

func (*ACPISlotType) UnmarshalJSON

func (s *ACPISlotType) UnmarshalJSON(data []byte) error

type Abort

This action can be used to test transaction failure.

Since: 1.6

type Abort struct{}

type AbortWrapper

Since: 1.6

type AbortWrapper struct {
    Data Abort `json:"data"`
}

type AcpiDeviceOstEvent

Emitted when guest executes ACPI _OST method.

Since: 2.1

Example: <- { "event": "ACPI_DEVICE_OST",

"data": { "device": "d1", "slot": "0",
          "slot-type": "DIMM", "source": 1, "status": 0 } }
type AcpiDeviceOstEvent struct {
    Info ACPIOSTInfo `json:"info"` // OSPM Status Indication
}

type AcpiTableOptions

Specify an ACPI table on the command line to load.

At most one of @file and @data can be specified. The list of files specified by any one of them is loaded and concatenated in order. If both are omitted, @data is implied.

Other fields / optargs can be used to override fields of the generic ACPI table header; refer to the ACPI specification 5.0, section 5.2.6 System Description Table Header. If a header field is not overridden, then the corresponding value from the concatenated blob is used (in case of @file), or it is filled in with a hard-coded value (in case of @data).

String fields are copied into the matching ACPI member from lowest address upwards, and silently truncated / NUL-padded to length.

Since: 1.5

type AcpiTableOptions struct {
    Sig            *string `json:"sig,omitempty"`              // table signature / identifier (4 bytes)
    Rev            *uint8  `json:"rev,omitempty"`              // table revision number (dependent on signature, 1 byte)
    OemId          *string `json:"oem_id,omitempty"`           // OEM identifier (6 bytes)
    OemTableId     *string `json:"oem_table_id,omitempty"`     // OEM table identifier (8 bytes)
    OemRev         *uint32 `json:"oem_rev,omitempty"`          // OEM-supplied revision number (4 bytes)
    AslCompilerId  *string `json:"asl_compiler_id,omitempty"`  // identifier of the utility that created the table (4 bytes)
    AslCompilerRev *uint32 `json:"asl_compiler_rev,omitempty"` // revision number of the utility that created the table (4 bytes)
    File           *string `json:"file,omitempty"`             // colon (:) separated list of pathnames to load and concatenate as table data. The resultant binary blob is expected to have an ACPI table header. At least one file is required. This field excludes @data.
    Data           *string `json:"data,omitempty"`             // colon (:) separated list of pathnames to load and concatenate as table data. The resultant binary blob must not have an ACPI table header. At least one file is required. This field excludes @file.
}

type ActionCompletionMode

An enumeration of Transactional completion modes.

Since: 2.5

type ActionCompletionMode int32
const (
    ActionCompletionModeIndividual ActionCompletionMode = iota
    ActionCompletionModeGrouped                         // If any Action fails after the Transaction succeeds, cancel all Actions. Actions do not complete until all Actions are ready to complete. May be rejected by Actions that do not support this completion mode.
)

func (ActionCompletionMode) MarshalJSON

func (s ActionCompletionMode) MarshalJSON() ([]byte, error)

func (*ActionCompletionMode) UnmarshalJSON

func (s *ActionCompletionMode) UnmarshalJSON(data []byte) error

type AddClientCommand

Allow client connections for VNC, Spice and socket based character devices to be passed in to QEMU via SCM_RIGHTS.

Returns: nothing on success.

Since: 0.14

Example: -> { "execute": "add_client", "arguments": { "protocol": "vnc",

"fdname": "myclient" } }

<- { "return": {} }

type AddClientCommand struct {
    Protocol string `json:"protocol"`           // protocol name. Valid names are "vnc", "spice", "@dbus-display" or the name of a character device (eg. from -chardev id=XXXX)
    Fdname   string `json:"fdname"`             // file descriptor name previously passed via 'getfd' command
    Skipauth *bool  `json:"skipauth,omitempty"` // whether to skip authentication. Only applies to "vnc" and "spice" protocols
    Tls      *bool  `json:"tls,omitempty"`      // whether to perform TLS. Only applies to the "spice" protocol
}

type AddFdCommand

Add a file descriptor, that was passed via SCM rights, to an fd set.

Returns: - @AddfdInfo on success - If file descriptor was not received, FdNotSupplied - If @fdset-id is a negative value, InvalidParameterValue

Notes: The list of fd sets is shared by all monitor connections.

If @fdset-id is not specified, a new fd set will be created.

Since: 1.2

Example: -> { "execute": "add-fd", "arguments": { "fdset-id": 1 } } <- { "return": { "fdset-id": 1, "fd": 3 } }

type AddFdCommand struct {
    FdsetId *int64  `json:"fdset-id,omitempty"` // The ID of the fd set to add the file descriptor to.
    Opaque  *string `json:"opaque,omitempty"`   // A free-form string that can be used to describe the fd.
}

type AddfdInfo

Information about a file descriptor that was added to an fd set.

Since: 1.2

type AddfdInfo struct {
    FdsetId int64 `json:"fdset-id"` // The ID of the fd set that @fd was added to.
    Fd      int64 `json:"fd"`       // The file descriptor that was received via SCM rights and added to the fd set.
}

type AnnounceParameters

Parameters for self-announce timers

Since: 4.0

type AnnounceParameters struct {
    Initial    int64    `json:"initial"`              // Initial delay (in ms) before sending the first GARP/RARP announcement
    Max        int64    `json:"max"`                  // Maximum delay (in ms) between GARP/RARP announcement packets
    Rounds     int64    `json:"rounds"`               // Number of self-announcement attempts
    Step       int64    `json:"step"`                 // Delay increase (in ms) after each self-announcement attempt
    Interfaces []string `json:"interfaces,omitempty"` // An optional list of interface names, which restricts the announcement to the listed interfaces. (Since 4.1)
    Id         *string  `json:"id,omitempty"`         // A name to be used to identify an instance of announce-timers and to allow it to modified later. Not for use as part of the migration parameters. (Since 4.1)
}

type AnnounceSelfCommand

Trigger generation of broadcast RARP frames to update network switches. This can be useful when network bonds fail-over the active slave.

Example: -> { "execute": "announce-self",

"arguments": {
    "initial": 50, "max": 550, "rounds": 10, "step": 50,
    "interfaces": ["vn2", "vn3"], "id": "bob" } }

<- { "return": {} }

Since: 4.0

type AnnounceSelfCommand struct {
    AnnounceParameters
}

type Any

Alias for go version lower than 1.18

type Any = interface{}

type AudioFormat

An enumeration of possible audio formats.

Since: 4.0

type AudioFormat int32
const (
    AudioFormatU8  AudioFormat = iota
    AudioFormatS8              // signed 8 bit integer
    AudioFormatU16             // unsigned 16 bit integer
    AudioFormatS16             // signed 16 bit integer
    AudioFormatU32             // unsigned 32 bit integer
    AudioFormatS32             // signed 32 bit integer
    AudioFormatF32             // single precision floating-point (since 5.0)
)

func (AudioFormat) MarshalJSON

func (s AudioFormat) MarshalJSON() ([]byte, error)

func (*AudioFormat) UnmarshalJSON

func (s *AudioFormat) UnmarshalJSON(data []byte) error

type Audiodev

Options of an audio backend.

Since: 4.0

type Audiodev struct {
    // Base type for this struct
    AudiodevBase
    // Value based on @driver, possible types:
    // * AudiodevGenericOptions
    // * AudiodevAlsaOptions
    // * AudiodevCoreaudioOptions
    // * AudiodevGenericOptions
    // * AudiodevDsoundOptions
    // * AudiodevJackOptions
    // * AudiodevOssOptions
    // * AudiodevPaOptions
    // * AudiodevSdlOptions
    // * AudiodevGenericOptions
    // * AudiodevWavOptions
    Value Any
}

func (Audiodev) MarshalJSON

func (s Audiodev) MarshalJSON() ([]byte, error)

func (*Audiodev) UnmarshalJSON

func (s *Audiodev) UnmarshalJSON(data []byte) error

type AudiodevAlsaOptions

Options of the ALSA audio backend.

Since: 4.0

type AudiodevAlsaOptions struct {
    In        *AudiodevAlsaPerDirectionOptions `json:"in,omitempty"`        // options of the capture stream
    Out       *AudiodevAlsaPerDirectionOptions `json:"out,omitempty"`       // options of the playback stream
    Threshold *uint32                          `json:"threshold,omitempty"` // set the threshold (in microseconds) when playback starts
}

type AudiodevAlsaPerDirectionOptions

Options of the ALSA backend that are used for both playback and recording.

Since: 4.0

type AudiodevAlsaPerDirectionOptions struct {
    // Base type for this struct
    AudiodevPerDirectionOptions
    Dev          *string `json:"dev,omitempty"`           // the name of the ALSA device to use (default 'default')
    PeriodLength *uint32 `json:"period-length,omitempty"` // the period length in microseconds
    TryPoll      *bool   `json:"try-poll,omitempty"`      // attempt to use poll mode, falling back to non-polling access on failure (default true)
}

type AudiodevBase

Options of an audio backend.

Since: 4.0

type AudiodevBase struct {
    Id          string         `json:"id"`                     // identifier of the backend
    Driver      AudiodevDriver `json:"driver"`                 // the backend driver to use
    TimerPeriod *uint32        `json:"timer-period,omitempty"` // timer period (in microseconds, 0: use lowest possible)
}

type AudiodevCoreaudioOptions

Options of the coreaudio audio backend.

Since: 4.0

type AudiodevCoreaudioOptions struct {
    In  *AudiodevCoreaudioPerDirectionOptions `json:"in,omitempty"`  // options of the capture stream
    Out *AudiodevCoreaudioPerDirectionOptions `json:"out,omitempty"` // options of the playback stream
}

type AudiodevCoreaudioPerDirectionOptions

Options of the Core Audio backend that are used for both playback and recording.

Since: 4.0

type AudiodevCoreaudioPerDirectionOptions struct {
    // Base type for this struct
    AudiodevPerDirectionOptions
    BufferCount *uint32 `json:"buffer-count,omitempty"` // number of buffers
}

type AudiodevDriver

An enumeration of possible audio backend drivers.

Since: 4.0

type AudiodevDriver int32
const (
    AudiodevDriverNone AudiodevDriver = iota
    AudiodevDriverAlsa
    AudiodevDriverCoreaudio
    AudiodevDriverDbus
    AudiodevDriverDsound
    AudiodevDriverJack // JACK audio backend (since 5.1)
    AudiodevDriverOss
    AudiodevDriverPa
    AudiodevDriverSdl
    AudiodevDriverSpice
    AudiodevDriverWav
)

func (AudiodevDriver) MarshalJSON

func (s AudiodevDriver) MarshalJSON() ([]byte, error)

func (*AudiodevDriver) UnmarshalJSON

func (s *AudiodevDriver) UnmarshalJSON(data []byte) error

type AudiodevDsoundOptions

Options of the DirectSound audio backend.

Since: 4.0

type AudiodevDsoundOptions struct {
    In      *AudiodevPerDirectionOptions `json:"in,omitempty"`      // options of the capture stream
    Out     *AudiodevPerDirectionOptions `json:"out,omitempty"`     // options of the playback stream
    Latency *uint32                      `json:"latency,omitempty"` // add extra latency to playback in microseconds (default 10000)
}

type AudiodevGenericOptions

Generic driver-specific options.

Since: 4.0

type AudiodevGenericOptions struct {
    In  *AudiodevPerDirectionOptions `json:"in,omitempty"`  // options of the capture stream
    Out *AudiodevPerDirectionOptions `json:"out,omitempty"` // options of the playback stream
}

type AudiodevJackOptions

Options of the JACK audio backend.

Since: 5.1

type AudiodevJackOptions struct {
    In  *AudiodevJackPerDirectionOptions `json:"in,omitempty"`  // options of the capture stream
    Out *AudiodevJackPerDirectionOptions `json:"out,omitempty"` // options of the playback stream
}

type AudiodevJackPerDirectionOptions

Options of the JACK backend that are used for both playback and recording.

Since: 5.1

type AudiodevJackPerDirectionOptions struct {
    // Base type for this struct
    AudiodevPerDirectionOptions
    ServerName   *string `json:"server-name,omitempty"`   // select from among several possible concurrent server instances (default: environment variable $JACK_DEFAULT_SERVER if set, else "default")
    ClientName   *string `json:"client-name,omitempty"`   // the client name to use. The server will modify this name to create a unique variant, if needed unless @exact-name is true (default: the guest's name)
    ConnectPorts *string `json:"connect-ports,omitempty"` // if set, a regular expression of JACK client port name(s) to monitor for and automatically connect to
    StartServer  *bool   `json:"start-server,omitempty"`  // start a jack server process if one is not already present (default: false)
    ExactName    *bool   `json:"exact-name,omitempty"`    // use the exact name requested otherwise JACK automatically generates a unique one, if needed (default: false)
}

type AudiodevOssOptions

Options of the OSS audio backend.

Since: 4.0

type AudiodevOssOptions struct {
    In        *AudiodevOssPerDirectionOptions `json:"in,omitempty"`         // options of the capture stream
    Out       *AudiodevOssPerDirectionOptions `json:"out,omitempty"`        // options of the playback stream
    TryMmap   *bool                           `json:"try-mmap,omitempty"`   // try using memory-mapped access, falling back to non-memory-mapped access on failure (default true)
    Exclusive *bool                           `json:"exclusive,omitempty"`  // open device in exclusive mode (vmix won't work) (default false)
    DspPolicy *uint32                         `json:"dsp-policy,omitempty"` // set the timing policy of the device (between 0 and 10, where smaller number means smaller latency but higher CPU usage) or -1 to use fragment mode (option ignored on some platforms) (default 5)
}

type AudiodevOssPerDirectionOptions

Options of the OSS backend that are used for both playback and recording.

Since: 4.0

type AudiodevOssPerDirectionOptions struct {
    // Base type for this struct
    AudiodevPerDirectionOptions
    Dev         *string `json:"dev,omitempty"`          // file name of the OSS device (default '/dev/dsp')
    BufferCount *uint32 `json:"buffer-count,omitempty"` // number of buffers
    TryPoll     *bool   `json:"try-poll,omitempty"`     // attempt to use poll mode, falling back to non-polling access on failure (default true)
}

type AudiodevPaOptions

Options of the PulseAudio audio backend.

Since: 4.0

type AudiodevPaOptions struct {
    In     *AudiodevPaPerDirectionOptions `json:"in,omitempty"`     // options of the capture stream
    Out    *AudiodevPaPerDirectionOptions `json:"out,omitempty"`    // options of the playback stream
    Server *string                        `json:"server,omitempty"` // PulseAudio server address (default: let PulseAudio choose)
}

type AudiodevPaPerDirectionOptions

Options of the Pulseaudio backend that are used for both playback and recording.

Since: 4.0

type AudiodevPaPerDirectionOptions struct {
    // Base type for this struct
    AudiodevPerDirectionOptions
    Name       *string `json:"name,omitempty"`        // name of the sink/source to use
    StreamName *string `json:"stream-name,omitempty"` // name of the PulseAudio stream created by qemu. Can be used to identify the stream in PulseAudio when you create multiple PulseAudio devices or run multiple qemu instances (default: audiodev's id, since 4.2)
    Latency    *uint32 `json:"latency,omitempty"`     // latency you want PulseAudio to achieve in microseconds (default 15000)
}

type AudiodevPerDirectionOptions

General audio backend options that are used for both playback and recording.

Since: 4.0

type AudiodevPerDirectionOptions struct {
    MixingEngine  *bool        `json:"mixing-engine,omitempty"`  // use QEMU's mixing engine to mix all streams inside QEMU and convert audio formats when not supported by the backend. When set to off, fixed-settings must be also off (default on, since 4.2)
    FixedSettings *bool        `json:"fixed-settings,omitempty"` // use fixed settings for host input/output. When off, frequency, channels and format must not be specified (default true)
    Frequency     *uint32      `json:"frequency,omitempty"`      // frequency to use when using fixed settings (default 44100)
    Channels      *uint32      `json:"channels,omitempty"`       // number of channels when using fixed settings (default 2)
    Voices        *uint32      `json:"voices,omitempty"`         // number of voices to use (default 1)
    Format        *AudioFormat `json:"format,omitempty"`         // sample format to use when using fixed settings (default s16)
    BufferLength  *uint32      `json:"buffer-length,omitempty"`  // the buffer length in microseconds
}

type AudiodevSdlOptions

Options of the SDL audio backend.

Since: 6.0

type AudiodevSdlOptions struct {
    In  *AudiodevSdlPerDirectionOptions `json:"in,omitempty"`  // options of the recording stream
    Out *AudiodevSdlPerDirectionOptions `json:"out,omitempty"` // options of the playback stream
}

type AudiodevSdlPerDirectionOptions

Options of the SDL audio backend that are used for both playback and recording.

Since: 6.0

type AudiodevSdlPerDirectionOptions struct {
    // Base type for this struct
    AudiodevPerDirectionOptions
    BufferCount *uint32 `json:"buffer-count,omitempty"` // number of buffers (default 4)
}

type AudiodevWavOptions

Options of the wav audio backend.

Since: 4.0

type AudiodevWavOptions struct {
    In   *AudiodevPerDirectionOptions `json:"in,omitempty"`   // options of the capture stream
    Out  *AudiodevPerDirectionOptions `json:"out,omitempty"`  // options of the playback stream
    Path *string                      `json:"path,omitempty"` // name of the wav file to record (default 'qemu.wav')
}

type AuthZListFileProperties

Properties for authz-listfile objects.

Since: 4.0

type AuthZListFileProperties struct {
    Filename string `json:"filename"`          // File name to load the configuration from. The file must contain valid JSON for AuthZListProperties.
    Refresh  *bool  `json:"refresh,omitempty"` // If true, inotify is used to monitor the file, automatically reloading changes. If an error occurs during reloading, all authorizations will fail until the file is next successfully loaded. (default: true if the binary was built with CONFIG_INOTIFY1, false otherwise)
}

type AuthZListProperties

Properties for authz-list objects.

Since: 4.0

type AuthZListProperties struct {
    Policy *QAuthZListPolicy `json:"policy,omitempty"` // Default policy to apply when no rule matches (default: deny)
    Rules  []QAuthZListRule  `json:"rules,omitempty"`  // Authorization rules based on matching user
}

type AuthZPAMProperties

Properties for authz-pam objects.

Since: 4.0

type AuthZPAMProperties struct {
    Service string `json:"service"` // PAM service name to use for authorization
}

type AuthZSimpleProperties

Properties for authz-simple objects.

Since: 4.0

type AuthZSimpleProperties struct {
    Identity string `json:"identity"` // Identifies the allowed user. Its format depends on the network service that authorization object is associated with. For authorizing based on TLS x509 certificates, the identity must be the x509 distinguished name.
}

type BackupCommon

Note: @on-source-error and @on-target-error only affect background I/O. If an error occurs during a guest write request, the device's rerror/werror actions will be used.

Since: 4.2

type BackupCommon struct {
    JobId          *string          `json:"job-id,omitempty"`           // identifier for the newly-created block job. If omitted, the device name will be used. (Since 2.7)
    Device         string           `json:"device"`                     // the device name or node-name of a root node which should be copied.
    Sync           MirrorSyncMode   `json:"sync"`                       // what parts of the disk image should be copied to the destination (all the disk, only the sectors allocated in the topmost image, from a dirty bitmap, or only new I/O).
    Speed          *int64           `json:"speed,omitempty"`            // the maximum speed, in bytes per second. The default is 0, for unlimited.
    Bitmap         *string          `json:"bitmap,omitempty"`           // The name of a dirty bitmap to use. Must be present if sync is "bitmap" or "incremental". Can be present if sync is "full" or "top". Must not be present otherwise. (Since 2.4 (drive-backup), 3.1 (blockdev-backup))
    BitmapMode     *BitmapSyncMode  `json:"bitmap-mode,omitempty"`      // Specifies the type of data the bitmap should contain after the operation concludes. Must be present if a bitmap was provided, Must NOT be present otherwise. (Since 4.2)
    Compress       *bool            `json:"compress,omitempty"`         // true to compress data, if the target format supports it. (default: false) (since 2.8)
    OnSourceError  *BlockdevOnError `json:"on-source-error,omitempty"`  // the action to take on an error on the source, default 'report'. 'stop' and 'enospc' can only be used if the block device supports io-status (see BlockInfo).
    OnTargetError  *BlockdevOnError `json:"on-target-error,omitempty"`  // the action to take on an error on the target, default 'report' (no limitations, since this applies to a different block device than @device).
    AutoFinalize   *bool            `json:"auto-finalize,omitempty"`    // When false, this job will wait in a PENDING state after it has finished its work, waiting for @block-job-finalize before making any block graph changes. When true, this job will automatically perform its abort or commit actions. Defaults to true. (Since 2.12)
    AutoDismiss    *bool            `json:"auto-dismiss,omitempty"`     // When false, this job will wait in a CONCLUDED state after it has completely ceased all work, and awaits @block-job-dismiss. When true, this job will automatically disappear from the query list without user intervention. Defaults to true. (Since 2.12)
    FilterNodeName *string          `json:"filter-node-name,omitempty"` // the node name that should be assigned to the filter driver that the backup job inserts into the graph above node specified by @drive. If this option is not given, a node name is autogenerated. (Since: 4.2)
    XPerf          *BackupPerf      `json:"x-perf,omitempty"`           // Performance options. (Since 6.0)
}

type BackupPerf

Optional parameters for backup. These parameters don't affect functionality, but may significantly affect performance.

Since: 6.0

type BackupPerf struct {
    UseCopyRange *bool  `json:"use-copy-range,omitempty"` // Use copy offloading. Default false.
    MaxWorkers   *int64 `json:"max-workers,omitempty"`    // Maximum number of parallel requests for the sustained background copying process. Doesn't influence copy-before-write operations. Default 64.
    MaxChunk     *int64 `json:"max-chunk,omitempty"`      // Maximum request length for the sustained background copying process. Doesn't influence copy-before-write operations. 0 means unlimited. If max-chunk is non-zero then it should not be less than job cluster size which is calculated as maximum of target image cluster size and 64k. Default 0.
}

type BalloonChangeEvent

Emitted when the guest changes the actual BALLOON level. This value is equivalent to the @actual field return by the 'query-balloon' command

Note: this event is rate-limited.

Since: 1.2

Example: <- { "event": "BALLOON_CHANGE",

"data": { "actual": 944766976 },
"timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
type BalloonChangeEvent struct {
    Actual int64 `json:"actual"` // the logical size of the VM in bytes Formula used: logical_vm_size = vm_ram_size - balloon_size
}

type BalloonCommand

Request the balloon driver to change its balloon size.

Returns: - Nothing on success - If the balloon driver is enabled but not functional because the KVM

kernel module cannot support it, KvmMissingCap

- If no balloon device is present, DeviceNotActive

Notes: This command just issues a request to the guest. When it returns, the balloon size may not have changed. A guest can change the balloon size independent of this command.

Since: 0.14

Example: -> { "execute": "balloon", "arguments": { "value": 536870912 } } <- { "return": {} }

With a 2.5GiB guest this command inflated the ballon to 3GiB.

type BalloonCommand struct {
    Value int64 `json:"value"` // the target logical size of the VM in bytes. We can deduce the size of the balloon using this formula: logical_vm_size = vm_ram_size - balloon_size From it we have: balloon_size = vm_ram_size - @value
}

type BalloonInfo

Information about the guest balloon device.

Since: 0.14

type BalloonInfo struct {
    Actual int64 `json:"actual"` // the logical size of the VM in bytes Formula used: logical_vm_size = vm_ram_size - balloon_size
}

type BiosAtaTranslation

Policy that BIOS should use to interpret cylinder/head/sector addresses. Note that Bochs BIOS and SeaBIOS will not actually translate logical CHS to physical; instead, they will use logical block addressing.

Since: 2.0

type BiosAtaTranslation int32
const (
    BiosAtaTranslationAuto  BiosAtaTranslation = iota
    BiosAtaTranslationNone                     // The physical disk geometry is equal to the logical geometry.
    BiosAtaTranslationLba                      // Assume 63 sectors per track and one of 16, 32, 64, 128 or 255 heads (if fewer than 255 are enough to cover the whole disk with 1024 cylinders/head). The number of cylinders/head is then computed based on the number of sectors and heads.
    BiosAtaTranslationLarge                    // The number of cylinders per head is scaled down to 1024 by correspondingly scaling up the number of heads.
    BiosAtaTranslationRechs                    // Same as @large, but first convert a 16-head geometry to 15-head, by proportionally scaling up the number of cylinders/head.
)

func (BiosAtaTranslation) MarshalJSON

func (s BiosAtaTranslation) MarshalJSON() ([]byte, error)

func (*BiosAtaTranslation) UnmarshalJSON

func (s *BiosAtaTranslation) UnmarshalJSON(data []byte) error

type BitmapMigrationBitmapAlias

Since: 5.2

type BitmapMigrationBitmapAlias struct {
    Name      string                               `json:"name"`                // The name of the bitmap.
    Alias     string                               `json:"alias"`               // An alias name for migration (for example the bitmap name on the opposite site).
    Transform *BitmapMigrationBitmapAliasTransform `json:"transform,omitempty"` // Allows the modification of the migrated bitmap. (since 6.0)
}

type BitmapMigrationBitmapAliasTransform

Since: 6.0

type BitmapMigrationBitmapAliasTransform struct {
    Persistent *bool `json:"persistent,omitempty"` // If present, the bitmap will be made persistent or transient depending on this parameter.
}

type BitmapMigrationNodeAlias

Maps a block node name and the bitmaps it has to aliases for dirty bitmap migration.

Since: 5.2

type BitmapMigrationNodeAlias struct {
    NodeName string                       `json:"node-name"` // A block node name.
    Alias    string                       `json:"alias"`     // An alias block node name for migration (for example the node name on the opposite site).
    Bitmaps  []BitmapMigrationBitmapAlias `json:"bitmaps"`   // Mappings for the bitmaps on this node.
}

type BitmapSyncMode

An enumeration of possible behaviors for the synchronization of a bitmap when used for data copy operations.

Since: 4.2

type BitmapSyncMode int32
const (
    BitmapSyncModeOnSuccess BitmapSyncMode = iota
    BitmapSyncModeNever                    // The bitmap is never synchronized with the operation, and is treated solely as a read-only manifest of blocks to copy.
    BitmapSyncModeAlways                   // The bitmap is always synchronized with the operation, regardless of whether or not the operation was successful.
)

func (BitmapSyncMode) MarshalJSON

func (s BitmapSyncMode) MarshalJSON() ([]byte, error)

func (*BitmapSyncMode) UnmarshalJSON

func (s *BitmapSyncMode) UnmarshalJSON(data []byte) error

type BlkdebugEvent

Trigger events supported by blkdebug.

Since: 2.9

type BlkdebugEvent int32
const (
    BlkdebugEventL1_Update BlkdebugEvent = iota
    BlkdebugEventL1_Grow_Alloc_Table
    BlkdebugEventL1_Grow_Write_Table
    BlkdebugEventL1_Grow_Activate_Table
    BlkdebugEventL2_Load
    BlkdebugEventL2_Update
    BlkdebugEventL2_Update_Compressed
    BlkdebugEventL2_Alloc_Cow_Read
    BlkdebugEventL2_Alloc_Write
    BlkdebugEventRead_Aio
    BlkdebugEventRead_Backing_Aio
    BlkdebugEventRead_Compressed
    BlkdebugEventWrite_Aio
    BlkdebugEventWrite_Compressed
    BlkdebugEventVmstate_Load
    BlkdebugEventVmstate_Save
    BlkdebugEventCow_Read
    BlkdebugEventCow_Write
    BlkdebugEventReftable_Load
    BlkdebugEventReftable_Grow
    BlkdebugEventReftable_Update
    BlkdebugEventRefblock_Load
    BlkdebugEventRefblock_Update
    BlkdebugEventRefblock_Update_Part
    BlkdebugEventRefblock_Alloc
    BlkdebugEventRefblock_Alloc_Hookup
    BlkdebugEventRefblock_Alloc_Write
    BlkdebugEventRefblock_Alloc_Write_Blocks
    BlkdebugEventRefblock_Alloc_Write_Table
    BlkdebugEventRefblock_Alloc_Switch_Table
    BlkdebugEventCluster_Alloc
    BlkdebugEventCluster_Alloc_Bytes
    BlkdebugEventCluster_Free
    BlkdebugEventFlush_To_Os
    BlkdebugEventFlush_To_Disk
    BlkdebugEventPwritev_Rmw_Head
    BlkdebugEventPwritev_Rmw_After_Head
    BlkdebugEventPwritev_Rmw_Tail
    BlkdebugEventPwritev_Rmw_After_Tail
    BlkdebugEventPwritev
    BlkdebugEventPwritev_Zero
    BlkdebugEventPwritev_Done
    BlkdebugEventEmpty_Image_Prepare
    BlkdebugEventL1_Shrink_Write_Table      // write zeros to the l1 table to shrink image. (since 2.11)
    BlkdebugEventL1_Shrink_Free_L2_Clusters // discard the l2 tables. (since 2.11)
    BlkdebugEventCor_Write                  // a write due to copy-on-read (since 2.11)
    BlkdebugEventCluster_Alloc_Space        // an allocation of file space for a cluster (since 4.1)
    BlkdebugEventNone                       // triggers once at creation of the blkdebug node (since 4.1)
)

func (BlkdebugEvent) MarshalJSON

func (s BlkdebugEvent) MarshalJSON() ([]byte, error)

func (*BlkdebugEvent) UnmarshalJSON

func (s *BlkdebugEvent) UnmarshalJSON(data []byte) error

type BlkdebugIOType

Kinds of I/O that blkdebug can inject errors in.

Since: 4.1

type BlkdebugIOType int32
const (
    BlkdebugIOTypeRead        BlkdebugIOType = iota
    BlkdebugIOTypeWrite                      // .bdrv_co_pwritev()
    BlkdebugIOTypeWriteZeroes                // .bdrv_co_pwrite_zeroes()
    BlkdebugIOTypeDiscard                    // .bdrv_co_pdiscard()
    BlkdebugIOTypeFlush                      // .bdrv_co_flush_to_disk()
    BlkdebugIOTypeBlockStatus                // .bdrv_co_block_status()
)

func (BlkdebugIOType) MarshalJSON

func (s BlkdebugIOType) MarshalJSON() ([]byte, error)

func (*BlkdebugIOType) UnmarshalJSON

func (s *BlkdebugIOType) UnmarshalJSON(data []byte) error

type BlkdebugInjectErrorOptions

Describes a single error injection for blkdebug.

Since: 2.9

type BlkdebugInjectErrorOptions struct {
    Event       BlkdebugEvent   `json:"event"`                 // trigger event
    State       *int64          `json:"state,omitempty"`       // the state identifier blkdebug needs to be in to actually trigger the event; defaults to "any"
    Iotype      *BlkdebugIOType `json:"iotype,omitempty"`      // the type of I/O operations on which this error should be injected; defaults to "all read, write, write-zeroes, discard, and flush operations" (since: 4.1)
    Errno       *int64          `json:"errno,omitempty"`       // error identifier (errno) to be returned; defaults to EIO
    Sector      *int64          `json:"sector,omitempty"`      // specifies the sector index which has to be affected in order to actually trigger the event; defaults to "any sector"
    Once        *bool           `json:"once,omitempty"`        // disables further events after this one has been triggered; defaults to false
    Immediately *bool           `json:"immediately,omitempty"` // fail immediately; defaults to false
}

type BlkdebugSetStateOptions

Describes a single state-change event for blkdebug.

Since: 2.9

type BlkdebugSetStateOptions struct {
    Event    BlkdebugEvent `json:"event"`           // trigger event
    State    *int64        `json:"state,omitempty"` // the current state identifier blkdebug needs to be in; defaults to "any"
    NewState int64         `json:"new_state"`       // the state identifier blkdebug is supposed to assume if this event is triggered
}

type BlockCommitCommand

Live commit of data from overlay image nodes into backing nodes - i.e., writes data between 'top' and 'base' into 'base'.

If top == base, that is an error. If top has no overlays on top of it, or if it is in use by a writer, the job will not be completed by itself. The user needs to complete the job with the block-job-complete command after getting the ready event. (Since 2.0)

If the base image is smaller than top, then the base image will be resized to be the same size as top. If top is smaller than the base image, the base will not be truncated. If you want the base image size to match the size of the smaller top, you can safely truncate it yourself once the commit operation successfully completes.

Returns: - Nothing on success - If @device does not exist, DeviceNotFound - Any other error returns a GenericError.

Since: 1.3

Example: -> { "execute": "block-commit",

"arguments": { "device": "virtio0",
               "top": "/tmp/snap1.qcow2" } }

<- { "return": {} }

type BlockCommitCommand struct {
    JobId          *string          `json:"job-id,omitempty"`           // identifier for the newly-created block job. If omitted, the device name will be used. (Since 2.7)
    Device         string           `json:"device"`                     // the device name or node-name of a root node
    BaseNode       *string          `json:"base-node,omitempty"`        // The node name of the backing image to write data into. If not specified, this is the deepest backing image. (since: 3.1)
    Base           *string          `json:"base,omitempty"`             // Same as @base-node, except that it is a file name rather than a node name. This must be the exact filename string that was used to open the node; other strings, even if addressing the same file, are not accepted
    TopNode        *string          `json:"top-node,omitempty"`         // The node name of the backing image within the image chain which contains the topmost data to be committed down. If not specified, this is the active layer. (since: 3.1)
    Top            *string          `json:"top,omitempty"`              // Same as @top-node, except that it is a file name rather than a node name. This must be the exact filename string that was used to open the node; other strings, even if addressing the same file, are not accepted
    BackingFile    *string          `json:"backing-file,omitempty"`     // The backing file string to write into the overlay image of 'top'. If 'top' does not have an overlay image, or if 'top' is in use by a writer, specifying a backing file string is an error. This filename is not validated. If a pathname string is such that it cannot be resolved by QEMU, that means that subsequent QMP or HMP commands must use node-names for the image in question, as filename lookup methods will fail. If not specified, QEMU will automatically determine the backing file string to use, or error out if there is no obvious choice. Care should be taken when specifying the string, to specify a valid filename or protocol. (Since 2.1)
    Speed          *int64           `json:"speed,omitempty"`            // the maximum speed, in bytes per second
    OnError        *BlockdevOnError `json:"on-error,omitempty"`         // the action to take on an error. 'ignore' means that the request should be retried. (default: report; Since: 5.0)
    FilterNodeName *string          `json:"filter-node-name,omitempty"` // the node name that should be assigned to the filter driver that the commit job inserts into the graph above @top. If this option is not given, a node name is autogenerated. (Since: 2.9)
    AutoFinalize   *bool            `json:"auto-finalize,omitempty"`    // When false, this job will wait in a PENDING state after it has finished its work, waiting for @block-job-finalize before making any block graph changes. When true, this job will automatically perform its abort or commit actions. Defaults to true. (Since 3.1)
    AutoDismiss    *bool            `json:"auto-dismiss,omitempty"`     // When false, this job will wait in a CONCLUDED state after it has completely ceased all work, and awaits @block-job-dismiss. When true, this job will automatically disappear from the query list without user intervention. Defaults to true. (Since 3.1)
}

type BlockDeviceInfo

Information about the backing device for a block device.

Since: 0.14

type BlockDeviceInfo struct {
    File             string                      `json:"file"`                         // the filename of the backing device
    NodeName         *string                     `json:"node-name,omitempty"`          // the name of the block driver node (Since 2.0)
    Ro               bool                        `json:"ro"`                           // true if the backing device was open read-only
    Drv              string                      `json:"drv"`                          // the name of the block format used to open the backing device. As of 0.14 this can be: 'blkdebug', 'bochs', 'cloop', 'cow', 'dmg', 'file', 'file', 'ftp', 'ftps', 'host_cdrom', 'host_device', 'http', 'https', 'luks', 'nbd', 'parallels', 'qcow', 'qcow2', 'raw', 'vdi', 'vmdk', 'vpc', 'vvfat' 2.2: 'archipelago' added, 'cow' dropped 2.3: 'host_floppy' deprecated 2.5: 'host_floppy' dropped 2.6: 'luks' added 2.8: 'replication' added, 'tftp' dropped 2.9: 'archipelago' dropped
    BackingFile      *string                     `json:"backing_file,omitempty"`       // the name of the backing file (for copy-on-write)
    BackingFileDepth int64                       `json:"backing_file_depth"`           // number of files in the backing file chain (since: 1.2)
    Encrypted        bool                        `json:"encrypted"`                    // true if the backing device is encrypted
    DetectZeroes     BlockdevDetectZeroesOptions `json:"detect_zeroes"`                // detect and optimize zero writes (Since 2.1)
    Bps              int64                       `json:"bps"`                          // total throughput limit in bytes per second is specified
    BpsRd            int64                       `json:"bps_rd"`                       // read throughput limit in bytes per second is specified
    BpsWr            int64                       `json:"bps_wr"`                       // write throughput limit in bytes per second is specified
    Iops             int64                       `json:"iops"`                         // total I/O operations per second is specified
    IopsRd           int64                       `json:"iops_rd"`                      // read I/O operations per second is specified
    IopsWr           int64                       `json:"iops_wr"`                      // write I/O operations per second is specified
    Image            ImageInfo                   `json:"image"`                        // the info of image used (since: 1.6)
    BpsMax           *int64                      `json:"bps_max,omitempty"`            // total throughput limit during bursts, in bytes (Since 1.7)
    BpsRdMax         *int64                      `json:"bps_rd_max,omitempty"`         // read throughput limit during bursts, in bytes (Since 1.7)
    BpsWrMax         *int64                      `json:"bps_wr_max,omitempty"`         // write throughput limit during bursts, in bytes (Since 1.7)
    IopsMax          *int64                      `json:"iops_max,omitempty"`           // total I/O operations per second during bursts, in bytes (Since 1.7)
    IopsRdMax        *int64                      `json:"iops_rd_max,omitempty"`        // read I/O operations per second during bursts, in bytes (Since 1.7)
    IopsWrMax        *int64                      `json:"iops_wr_max,omitempty"`        // write I/O operations per second during bursts, in bytes (Since 1.7)
    BpsMaxLength     *int64                      `json:"bps_max_length,omitempty"`     // maximum length of the @bps_max burst period, in seconds. (Since 2.6)
    BpsRdMaxLength   *int64                      `json:"bps_rd_max_length,omitempty"`  // maximum length of the @bps_rd_max burst period, in seconds. (Since 2.6)
    BpsWrMaxLength   *int64                      `json:"bps_wr_max_length,omitempty"`  // maximum length of the @bps_wr_max burst period, in seconds. (Since 2.6)
    IopsMaxLength    *int64                      `json:"iops_max_length,omitempty"`    // maximum length of the @iops burst period, in seconds. (Since 2.6)
    IopsRdMaxLength  *int64                      `json:"iops_rd_max_length,omitempty"` // maximum length of the @iops_rd_max burst period, in seconds. (Since 2.6)
    IopsWrMaxLength  *int64                      `json:"iops_wr_max_length,omitempty"` // maximum length of the @iops_wr_max burst period, in seconds. (Since 2.6)
    IopsSize         *int64                      `json:"iops_size,omitempty"`          // an I/O size in bytes (Since 1.7)
    Group            *string                     `json:"group,omitempty"`              // throttle group name (Since 2.4)
    Cache            BlockdevCacheInfo           `json:"cache"`                        // the cache mode used for the block device (since: 2.3)
    WriteThreshold   int64                       `json:"write_threshold"`              // configured write threshold for the device. 0 if disabled. (Since 2.3)
    DirtyBitmaps     []BlockDirtyInfo            `json:"dirty-bitmaps,omitempty"`      // dirty bitmaps information (only present if node has one or more dirty bitmaps) (Since 4.2)
}

type BlockDeviceIoStatus

An enumeration of block device I/O status.

Since: 1.0

type BlockDeviceIoStatus int32
const (
    BlockDeviceIoStatusOk      BlockDeviceIoStatus = iota
    BlockDeviceIoStatusFailed                      // The last I/O operation has failed
    BlockDeviceIoStatusNospace                     // The last I/O operation has failed due to a no-space condition
)

func (BlockDeviceIoStatus) MarshalJSON

func (s BlockDeviceIoStatus) MarshalJSON() ([]byte, error)

func (*BlockDeviceIoStatus) UnmarshalJSON

func (s *BlockDeviceIoStatus) UnmarshalJSON(data []byte) error

type BlockDeviceStats

Statistics of a virtual block device or a block backing device.

Since: 0.14

type BlockDeviceStats struct {
    RdBytes                int64                      `json:"rd_bytes"`                          // The number of bytes read by the device.
    WrBytes                int64                      `json:"wr_bytes"`                          // The number of bytes written by the device.
    UnmapBytes             int64                      `json:"unmap_bytes"`                       // The number of bytes unmapped by the device (Since 4.2)
    RdOperations           int64                      `json:"rd_operations"`                     // The number of read operations performed by the device.
    WrOperations           int64                      `json:"wr_operations"`                     // The number of write operations performed by the device.
    FlushOperations        int64                      `json:"flush_operations"`                  // The number of cache flush operations performed by the device (since 0.15)
    UnmapOperations        int64                      `json:"unmap_operations"`                  // The number of unmap operations performed by the device (Since 4.2)
    RdTotalTimeNs          int64                      `json:"rd_total_time_ns"`                  // Total time spent on reads in nanoseconds (since 0.15).
    WrTotalTimeNs          int64                      `json:"wr_total_time_ns"`                  // Total time spent on writes in nanoseconds (since 0.15).
    FlushTotalTimeNs       int64                      `json:"flush_total_time_ns"`               // Total time spent on cache flushes in nanoseconds (since 0.15).
    UnmapTotalTimeNs       int64                      `json:"unmap_total_time_ns"`               // Total time spent on unmap operations in nanoseconds (Since 4.2)
    WrHighestOffset        int64                      `json:"wr_highest_offset"`                 // The offset after the greatest byte written to the device. The intended use of this information is for growable sparse files (like qcow2) that are used on top of a physical device.
    RdMerged               int64                      `json:"rd_merged"`                         // Number of read requests that have been merged into another request (Since 2.3).
    WrMerged               int64                      `json:"wr_merged"`                         // Number of write requests that have been merged into another request (Since 2.3).
    UnmapMerged            int64                      `json:"unmap_merged"`                      // Number of unmap requests that have been merged into another request (Since 4.2)
    IdleTimeNs             *int64                     `json:"idle_time_ns,omitempty"`            // Time since the last I/O operation, in nanoseconds. If the field is absent it means that there haven't been any operations yet (Since 2.5).
    FailedRdOperations     int64                      `json:"failed_rd_operations"`              // The number of failed read operations performed by the device (Since 2.5)
    FailedWrOperations     int64                      `json:"failed_wr_operations"`              // The number of failed write operations performed by the device (Since 2.5)
    FailedFlushOperations  int64                      `json:"failed_flush_operations"`           // The number of failed flush operations performed by the device (Since 2.5)
    FailedUnmapOperations  int64                      `json:"failed_unmap_operations"`           // The number of failed unmap operations performed by the device (Since 4.2)
    InvalidRdOperations    int64                      `json:"invalid_rd_operations"`             // The number of invalid read operations performed by the device (Since 2.5)
    InvalidWrOperations    int64                      `json:"invalid_wr_operations"`             // The number of invalid write operations performed by the device (Since 2.5)
    InvalidFlushOperations int64                      `json:"invalid_flush_operations"`          // The number of invalid flush operations performed by the device (Since 2.5)
    InvalidUnmapOperations int64                      `json:"invalid_unmap_operations"`          // The number of invalid unmap operations performed by the device (Since 4.2)
    AccountInvalid         bool                       `json:"account_invalid"`                   // Whether invalid operations are included in the last access statistics (Since 2.5)
    AccountFailed          bool                       `json:"account_failed"`                    // Whether failed operations are included in the latency and last access statistics (Since 2.5)
    TimedStats             []BlockDeviceTimedStats    `json:"timed_stats"`                       // Statistics specific to the set of previously defined intervals of time (Since 2.5)
    RdLatencyHistogram     *BlockLatencyHistogramInfo `json:"rd_latency_histogram,omitempty"`    // @BlockLatencyHistogramInfo. (Since 4.0)
    WrLatencyHistogram     *BlockLatencyHistogramInfo `json:"wr_latency_histogram,omitempty"`    // @BlockLatencyHistogramInfo. (Since 4.0)
    FlushLatencyHistogram  *BlockLatencyHistogramInfo `json:"flush_latency_histogram,omitempty"` // @BlockLatencyHistogramInfo. (Since 4.0)
}

type BlockDeviceTimedStats

Statistics of a block device during a given interval of time.

Since: 2.5

type BlockDeviceTimedStats struct {
    IntervalLength    int64   `json:"interval_length"`      // Interval used for calculating the statistics, in seconds.
    MinRdLatencyNs    int64   `json:"min_rd_latency_ns"`    // Minimum latency of read operations in the defined interval, in nanoseconds.
    MaxRdLatencyNs    int64   `json:"max_rd_latency_ns"`    // Maximum latency of read operations in the defined interval, in nanoseconds.
    AvgRdLatencyNs    int64   `json:"avg_rd_latency_ns"`    // Average latency of read operations in the defined interval, in nanoseconds.
    MinWrLatencyNs    int64   `json:"min_wr_latency_ns"`    // Minimum latency of write operations in the defined interval, in nanoseconds.
    MaxWrLatencyNs    int64   `json:"max_wr_latency_ns"`    // Maximum latency of write operations in the defined interval, in nanoseconds.
    AvgWrLatencyNs    int64   `json:"avg_wr_latency_ns"`    // Average latency of write operations in the defined interval, in nanoseconds.
    MinFlushLatencyNs int64   `json:"min_flush_latency_ns"` // Minimum latency of flush operations in the defined interval, in nanoseconds.
    MaxFlushLatencyNs int64   `json:"max_flush_latency_ns"` // Maximum latency of flush operations in the defined interval, in nanoseconds.
    AvgFlushLatencyNs int64   `json:"avg_flush_latency_ns"` // Average latency of flush operations in the defined interval, in nanoseconds.
    AvgRdQueueDepth   float64 `json:"avg_rd_queue_depth"`   // Average number of pending read operations in the defined interval.
    AvgWrQueueDepth   float64 `json:"avg_wr_queue_depth"`   // Average number of pending write operations in the defined interval.
}

type BlockDirtyBitmap

Since: 2.4

type BlockDirtyBitmap struct {
    Node string `json:"node"` // name of device/node which the bitmap is tracking
    Name string `json:"name"` // name of the dirty bitmap
}

type BlockDirtyBitmapAdd

Since: 2.4

type BlockDirtyBitmapAdd struct {
    Node        string  `json:"node"`                  // name of device/node which the bitmap is tracking
    Name        string  `json:"name"`                  // name of the dirty bitmap (must be less than 1024 bytes)
    Granularity *uint32 `json:"granularity,omitempty"` // the bitmap granularity, default is 64k for block-dirty-bitmap-add
    Persistent  *bool   `json:"persistent,omitempty"`  // the bitmap is persistent, i.e. it will be saved to the corresponding block device image file on its close. For now only Qcow2 disks support persistent bitmaps. Default is false for block-dirty-bitmap-add. (Since: 2.10)
    Disabled    *bool   `json:"disabled,omitempty"`    // the bitmap is created in the disabled state, which means that it will not track drive changes. The bitmap may be enabled with block-dirty-bitmap-enable. Default is false. (Since: 4.0)
}

type BlockDirtyBitmapAddCommand

Create a dirty bitmap with a name on the node, and start tracking the writes.

Returns: - nothing on success - If @node is not a valid block device or node, DeviceNotFound - If @name is already taken, GenericError with an explanation

Since: 2.4

Example: -> { "execute": "block-dirty-bitmap-add",

"arguments": { "node": "drive0", "name": "bitmap0" } }

<- { "return": {} }

type BlockDirtyBitmapAddCommand struct {
    BlockDirtyBitmapAdd
}

type BlockDirtyBitmapAddWrapper

Since: 2.5

type BlockDirtyBitmapAddWrapper struct {
    Data BlockDirtyBitmapAdd `json:"data"`
}

type BlockDirtyBitmapClearCommand

Clear (reset) a dirty bitmap on the device, so that an incremental backup from this point in time forward will only backup clusters modified after this clear operation.

Returns: - nothing on success - If @node is not a valid block device, DeviceNotFound - If @name is not found, GenericError with an explanation

Since: 2.4

Example: -> { "execute": "block-dirty-bitmap-clear",

"arguments": { "node": "drive0", "name": "bitmap0" } }

<- { "return": {} }

type BlockDirtyBitmapClearCommand struct {
    BlockDirtyBitmap
}

type BlockDirtyBitmapDisableCommand

Disables a dirty bitmap so that it will stop tracking disk changes.

Returns: - nothing on success - If @node is not a valid block device, DeviceNotFound - If @name is not found, GenericError with an explanation

Since: 4.0

Example: -> { "execute": "block-dirty-bitmap-disable",

"arguments": { "node": "drive0", "name": "bitmap0" } }

<- { "return": {} }

type BlockDirtyBitmapDisableCommand struct {
    BlockDirtyBitmap
}

type BlockDirtyBitmapEnableCommand

Enables a dirty bitmap so that it will begin tracking disk changes.

Returns: - nothing on success - If @node is not a valid block device, DeviceNotFound - If @name is not found, GenericError with an explanation

Since: 4.0

Example: -> { "execute": "block-dirty-bitmap-enable",

"arguments": { "node": "drive0", "name": "bitmap0" } }

<- { "return": {} }

type BlockDirtyBitmapEnableCommand struct {
    BlockDirtyBitmap
}

type BlockDirtyBitmapMerge

Since: 4.0

type BlockDirtyBitmapMerge struct {
    Node    string                        `json:"node"`    // name of device/node which the @target bitmap is tracking
    Target  string                        `json:"target"`  // name of the destination dirty bitmap
    Bitmaps []BlockDirtyBitmapMergeSource `json:"bitmaps"` // name(s) of the source dirty bitmap(s) at @node and/or fully specified BlockDirtyBitmap elements. The latter are supported since 4.1.
}

type BlockDirtyBitmapMergeCommand

Merge dirty bitmaps listed in @bitmaps to the @target dirty bitmap. Dirty bitmaps in @bitmaps will be unchanged, except if it also appears as the @target bitmap. Any bits already set in @target will still be set after the merge, i.e., this operation does not clear the target. On error, @target is unchanged.

The resulting bitmap will count as dirty any clusters that were dirty in any of the source bitmaps. This can be used to achieve backup checkpoints, or in simpler usages, to copy bitmaps.

Returns: - nothing on success - If @node is not a valid block device, DeviceNotFound - If any bitmap in @bitmaps or @target is not found, GenericError - If any of the bitmaps have different sizes or granularities,

GenericError

Since: 4.0

Example: -> { "execute": "block-dirty-bitmap-merge",

"arguments": { "node": "drive0", "target": "bitmap0",
               "bitmaps": ["bitmap1"] } }

<- { "return": {} }

type BlockDirtyBitmapMergeCommand struct {
    BlockDirtyBitmapMerge
}

type BlockDirtyBitmapMergeSource

Since: 4.1

type BlockDirtyBitmapMergeSource struct {
    // Options are:
    // * local (string): name of the bitmap, attached to the same node as target bitmap.
    // * external (BlockDirtyBitmap): bitmap with specified node
    Value Any
}

func (BlockDirtyBitmapMergeSource) MarshalJSON

func (s BlockDirtyBitmapMergeSource) MarshalJSON() ([]byte, error)

func (*BlockDirtyBitmapMergeSource) UnmarshalJSON

func (s *BlockDirtyBitmapMergeSource) UnmarshalJSON(data []byte) error

type BlockDirtyBitmapMergeWrapper

Since: 4.0

type BlockDirtyBitmapMergeWrapper struct {
    Data BlockDirtyBitmapMerge `json:"data"`
}

type BlockDirtyBitmapRemoveCommand

Stop write tracking and remove the dirty bitmap that was created with block-dirty-bitmap-add. If the bitmap is persistent, remove it from its storage too.

Returns: - nothing on success - If @node is not a valid block device or node, DeviceNotFound - If @name is not found, GenericError with an explanation - if @name is frozen by an operation, GenericError

Since: 2.4

Example: -> { "execute": "block-dirty-bitmap-remove",

"arguments": { "node": "drive0", "name": "bitmap0" } }

<- { "return": {} }

type BlockDirtyBitmapRemoveCommand struct {
    BlockDirtyBitmap
}

type BlockDirtyBitmapSha256

SHA256 hash of dirty bitmap data

Since: 2.10

type BlockDirtyBitmapSha256 struct {
    Sha256 string `json:"sha256"` // ASCII representation of SHA256 bitmap hash
}

type BlockDirtyBitmapWrapper

Since: 2.5

type BlockDirtyBitmapWrapper struct {
    Data BlockDirtyBitmap `json:"data"`
}

type BlockDirtyInfo

Block dirty bitmap information.

Since: 1.3

type BlockDirtyInfo struct {
    Name         *string `json:"name,omitempty"`         // the name of the dirty bitmap (Since 2.4)
    Count        int64   `json:"count"`                  // number of dirty bytes according to the dirty bitmap
    Granularity  uint32  `json:"granularity"`            // granularity of the dirty bitmap in bytes (since 1.4)
    Recording    bool    `json:"recording"`              // true if the bitmap is recording new writes from the guest. Replaces ``active`` and ``disabled`` statuses. (since 4.0)
    Busy         bool    `json:"busy"`                   // true if the bitmap is in-use by some operation (NBD or jobs) and cannot be modified via QMP or used by another operation. Replaces ``locked`` and ``frozen`` statuses. (since 4.0)
    Persistent   bool    `json:"persistent"`             // true if the bitmap was stored on disk, is scheduled to be stored on disk, or both. (since 4.0)
    Inconsistent *bool   `json:"inconsistent,omitempty"` // true if this is a persistent bitmap that was improperly stored. Implies @persistent to be true; @recording and @busy to be false. This bitmap cannot be used. To remove it, use @block-dirty-bitmap-remove. (Since 4.0)
}

type BlockErrorAction

An enumeration of action that has been taken when a DISK I/O occurs

Since: 2.1

type BlockErrorAction int32
const (
    BlockErrorActionIgnore BlockErrorAction = iota
    BlockErrorActionReport                  // error has been reported to the device
    BlockErrorActionStop                    // error caused VM to be stopped
)

func (BlockErrorAction) MarshalJSON

func (s BlockErrorAction) MarshalJSON() ([]byte, error)

func (*BlockErrorAction) UnmarshalJSON

func (s *BlockErrorAction) UnmarshalJSON(data []byte) error

type BlockExportAddCommand

Creates a new block export.

Since: 5.2

type BlockExportAddCommand struct {
    BlockExportOptions
}

type BlockExportDelCommand

Request to remove a block export. This drops the user's reference to the export, but the export may still stay around after this command returns until the shutdown of the export has completed.

Returns: Error if the export is not found or @mode is 'safe' and the export is still in use (e.g. by existing client connections)

Since: 5.2

type BlockExportDelCommand struct {
    Id   string                 `json:"id"`             // Block export id.
    Mode *BlockExportRemoveMode `json:"mode,omitempty"` // Mode of command operation. See @BlockExportRemoveMode description. Default is 'safe'.
}

type BlockExportDeletedEvent

Emitted when a block export is removed and its id can be reused.

Since: 5.2

type BlockExportDeletedEvent struct {
    Id string `json:"id"` // Block export id.
}

type BlockExportInfo

Information about a single block export.

Since: 5.2

type BlockExportInfo struct {
    Id           string          `json:"id"`            // The unique identifier for the block export
    Type         BlockExportType `json:"type"`          // The block export type
    NodeName     string          `json:"node-name"`     // The node name of the block node that is exported
    ShuttingDown bool            `json:"shutting-down"` // True if the export is shutting down (e.g. after a block-export-del command, but before the shutdown has completed)
}

type BlockExportOptions

Describes a block export, i.e. how single node should be exported on an external interface.

Since: 4.2

type BlockExportOptions struct {
    // Base type for this struct
    BlockExportOptionsBase
    // Value based on @type, possible types:
    // * BlockExportOptionsNbd
    // * BlockExportOptionsVhostUserBlk
    // * BlockExportOptionsFuse
    Value Any
}

func (BlockExportOptions) MarshalJSON

func (s BlockExportOptions) MarshalJSON() ([]byte, error)

func (*BlockExportOptions) UnmarshalJSON

func (s *BlockExportOptions) UnmarshalJSON(data []byte) error

type BlockExportOptionsBase

Describes a block export, i.e. how single node should be exported on an external interface.

Since: 4.2

type BlockExportOptionsBase struct {
    Type          BlockExportType `json:"type"`
    Id            string          `json:"id"`                       // A unique identifier for the block export (across all export types)
    FixedIothread *bool           `json:"fixed-iothread,omitempty"` // True prevents the block node from being moved to another thread while the export is active. If true and @iothread is given, export creation fails if the block node cannot be moved to the iothread. The default is false. (since: 5.2)
    Iothread      *string         `json:"iothread,omitempty"`       // The name of the iothread object where the export will run. The default is to use the thread currently associated with the block node. (since: 5.2)
    NodeName      string          `json:"node-name"`                // The node name of the block node to be exported (since: 5.2)
    Writable      *bool           `json:"writable,omitempty"`       // True if clients should be able to write to the export (default false)
    Writethrough  *bool           `json:"writethrough,omitempty"`   // If true, caches are flushed after every write request to the export before completion is signalled. (since: 5.2; default: false)
}

type BlockExportOptionsFuse

Options for exporting a block graph node on some (file) mountpoint as a raw image.

Since: 6.0

type BlockExportOptionsFuse struct {
    Mountpoint string                `json:"mountpoint"`            // Path on which to export the block device via FUSE. This must point to an existing regular file.
    Growable   *bool                 `json:"growable,omitempty"`    // Whether writes beyond the EOF should grow the block node accordingly. (default: false)
    AllowOther *FuseExportAllowOther `json:"allow-other,omitempty"` // If this is off, only qemu's user is allowed access to this export. That cannot be changed even with chmod or chown. Enabling this option will allow other users access to the export with the FUSE mount option "allow_other". Note that using allow_other as a non-root user requires user_allow_other to be enabled in the global fuse.conf configuration file. In auto mode (the default), the FUSE export driver will first attempt to mount the export with allow_other, and if that fails, try again without. (since 6.1; default: auto)
}

type BlockExportOptionsNbd

An NBD block export (distinct options used in the NBD branch of block-export-add).

Since: 5.2

type BlockExportOptionsNbd struct {
    // Base type for this struct
    BlockExportOptionsNbdBase
    Bitmaps         []string `json:"bitmaps,omitempty"`          // Also export each of the named dirty bitmaps reachable from @device, so the NBD client can use NBD_OPT_SET_META_CONTEXT with the metadata context name "qemu:dirty-bitmap:BITMAP" to inspect each bitmap.
    AllocationDepth *bool    `json:"allocation-depth,omitempty"` // Also export the allocation depth map for @device, so the NBD client can use NBD_OPT_SET_META_CONTEXT with the metadata context name "qemu:allocation-depth" to inspect allocation details. (since 5.2)
}

type BlockExportOptionsNbdBase

An NBD block export (common options shared between nbd-server-add and the NBD branch of block-export-add).

Since: 5.0

type BlockExportOptionsNbdBase struct {
    Name        *string `json:"name,omitempty"`        // Export name. If unspecified, the @device parameter is used as the export name. (Since 2.12)
    Description *string `json:"description,omitempty"` // Free-form description of the export, up to 4096 bytes. (Since 5.0)
}

type BlockExportOptionsVhostUserBlk

A vhost-user-blk block export.

Since: 5.2

type BlockExportOptionsVhostUserBlk struct {
    Addr             SocketAddress `json:"addr"`                         // The vhost-user socket on which to listen. Both 'unix' and 'fd' SocketAddress types are supported. Passed fds must be UNIX domain sockets.
    LogicalBlockSize *uint64       `json:"logical-block-size,omitempty"` // Logical block size in bytes. Defaults to 512 bytes.
    NumQueues        *uint16       `json:"num-queues,omitempty"`         // Number of request virtqueues. Must be greater than 0. Defaults to 1.
}

type BlockExportRemoveMode

Mode for removing a block export.

None: Potential additional modes to be added in the future:

hide: Just hide export from new clients, leave existing connections as is. Remove export after all clients are disconnected.

soft: Hide export from new clients, answer with ESHUTDOWN for all further requests from existing clients.

Since: 2.12

type BlockExportRemoveMode int32
const (
    BlockExportRemoveModeSafe BlockExportRemoveMode = iota
    BlockExportRemoveModeHard                       // Drop all connections immediately and remove export.
)

func (BlockExportRemoveMode) MarshalJSON

func (s BlockExportRemoveMode) MarshalJSON() ([]byte, error)

func (*BlockExportRemoveMode) UnmarshalJSON

func (s *BlockExportRemoveMode) UnmarshalJSON(data []byte) error

type BlockExportType

An enumeration of block export types

Since: 4.2

type BlockExportType int32
const (
    BlockExportTypeNbd          BlockExportType = iota
    BlockExportTypeVhostUserBlk                 // vhost-user-blk export (since 5.2)
    BlockExportTypeFuse                         // FUSE export (since: 6.0)
)

func (BlockExportType) MarshalJSON

func (s BlockExportType) MarshalJSON() ([]byte, error)

func (*BlockExportType) UnmarshalJSON

func (s *BlockExportType) UnmarshalJSON(data []byte) error

type BlockIOThrottle

A set of parameters describing block throttling.

Since: 1.1

type BlockIOThrottle struct {
    Device          *string `json:"device,omitempty"`             // Block device name
    Id              *string `json:"id,omitempty"`                 // The name or QOM path of the guest device (since: 2.8)
    Bps             int64   `json:"bps"`                          // total throughput limit in bytes per second
    BpsRd           int64   `json:"bps_rd"`                       // read throughput limit in bytes per second
    BpsWr           int64   `json:"bps_wr"`                       // write throughput limit in bytes per second
    Iops            int64   `json:"iops"`                         // total I/O operations per second
    IopsRd          int64   `json:"iops_rd"`                      // read I/O operations per second
    IopsWr          int64   `json:"iops_wr"`                      // write I/O operations per second
    BpsMax          *int64  `json:"bps_max,omitempty"`            // total throughput limit during bursts, in bytes (Since 1.7)
    BpsRdMax        *int64  `json:"bps_rd_max,omitempty"`         // read throughput limit during bursts, in bytes (Since 1.7)
    BpsWrMax        *int64  `json:"bps_wr_max,omitempty"`         // write throughput limit during bursts, in bytes (Since 1.7)
    IopsMax         *int64  `json:"iops_max,omitempty"`           // total I/O operations per second during bursts, in bytes (Since 1.7)
    IopsRdMax       *int64  `json:"iops_rd_max,omitempty"`        // read I/O operations per second during bursts, in bytes (Since 1.7)
    IopsWrMax       *int64  `json:"iops_wr_max,omitempty"`        // write I/O operations per second during bursts, in bytes (Since 1.7)
    BpsMaxLength    *int64  `json:"bps_max_length,omitempty"`     // maximum length of the @bps_max burst period, in seconds. It must only be set if @bps_max is set as well. Defaults to 1. (Since 2.6)
    BpsRdMaxLength  *int64  `json:"bps_rd_max_length,omitempty"`  // maximum length of the @bps_rd_max burst period, in seconds. It must only be set if @bps_rd_max is set as well. Defaults to 1. (Since 2.6)
    BpsWrMaxLength  *int64  `json:"bps_wr_max_length,omitempty"`  // maximum length of the @bps_wr_max burst period, in seconds. It must only be set if @bps_wr_max is set as well. Defaults to 1. (Since 2.6)
    IopsMaxLength   *int64  `json:"iops_max_length,omitempty"`    // maximum length of the @iops burst period, in seconds. It must only be set if @iops_max is set as well. Defaults to 1. (Since 2.6)
    IopsRdMaxLength *int64  `json:"iops_rd_max_length,omitempty"` // maximum length of the @iops_rd_max burst period, in seconds. It must only be set if @iops_rd_max is set as well. Defaults to 1. (Since 2.6)
    IopsWrMaxLength *int64  `json:"iops_wr_max_length,omitempty"` // maximum length of the @iops_wr_max burst period, in seconds. It must only be set if @iops_wr_max is set as well. Defaults to 1. (Since 2.6)
    IopsSize        *int64  `json:"iops_size,omitempty"`          // an I/O size in bytes (Since 1.7)
    Group           *string `json:"group,omitempty"`              // throttle group name (Since 2.4)
}

type BlockImageCorruptedEvent

Emitted when a disk image is being marked corrupt. The image can be identified by its device or node name. The 'device' field is always present for compatibility reasons, but it can be empty ("") if the image does not have a device name associated.

Note: If action is "stop", a STOP event will eventually follow the BLOCK_IO_ERROR event.

Example: <- { "event": "BLOCK_IMAGE_CORRUPTED",

"data": { "device": "ide0-hd0", "node-name": "node0",
          "msg": "Prevented active L1 table overwrite", "offset": 196608,
          "size": 65536 },
"timestamp": { "seconds": 1378126126, "microseconds": 966463 } }

Since: 1.7

type BlockImageCorruptedEvent struct {
    Device   string  `json:"device"`              // device name. This is always present for compatibility reasons, but it can be empty ("") if the image does not have a device name associated.
    NodeName *string `json:"node-name,omitempty"` // node name (Since: 2.4)
    Msg      string  `json:"msg"`                 // informative message for human consumption, such as the kind of corruption being detected. It should not be parsed by machine as it is not guaranteed to be stable
    Offset   *int64  `json:"offset,omitempty"`    // if the corruption resulted from an image access, this is the host's access offset into the image
    Size     *int64  `json:"size,omitempty"`      // if the corruption resulted from an image access, this is the access size
    Fatal    bool    `json:"fatal"`               // if set, the image is marked corrupt and therefore unusable after this event and must be repaired (Since 2.2; before, every BLOCK_IMAGE_CORRUPTED event was fatal)
}

type BlockInfo

Block device information. This structure describes a virtual device and the backing device associated with it.

Since: 0.14

type BlockInfo struct {
    Device    string               `json:"device"`              // The device name associated with the virtual device.
    Qdev      *string              `json:"qdev,omitempty"`      // The qdev ID, or if no ID is assigned, the QOM path of the block device. (since 2.10)
    Type      string               `json:"type"`                // This field is returned only for compatibility reasons, it should not be used (always returns 'unknown')
    Removable bool                 `json:"removable"`           // True if the device supports removable media.
    Locked    bool                 `json:"locked"`              // True if the guest has locked this device from having its media removed
    Inserted  *BlockDeviceInfo     `json:"inserted,omitempty"`  // @BlockDeviceInfo describing the device if media is present
    TrayOpen  *bool                `json:"tray_open,omitempty"` // True if the device's tray is open (only present if it has a tray)
    IoStatus  *BlockDeviceIoStatus `json:"io-status,omitempty"` // @BlockDeviceIoStatus. Only present if the device supports it and the VM is configured to stop on errors (supported device models: virtio-blk, IDE, SCSI except scsi-generic)
}

type BlockIoErrorEvent

Emitted when a disk I/O error occurs

Note: If action is "stop", a STOP event will eventually follow the BLOCK_IO_ERROR event

Since: 0.13

Example: <- { "event": "BLOCK_IO_ERROR",

"data": { "device": "ide0-hd1",
          "node-name": "#block212",
          "operation": "write",
          "action": "stop" },
"timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
type BlockIoErrorEvent struct {
    Device    string           `json:"device"`              // device name. This is always present for compatibility reasons, but it can be empty ("") if the image does not have a device name associated.
    NodeName  *string          `json:"node-name,omitempty"` // node name. Note that errors may be reported for the root node that is directly attached to a guest device rather than for the node where the error occurred. The node name is not present if the drive is empty. (Since: 2.8)
    Operation IoOperationType  `json:"operation"`           // I/O operation
    Action    BlockErrorAction `json:"action"`              // action that has been taken
    Nospace   *bool            `json:"nospace,omitempty"`   // true if I/O error was caused due to a no-space condition. This key is only present if query-block's io-status is present, please see query-block documentation for more information (since: 2.2)
    Reason    string           `json:"reason"`              // human readable string describing the error cause. (This field is a debugging aid for humans, it should not be parsed by applications) (since: 2.2)
}

type BlockJobCancelCommand

Stop an active background block operation.

This command returns immediately after marking the active background block operation for cancellation. It is an error to call this command if no operation is in progress.

The operation will cancel as soon as possible and then emit the BLOCK_JOB_CANCELLED event. Before that happens the job is still visible when enumerated using query-block-jobs.

Note that if you issue 'block-job-cancel' after 'drive-mirror' has indicated (via the event BLOCK_JOB_READY) that the source and destination are synchronized, then the event triggered by this command changes to BLOCK_JOB_COMPLETED, to indicate that the mirroring has ended and the destination now has a point-in-time copy tied to the time of the cancellation.

For streaming, the image file retains its backing file unless the streaming operation happens to complete just as it is being cancelled. A new streaming operation can be started at a later time to finish copying all data from the backing file.

Returns: - Nothing on success - If no background operation is active on this device, DeviceNotActive

Since: 1.1

type BlockJobCancelCommand struct {
    Device string `json:"device"`          // The job identifier. This used to be a device name (hence the name of the parameter), but since QEMU 2.7 it can have other values.
    Force  *bool  `json:"force,omitempty"` // If true, and the job has already emitted the event BLOCK_JOB_READY, abandon the job immediately (even if it is paused) instead of waiting for the destination to complete its final synchronization (since 1.3)
}

type BlockJobCancelledEvent

Emitted when a block job has been cancelled

Since: 1.1

Example: <- { "event": "BLOCK_JOB_CANCELLED",

"data": { "type": "stream", "device": "virtio-disk0",
          "len": 10737418240, "offset": 134217728,
          "speed": 0 },
"timestamp": { "seconds": 1267061043, "microseconds": 959568 } }
type BlockJobCancelledEvent struct {
    Type   JobType `json:"type"`   // job type
    Device string  `json:"device"` // The job identifier. Originally the device name but other values are allowed since QEMU 2.7
    Len    int64   `json:"len"`    // maximum progress value
    Offset int64   `json:"offset"` // current progress value. On success this is equal to len. On failure this is less than len
    Speed  int64   `json:"speed"`  // rate limit, bytes per second
}

type BlockJobCompleteCommand

Manually trigger completion of an active background block operation. This is supported for drive mirroring, where it also switches the device to write to the target path only. The ability to complete is signaled with a BLOCK_JOB_READY event.

This command completes an active background block operation synchronously. The ordering of this command's return with the BLOCK_JOB_COMPLETED event is not defined. Note that if an I/O error occurs during the processing of this command: 1) the command itself will fail; 2) the error will be processed according to the rerror/werror arguments that were specified when starting the operation.

A cancelled or paused job cannot be completed.

Returns: - Nothing on success - If no background operation is active on this device, DeviceNotActive

Since: 1.3

type BlockJobCompleteCommand struct {
    Device string `json:"device"` // The job identifier. This used to be a device name (hence the name of the parameter), but since QEMU 2.7 it can have other values.
}

type BlockJobCompletedEvent

Emitted when a block job has completed

Since: 1.1

Example: <- { "event": "BLOCK_JOB_COMPLETED",

"data": { "type": "stream", "device": "virtio-disk0",
          "len": 10737418240, "offset": 10737418240,
          "speed": 0 },
"timestamp": { "seconds": 1267061043, "microseconds": 959568 } }
type BlockJobCompletedEvent struct {
    Type   JobType `json:"type"`            // job type
    Device string  `json:"device"`          // The job identifier. Originally the device name but other values are allowed since QEMU 2.7
    Len    int64   `json:"len"`             // maximum progress value
    Offset int64   `json:"offset"`          // current progress value. On success this is equal to len. On failure this is less than len
    Speed  int64   `json:"speed"`           // rate limit, bytes per second
    Error  *string `json:"error,omitempty"` // error message. Only present on failure. This field contains a human-readable error message. There are no semantics other than that streaming has failed and clients should not try to interpret the error string
}

type BlockJobDismissCommand

For jobs that have already concluded, remove them from the block-job-query list. This command only needs to be run for jobs which were started with QEMU 2.12+ job lifetime management semantics.

This command will refuse to operate on any job that has not yet reached its terminal state, JOB_STATUS_CONCLUDED. For jobs that make use of the BLOCK_JOB_READY event, block-job-cancel or block-job-complete will still need to be used as appropriate.

Returns: Nothing on success

Since: 2.12

type BlockJobDismissCommand struct {
    Id string `json:"id"` // The job identifier.
}

type BlockJobErrorEvent

Emitted when a block job encounters an error

Since: 1.3

Example: <- { "event": "BLOCK_JOB_ERROR",

"data": { "device": "ide0-hd1",
          "operation": "write",
          "action": "stop" },
"timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
type BlockJobErrorEvent struct {
    Device    string           `json:"device"`    // The job identifier. Originally the device name but other values are allowed since QEMU 2.7
    Operation IoOperationType  `json:"operation"` // I/O operation
    Action    BlockErrorAction `json:"action"`    // action that has been taken
}

type BlockJobFinalizeCommand

Once a job that has manual=true reaches the pending state, it can be instructed to finalize any graph changes and do any necessary cleanup via this command. For jobs in a transaction, instructing one job to finalize will force ALL jobs in the transaction to finalize, so it is only necessary to instruct a single member job to finalize.

Returns: Nothing on success

Since: 2.12

type BlockJobFinalizeCommand struct {
    Id string `json:"id"` // The job identifier.
}

type BlockJobInfo

Information about a long-running block device operation.

Since: 1.1

type BlockJobInfo struct {
    Type         string              `json:"type"`            // the job type ('stream' for image streaming)
    Device       string              `json:"device"`          // The job identifier. Originally the device name but other values are allowed since QEMU 2.7
    Len          int64               `json:"len"`             // Estimated @offset value at the completion of the job. This value can arbitrarily change while the job is running, in both directions.
    Offset       int64               `json:"offset"`          // Progress made until now. The unit is arbitrary and the value can only meaningfully be used for the ratio of @offset to @len. The value is monotonically increasing.
    Busy         bool                `json:"busy"`            // false if the job is known to be in a quiescent state, with no pending I/O. Since 1.3.
    Paused       bool                `json:"paused"`          // whether the job is paused or, if @busy is true, will pause itself as soon as possible. Since 1.3.
    Speed        int64               `json:"speed"`           // the rate limit, bytes per second
    IoStatus     BlockDeviceIoStatus `json:"io-status"`       // the status of the job (since 1.3)
    Ready        bool                `json:"ready"`           // true if the job may be completed (since 2.2)
    Status       JobStatus           `json:"status"`          // Current job state/status (since 2.12)
    AutoFinalize bool                `json:"auto-finalize"`   // Job will finalize itself when PENDING, moving to the CONCLUDED state. (since 2.12)
    AutoDismiss  bool                `json:"auto-dismiss"`    // Job will dismiss itself when CONCLUDED, moving to the NULL state and disappearing from the query list. (since 2.12)
    Error        *string             `json:"error,omitempty"` // Error information if the job did not complete successfully. Not set if the job completed successfully. (since 2.12.1)
}

type BlockJobPauseCommand

Pause an active background block operation.

This command returns immediately after marking the active background block operation for pausing. It is an error to call this command if no operation is in progress or if the job is already paused.

The operation will pause as soon as possible. No event is emitted when the operation is actually paused. Cancelling a paused job automatically resumes it.

Returns: - Nothing on success - If no background operation is active on this device, DeviceNotActive

Since: 1.3

type BlockJobPauseCommand struct {
    Device string `json:"device"` // The job identifier. This used to be a device name (hence the name of the parameter), but since QEMU 2.7 it can have other values.
}

type BlockJobPendingEvent

Emitted when a block job is awaiting explicit authorization to finalize graph changes via @block-job-finalize. If this job is part of a transaction, it will not emit this event until the transaction has converged first.

Since: 2.12

Example: <- { "event": "BLOCK_JOB_WAITING",

"data": { "device": "drive0", "type": "mirror" },
"timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
type BlockJobPendingEvent struct {
    Type JobType `json:"type"` // job type
    Id   string  `json:"id"`   // The job identifier.
}

type BlockJobReadyEvent

Emitted when a block job is ready to complete

Note: The "ready to complete" status is always reset by a @BLOCK_JOB_ERROR event

Since: 1.3

Example: <- { "event": "BLOCK_JOB_READY",

"data": { "device": "drive0", "type": "mirror", "speed": 0,
          "len": 2097152, "offset": 2097152 }
"timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
type BlockJobReadyEvent struct {
    Type   JobType `json:"type"`   // job type
    Device string  `json:"device"` // The job identifier. Originally the device name but other values are allowed since QEMU 2.7
    Len    int64   `json:"len"`    // maximum progress value
    Offset int64   `json:"offset"` // current progress value. On success this is equal to len. On failure this is less than len
    Speed  int64   `json:"speed"`  // rate limit, bytes per second
}

type BlockJobResumeCommand

Resume an active background block operation.

This command returns immediately after resuming a paused background block operation. It is an error to call this command if no operation is in progress or if the job is not paused.

This command also clears the error status of the job.

Returns: - Nothing on success - If no background operation is active on this device, DeviceNotActive

Since: 1.3

type BlockJobResumeCommand struct {
    Device string `json:"device"` // The job identifier. This used to be a device name (hence the name of the parameter), but since QEMU 2.7 it can have other values.
}

type BlockJobSetSpeedCommand

Set maximum speed for a background block operation.

This command can only be issued when there is an active block job.

Throttling can be disabled by setting the speed to 0.

Returns: - Nothing on success - If no background operation is active on this device, DeviceNotActive

Since: 1.1

type BlockJobSetSpeedCommand struct {
    Device string `json:"device"` // The job identifier. This used to be a device name (hence the name of the parameter), but since QEMU 2.7 it can have other values.
    Speed  int64  `json:"speed"`  // the maximum speed, in bytes per second, or 0 for unlimited. Defaults to 0.
}

type BlockLatencyHistogramInfo

Block latency histogram.

None: ::

5|           *
4|           *
3| *         *
2| *         *    *
1| *    *    *    *
 +------------------
     10   50   100

Since: 4.0

type BlockLatencyHistogramInfo struct {
    Boundaries []uint64 `json:"boundaries"` // list of interval boundary values in nanoseconds, all greater than zero and in ascending order. For example, the list [10, 50, 100] produces the following histogram intervals: [0, 10), [10, 50), [50, 100), [100, +inf).
    Bins       []uint64 `json:"bins"`       // list of io request counts corresponding to histogram intervals. len(@bins) = len(@boundaries) + 1 For the example above, @bins may be something like [3, 1, 5, 2], and corresponding histogram looks like:
}

type BlockLatencyHistogramSetCommand

Manage read, write and flush latency histograms for the device.

If only @id parameter is specified, remove all present latency histograms for the device. Otherwise, add/reset some of (or all) latency histograms.

Returns: error if device is not found or any boundary arrays are invalid.

Since: 4.0

Example: set new histograms for all io types with intervals [0, 10), [10, 50), [50, 100), [100, +inf):

-> { "execute": "block-latency-histogram-set",

"arguments": { "id": "drive0",
               "boundaries": [10, 50, 100] } }

<- { "return": {} }

Example: set new histogram only for write, other histograms will remain not changed (or not created):

-> { "execute": "block-latency-histogram-set",

"arguments": { "id": "drive0",
               "boundaries-write": [10, 50, 100] } }

<- { "return": {} }

Example: set new histograms with the following intervals:

read, flush: [0, 10), [10, 50), [50, 100), [100, +inf)
write: [0, 1000), [1000, 5000), [5000, +inf)

-> { "execute": "block-latency-histogram-set",

"arguments": { "id": "drive0",
               "boundaries": [10, 50, 100],
               "boundaries-write": [1000, 5000] } }

<- { "return": {} }

Example: remove all latency histograms:

-> { "execute": "block-latency-histogram-set",

"arguments": { "id": "drive0" } }

<- { "return": {} }

type BlockLatencyHistogramSetCommand struct {
    Id              string   `json:"id"`                         // The name or QOM path of the guest device.
    Boundaries      []uint64 `json:"boundaries,omitempty"`       // list of interval boundary values (see description in BlockLatencyHistogramInfo definition). If specified, all latency histograms are removed, and empty ones created for all io types with intervals corresponding to @boundaries (except for io types, for which specific boundaries are set through the following parameters).
    BoundariesRead  []uint64 `json:"boundaries-read,omitempty"`  // list of interval boundary values for read latency histogram. If specified, old read latency histogram is removed, and empty one created with intervals corresponding to @boundaries-read. The parameter has higher priority then @boundaries.
    BoundariesWrite []uint64 `json:"boundaries-write,omitempty"` // list of interval boundary values for write latency histogram.
    BoundariesFlush []uint64 `json:"boundaries-flush,omitempty"` // list of interval boundary values for flush latency histogram.
}

type BlockMeasureInfo

Image file size calculation information. This structure describes the size requirements for creating a new image file.

The size requirements depend on the new image file format. File size always equals virtual disk size for the 'raw' format, even for sparse POSIX files. Compact formats such as 'qcow2' represent unallocated and zero regions efficiently so file size may be smaller than virtual disk size.

The values are upper bounds that are guaranteed to fit the new image file. Subsequent modification, such as internal snapshot or further bitmap creation, may require additional space and is not covered here.

Since: 2.10

type BlockMeasureInfo struct {
    Required       int64  `json:"required"`          // Size required for a new image file, in bytes, when copying just allocated guest-visible contents.
    FullyAllocated int64  `json:"fully-allocated"`   // Image file size, in bytes, once data has been written to all sectors, when copying just guest-visible contents.
    Bitmaps        *int64 `json:"bitmaps,omitempty"` // Additional size required if all the top-level bitmap metadata in the source image were to be copied to the destination, present only when source and destination both support persistent bitmaps. (since 5.1)
}

type BlockPermission

Enum of base block permissions.

Since: 4.0

type BlockPermission int32
const (
    BlockPermissionConsistentRead BlockPermission = iota
    BlockPermissionWrite                          // This permission is required to change the visible disk contents.
    BlockPermissionWriteUnchanged                 // This permission (which is weaker than BLK_PERM_WRITE) is both enough and required for writes to the block node when the caller promises that the visible disk content doesn't change. As the BLK_PERM_WRITE permission is strictly stronger, either is sufficient to perform an unchanging write.
    BlockPermissionResize                         // This permission is required to change the size of a block node.
)

func (BlockPermission) MarshalJSON

func (s BlockPermission) MarshalJSON() ([]byte, error)

func (*BlockPermission) UnmarshalJSON

func (s *BlockPermission) UnmarshalJSON(data []byte) error

type BlockResizeCommand

Resize a block image while a guest is running.

Either @device or @node-name must be set but not both.

Returns: - nothing on success - If @device is not a valid block device, DeviceNotFound

Since: 0.14

Example: -> { "execute": "block_resize",

"arguments": { "device": "scratch", "size": 1073741824 } }

<- { "return": {} }

type BlockResizeCommand struct {
    Device   *string `json:"device,omitempty"`    // the name of the device to get the image resized
    NodeName *string `json:"node-name,omitempty"` // graph node name to get the image resized (Since 2.0)
    Size     int64   `json:"size"`                // new image size in bytes
}

type BlockSetIoThrottleCommand

Change I/O throttle limits for a block drive.

Since QEMU 2.4, each device with I/O limits is member of a throttle group.

If two or more devices are members of the same group, the limits will apply to the combined I/O of the whole group in a round-robin fashion. Therefore, setting new I/O limits to a device will affect the whole group.

The name of the group can be specified using the 'group' parameter. If the parameter is unset, it is assumed to be the current group of that device. If it's not in any group yet, the name of the device will be used as the name for its group.

The 'group' parameter can also be used to move a device to a different group. In this case the limits specified in the parameters will be applied to the new group only.

I/O limits can be disabled by setting all of them to 0. In this case the device will be removed from its group and the rest of its members will not be affected. The 'group' parameter is ignored.

Returns: - Nothing on success - If @device is not a valid block device, DeviceNotFound

Since: 1.1

Example: -> { "execute": "block_set_io_throttle",

"arguments": { "id": "virtio-blk-pci0/virtio-backend",
               "bps": 0,
               "bps_rd": 0,
               "bps_wr": 0,
               "iops": 512,
               "iops_rd": 0,
               "iops_wr": 0,
               "bps_max": 0,
               "bps_rd_max": 0,
               "bps_wr_max": 0,
               "iops_max": 0,
               "iops_rd_max": 0,
               "iops_wr_max": 0,
               "bps_max_length": 0,
               "iops_size": 0 } }

<- { "return": {} }

-> { "execute": "block_set_io_throttle",

"arguments": { "id": "ide0-1-0",
               "bps": 1000000,
               "bps_rd": 0,
               "bps_wr": 0,
               "iops": 0,
               "iops_rd": 0,
               "iops_wr": 0,
               "bps_max": 8000000,
               "bps_rd_max": 0,
               "bps_wr_max": 0,
               "iops_max": 0,
               "iops_rd_max": 0,
               "iops_wr_max": 0,
               "bps_max_length": 60,
               "iops_size": 0 } }

<- { "return": {} }

type BlockSetIoThrottleCommand struct {
    BlockIOThrottle
}

type BlockSetWriteThresholdCommand

Change the write threshold for a block drive. An event will be delivered if a write to this block drive crosses the configured threshold. The threshold is an offset, thus must be non-negative. Default is no write threshold. Setting the threshold to zero disables it.

This is useful to transparently resize thin-provisioned drives without the guest OS noticing.

Since: 2.3

Example: -> { "execute": "block-set-write-threshold",

"arguments": { "node-name": "mydev",
               "write-threshold": 17179869184 } }

<- { "return": {} }

type BlockSetWriteThresholdCommand struct {
    NodeName       string `json:"node-name"`       // graph node name on which the threshold must be set.
    WriteThreshold uint64 `json:"write-threshold"` // configured threshold for the block device, bytes. Use 0 to disable the threshold.
}

type BlockStats

Statistics of a virtual block device or a block backing device.

Since: 0.14

type BlockStats struct {
    Device         *string             `json:"device,omitempty"`          // If the stats are for a virtual block device, the name corresponding to the virtual block device.
    Qdev           *string             `json:"qdev,omitempty"`            // The qdev ID, or if no ID is assigned, the QOM path of the block device. (since 3.0)
    NodeName       *string             `json:"node-name,omitempty"`       // The node name of the device. (Since 2.3)
    Stats          BlockDeviceStats    `json:"stats"`                     // A @BlockDeviceStats for the device.
    DriverSpecific *BlockStatsSpecific `json:"driver-specific,omitempty"` // Optional driver-specific stats. (Since 4.2)
    Parent         *BlockStats         `json:"parent,omitempty"`          // This describes the file block device if it has one. Contains recursively the statistics of the underlying protocol (e.g. the host file for a qcow2 image). If there is no underlying protocol, this field is omitted
    Backing        *BlockStats         `json:"backing,omitempty"`         // This describes the backing block device if it has one. (Since 2.0)
}

type BlockStatsSpecific

Block driver specific statistics

Since: 4.2

type BlockStatsSpecific struct {
    // Base type for this struct
    BlockStatsSpecificBase
    // Value based on @driver, possible types:
    // * BlockStatsSpecificFile
    // * BlockStatsSpecificFile
    // * BlockStatsSpecificNvme
    Value Any
}

func (BlockStatsSpecific) MarshalJSON

func (s BlockStatsSpecific) MarshalJSON() ([]byte, error)

func (*BlockStatsSpecific) UnmarshalJSON

func (s *BlockStatsSpecific) UnmarshalJSON(data []byte) error

type BlockStatsSpecificBase

Block driver specific statistics

Since: 4.2

type BlockStatsSpecificBase struct {
    Driver BlockdevDriver `json:"driver"`
}

type BlockStatsSpecificFile

File driver statistics

Since: 4.2

type BlockStatsSpecificFile struct {
    DiscardNbOk     uint64 `json:"discard-nb-ok"`     // The number of successful discard operations performed by the driver.
    DiscardNbFailed uint64 `json:"discard-nb-failed"` // The number of failed discard operations performed by the driver.
    DiscardBytesOk  uint64 `json:"discard-bytes-ok"`  // The number of bytes discarded by the driver.
}

type BlockStatsSpecificNvme

NVMe driver statistics

Since: 5.2

type BlockStatsSpecificNvme struct {
    CompletionErrors  uint64 `json:"completion-errors"`  // The number of completion errors.
    AlignedAccesses   uint64 `json:"aligned-accesses"`   // The number of aligned accesses performed by the driver.
    UnalignedAccesses uint64 `json:"unaligned-accesses"` // The number of unaligned accesses performed by the driver.
}

type BlockStreamCommand

Copy data from a backing file into a block device.

The block streaming operation is performed in the background until the entire backing file has been copied. This command returns immediately once streaming has started. The status of ongoing block streaming operations can be checked with query-block-jobs. The operation can be stopped before it has completed using the block-job-cancel command.

The node that receives the data is called the top image, can be located in any part of the chain (but always above the base image; see below) and can be specified using its device or node name. Earlier qemu versions only allowed 'device' to name the top level node; presence of the 'base-node' parameter during introspection can be used as a witness of the enhanced semantics of 'device'.

If a base file is specified then sectors are not copied from that base file and its backing chain. This can be used to stream a subset of the backing file chain instead of flattening the entire image. When streaming completes the image file will have the base file as its backing file, unless that node was changed while the job was running. In that case, base's parent's backing (or filtered, whichever exists) child (i.e., base at the beginning of the job) will be the new backing file.

On successful completion the image file is updated to drop the backing file and the BLOCK_JOB_COMPLETED event is emitted.

In case @device is a filter node, block-stream modifies the first non-filter overlay node below it to point to the new backing node instead of modifying @device itself.

Returns: - Nothing on success. - If @device does not exist, DeviceNotFound.

Since: 1.1

Example: -> { "execute": "block-stream",

"arguments": { "device": "virtio0",
               "base": "/tmp/master.qcow2" } }

<- { "return": {} }

type BlockStreamCommand struct {
    JobId          *string          `json:"job-id,omitempty"`           // identifier for the newly-created block job. If omitted, the device name will be used. (Since 2.7)
    Device         string           `json:"device"`                     // the device or node name of the top image
    Base           *string          `json:"base,omitempty"`             // the common backing file name. It cannot be set if @base-node or @bottom is also set.
    BaseNode       *string          `json:"base-node,omitempty"`        // the node name of the backing file. It cannot be set if @base or @bottom is also set. (Since 2.8)
    BackingFile    *string          `json:"backing-file,omitempty"`     // The backing file string to write into the top image. This filename is not validated. If a pathname string is such that it cannot be resolved by QEMU, that means that subsequent QMP or HMP commands must use node-names for the image in question, as filename lookup methods will fail. If not specified, QEMU will automatically determine the backing file string to use, or error out if there is no obvious choice. Care should be taken when specifying the string, to specify a valid filename or protocol. (Since 2.1)
    Bottom         *string          `json:"bottom,omitempty"`           // the last node in the chain that should be streamed into top. It cannot be set if @base or @base-node is also set. It cannot be filter node. (Since 6.0)
    Speed          *int64           `json:"speed,omitempty"`            // the maximum speed, in bytes per second
    OnError        *BlockdevOnError `json:"on-error,omitempty"`         // the action to take on an error (default report). 'stop' and 'enospc' can only be used if the block device supports io-status (see BlockInfo). Since 1.3.
    FilterNodeName *string          `json:"filter-node-name,omitempty"` // the node name that should be assigned to the filter driver that the stream job inserts into the graph above @device. If this option is not given, a node name is autogenerated. (Since: 6.0)
    AutoFinalize   *bool            `json:"auto-finalize,omitempty"`    // When false, this job will wait in a PENDING state after it has finished its work, waiting for @block-job-finalize before making any block graph changes. When true, this job will automatically perform its abort or commit actions. Defaults to true. (Since 3.1)
    AutoDismiss    *bool            `json:"auto-dismiss,omitempty"`     // When false, this job will wait in a CONCLUDED state after it has completely ceased all work, and awaits @block-job-dismiss. When true, this job will automatically disappear from the query list without user intervention. Defaults to true. (Since 3.1)
}

type BlockWriteThresholdEvent

Emitted when writes on block device reaches or exceeds the configured write threshold. For thin-provisioned devices, this means the device should be extended to avoid pausing for disk exhaustion. The event is one shot. Once triggered, it needs to be re-registered with another block-set-write-threshold command.

Since: 2.3

type BlockWriteThresholdEvent struct {
    NodeName       string `json:"node-name"`       // graph node name on which the threshold was exceeded.
    AmountExceeded uint64 `json:"amount-exceeded"` // amount of data which exceeded the threshold, in bytes.
    WriteThreshold uint64 `json:"write-threshold"` // last configured threshold, in bytes.
}

type BlockdevAddCommand

Creates a new block device.

Since: 2.9

Example: 1. -> { "execute": "blockdev-add",

 "arguments": {
      "driver": "qcow2",
      "node-name": "test1",
      "file": {
          "driver": "file",
          "filename": "test.qcow2"
       }
  }
}

<- { "return": {} }

2. -> { "execute": "blockdev-add",

"arguments": {
     "driver": "qcow2",
     "node-name": "node0",
     "discard": "unmap",
     "cache": {
        "direct": true
      },
      "file": {
        "driver": "file",
        "filename": "/tmp/test.qcow2"
      },
      "backing": {
         "driver": "raw",
         "file": {
            "driver": "file",
            "filename": "/dev/fdset/4"
          }
      }
  }
}

<- { "return": {} }

type BlockdevAddCommand struct {
    BlockdevOptions
}

type BlockdevAioOptions

Selects the AIO backend to handle I/O requests

Since: 2.9

type BlockdevAioOptions int32
const (
    BlockdevAioOptionsThreads  BlockdevAioOptions = iota
    BlockdevAioOptionsNative                      // Use native AIO backend (only Linux and Windows)
    BlockdevAioOptionsIo_Uring                    // Use linux io_uring (since 5.0)
)

func (BlockdevAioOptions) MarshalJSON

func (s BlockdevAioOptions) MarshalJSON() ([]byte, error)

func (*BlockdevAioOptions) UnmarshalJSON

func (s *BlockdevAioOptions) UnmarshalJSON(data []byte) error

type BlockdevAmendOptions

Options for amending an image format

Since: 5.1

type BlockdevAmendOptions struct {
    // Base type for this struct
    BlockdevAmendOptionsBase
    // Value based on @driver, possible types:
    // * BlockdevAmendOptionsLUKS
    // * BlockdevAmendOptionsQcow2
    Value Any
}

func (BlockdevAmendOptions) MarshalJSON

func (s BlockdevAmendOptions) MarshalJSON() ([]byte, error)

func (*BlockdevAmendOptions) UnmarshalJSON

func (s *BlockdevAmendOptions) UnmarshalJSON(data []byte) error

type BlockdevAmendOptionsBase

Options for amending an image format

Since: 5.1

type BlockdevAmendOptionsBase struct {
    Driver BlockdevDriver `json:"driver"` // Block driver of the node to amend.
}

type BlockdevAmendOptionsLUKS

Driver specific image amend options for LUKS.

Since: 5.1

type BlockdevAmendOptionsLUKS struct {
    // Base type for this struct
    QCryptoBlockAmendOptionsLUKS
}

type BlockdevAmendOptionsQcow2

Driver specific image amend options for qcow2. For now, only encryption options can be amended

@encrypt Encryption options to be amended

Since: 5.1

type BlockdevAmendOptionsQcow2 struct {
    Encrypt *QCryptoBlockAmendOptions `json:"encrypt,omitempty"`
}

type BlockdevBackup

Since: 2.3

type BlockdevBackup struct {
    // Base type for this struct
    BackupCommon
    Target string `json:"target"` // the device name or node-name of the backup target node.
}

type BlockdevBackupCommand

Start a point-in-time copy of a block device to a new destination. The status of ongoing blockdev-backup operations can be checked with query-block-jobs where the BlockJobInfo.type field has the value 'backup'. The operation can be stopped before it has completed using the block-job-cancel command.

Returns: - nothing on success - If @device is not a valid block device, DeviceNotFound

Since: 2.3

Example: -> { "execute": "blockdev-backup",

"arguments": { "device": "src-id",
               "sync": "full",
               "target": "tgt-id" } }

<- { "return": {} }

type BlockdevBackupCommand struct {
    BlockdevBackup
}

type BlockdevBackupWrapper

Since: 2.3

type BlockdevBackupWrapper struct {
    Data BlockdevBackup `json:"data"`
}

type BlockdevCacheInfo

Cache mode information for a block device

Since: 2.3

type BlockdevCacheInfo struct {
    Writeback bool `json:"writeback"` // true if writeback mode is enabled
    Direct    bool `json:"direct"`    // true if the host page cache is bypassed (O_DIRECT)
    NoFlush   bool `json:"no-flush"`  // true if flush requests are ignored for the device
}

type BlockdevCacheOptions

Includes cache-related options for block devices

Since: 2.9

type BlockdevCacheOptions struct {
    Direct  *bool `json:"direct,omitempty"`   // enables use of O_DIRECT (bypass the host page cache; default: false)
    NoFlush *bool `json:"no-flush,omitempty"` // ignore any flush requests for the device (default: false)
}

type BlockdevChangeMediumCommand

Changes the medium inserted into a block device by ejecting the current medium and loading a new image file which is inserted as the new medium (this command combines blockdev-open-tray, blockdev-remove-medium, blockdev-insert-medium and blockdev-close-tray).

Since: 2.5

Examples: 1. Change a removable medium

-> { "execute": "blockdev-change-medium",

"arguments": { "id": "ide0-1-0",
               "filename": "/srv/images/Fedora-12-x86_64-DVD.iso",
               "format": "raw" } }

<- { "return": {} }

2. Load a read-only medium into a writable drive

-> { "execute": "blockdev-change-medium",

"arguments": { "id": "floppyA",
               "filename": "/srv/images/ro.img",
               "format": "raw",
               "read-only-mode": "retain" } }

<- { "error":

{ "class": "GenericError",
  "desc": "Could not open '/srv/images/ro.img': Permission denied" } }

-> { "execute": "blockdev-change-medium",

"arguments": { "id": "floppyA",
               "filename": "/srv/images/ro.img",
               "format": "raw",
               "read-only-mode": "read-only" } }

<- { "return": {} }

type BlockdevChangeMediumCommand struct {
    Device       *string                     `json:"device,omitempty"`         // Block device name
    Id           *string                     `json:"id,omitempty"`             // The name or QOM path of the guest device (since: 2.8)
    Filename     string                      `json:"filename"`                 // filename of the new image to be loaded
    Format       *string                     `json:"format,omitempty"`         // format to open the new image with (defaults to the probed format)
    ReadOnlyMode *BlockdevChangeReadOnlyMode `json:"read-only-mode,omitempty"` // change the read-only mode of the device; defaults to 'retain'
}

type BlockdevChangeReadOnlyMode

Specifies the new read-only mode of a block device subject to the @blockdev-change-medium command.

Since: 2.3

type BlockdevChangeReadOnlyMode int32
const (
    BlockdevChangeReadOnlyModeRetain    BlockdevChangeReadOnlyMode = iota
    BlockdevChangeReadOnlyModeReadOnly                             // Makes the device read-only
    BlockdevChangeReadOnlyModeReadWrite                            // Makes the device writable
)

func (BlockdevChangeReadOnlyMode) MarshalJSON

func (s BlockdevChangeReadOnlyMode) MarshalJSON() ([]byte, error)

func (*BlockdevChangeReadOnlyMode) UnmarshalJSON

func (s *BlockdevChangeReadOnlyMode) UnmarshalJSON(data []byte) error

type BlockdevCloseTrayCommand

Closes a block device's tray. If there is a block driver state tree associated with the block device (which is currently ejected), that tree will be loaded as the medium.

If the tray was already closed before, this will be a no-op.

Since: 2.5

Example: -> { "execute": "blockdev-close-tray",

"arguments": { "id": "ide0-1-0" } }

<- { "timestamp": { "seconds": 1418751345,

               "microseconds": 272147 },
"event": "DEVICE_TRAY_MOVED",
"data": { "device": "ide1-cd0",
          "id": "ide0-1-0",
          "tray-open": false } }

<- { "return": {} }

type BlockdevCloseTrayCommand struct {
    Device *string `json:"device,omitempty"` // Block device name
    Id     *string `json:"id,omitempty"`     // The name or QOM path of the guest device (since: 2.8)
}

type BlockdevCreateCommand

Starts a job to create an image format on a given node. The job is automatically finalized, but a manual job-dismiss is required.

Since: 3.0

type BlockdevCreateCommand struct {
    JobId   string                `json:"job-id"`  // Identifier for the newly created job.
    Options BlockdevCreateOptions `json:"options"` // Options for the image creation.
}

type BlockdevCreateOptions

Options for creating an image format on a given node.

Since: 2.12

type BlockdevCreateOptions struct {
    // Base type for this struct
    BlockdevCreateOptionsBase
    // Value based on @driver, possible types:
    // * BlockdevCreateOptionsFile
    // * BlockdevCreateOptionsGluster
    // * BlockdevCreateOptionsLUKS
    // * BlockdevCreateOptionsNfs
    // * BlockdevCreateOptionsParallels
    // * BlockdevCreateOptionsQcow
    // * BlockdevCreateOptionsQcow2
    // * BlockdevCreateOptionsQed
    // * BlockdevCreateOptionsRbd
    // * BlockdevCreateOptionsSsh
    // * BlockdevCreateOptionsVdi
    // * BlockdevCreateOptionsVhdx
    // * BlockdevCreateOptionsVmdk
    // * BlockdevCreateOptionsVpc
    Value Any
}

func (BlockdevCreateOptions) MarshalJSON

func (s BlockdevCreateOptions) MarshalJSON() ([]byte, error)

func (*BlockdevCreateOptions) UnmarshalJSON

func (s *BlockdevCreateOptions) UnmarshalJSON(data []byte) error

type BlockdevCreateOptionsBase

Options for creating an image format on a given node.

Since: 2.12

type BlockdevCreateOptionsBase struct {
    Driver BlockdevDriver `json:"driver"` // block driver to create the image format
}

type BlockdevCreateOptionsFile

Driver specific image creation options for file.

Since: 2.12

type BlockdevCreateOptionsFile struct {
    Filename       string        `json:"filename"`                   // Filename for the new image file
    Size           uint64        `json:"size"`                       // Size of the virtual disk in bytes
    Preallocation  *PreallocMode `json:"preallocation,omitempty"`    // Preallocation mode for the new image (default: off; allowed values: off, falloc (if CONFIG_POSIX_FALLOCATE), full (if CONFIG_POSIX))
    Nocow          *bool         `json:"nocow,omitempty"`            // Turn off copy-on-write (valid only on btrfs; default: off)
    ExtentSizeHint *uint64       `json:"extent-size-hint,omitempty"` // Extent size hint to add to the image file; 0 for not adding an extent size hint (default: 1 MB, since 5.1)
}

type BlockdevCreateOptionsGluster

Driver specific image creation options for gluster.

Since: 2.12

type BlockdevCreateOptionsGluster struct {
    Location      BlockdevOptionsGluster `json:"location"`                // Where to store the new image file
    Size          uint64                 `json:"size"`                    // Size of the virtual disk in bytes
    Preallocation *PreallocMode          `json:"preallocation,omitempty"` // Preallocation mode for the new image (default: off; allowed values: off, falloc (if CONFIG_GLUSTERFS_FALLOCATE), full (if CONFIG_GLUSTERFS_ZEROFILL))
}

type BlockdevCreateOptionsLUKS

Driver specific image creation options for LUKS.

Since: 2.12

type BlockdevCreateOptionsLUKS struct {
    // Base type for this struct
    QCryptoBlockCreateOptionsLUKS
    File          BlockdevRef   `json:"file"`                    // Node to create the image format on
    Size          uint64        `json:"size"`                    // Size of the virtual disk in bytes
    Preallocation *PreallocMode `json:"preallocation,omitempty"` // Preallocation mode for the new image (since: 4.2) (default: off; allowed values: off, metadata, falloc, full)
}

type BlockdevCreateOptionsNfs

Driver specific image creation options for NFS.

Since: 2.12

type BlockdevCreateOptionsNfs struct {
    Location BlockdevOptionsNfs `json:"location"` // Where to store the new image file
    Size     uint64             `json:"size"`     // Size of the virtual disk in bytes
}

type BlockdevCreateOptionsParallels

Driver specific image creation options for parallels.

Since: 2.12

type BlockdevCreateOptionsParallels struct {
    File        BlockdevRef `json:"file"`                   // Node to create the image format on
    Size        uint64      `json:"size"`                   // Size of the virtual disk in bytes
    ClusterSize *uint64     `json:"cluster-size,omitempty"` // Cluster size in bytes (default: 1 MB)
}

type BlockdevCreateOptionsQcow

Driver specific image creation options for qcow.

Since: 2.12

type BlockdevCreateOptionsQcow struct {
    File        BlockdevRef                `json:"file"`                   // Node to create the image format on
    Size        uint64                     `json:"size"`                   // Size of the virtual disk in bytes
    BackingFile *string                    `json:"backing-file,omitempty"` // File name of the backing file if a backing file should be used
    Encrypt     *QCryptoBlockCreateOptions `json:"encrypt,omitempty"`      // Encryption options if the image should be encrypted
}

type BlockdevCreateOptionsQcow2

Driver specific image creation options for qcow2.

Since: 2.12

type BlockdevCreateOptionsQcow2 struct {
    File            BlockdevRef                `json:"file"`                       // Node to create the image format on
    DataFile        *BlockdevRef               `json:"data-file,omitempty"`        // Node to use as an external data file in which all guest data is stored so that only metadata remains in the qcow2 file (since: 4.0)
    DataFileRaw     *bool                      `json:"data-file-raw,omitempty"`    // True if the external data file must stay valid as a standalone (read-only) raw image without looking at qcow2 metadata (default: false; since: 4.0)
    ExtendedL2      *bool                      `json:"extended-l2,omitempty"`      // True to make the image have extended L2 entries (default: false; since 5.2)
    Size            uint64                     `json:"size"`                       // Size of the virtual disk in bytes
    Version         *BlockdevQcow2Version      `json:"version,omitempty"`          // Compatibility level (default: v3)
    BackingFile     *string                    `json:"backing-file,omitempty"`     // File name of the backing file if a backing file should be used
    BackingFmt      *BlockdevDriver            `json:"backing-fmt,omitempty"`      // Name of the block driver to use for the backing file
    Encrypt         *QCryptoBlockCreateOptions `json:"encrypt,omitempty"`          // Encryption options if the image should be encrypted
    ClusterSize     *uint64                    `json:"cluster-size,omitempty"`     // qcow2 cluster size in bytes (default: 65536)
    Preallocation   *PreallocMode              `json:"preallocation,omitempty"`    // Preallocation mode for the new image (default: off; allowed values: off, falloc, full, metadata)
    LazyRefcounts   *bool                      `json:"lazy-refcounts,omitempty"`   // True if refcounts may be updated lazily (default: off)
    RefcountBits    *int64                     `json:"refcount-bits,omitempty"`    // Width of reference counts in bits (default: 16)
    CompressionType *Qcow2CompressionType      `json:"compression-type,omitempty"` // The image cluster compression method (default: zlib, since 5.1)
}

type BlockdevCreateOptionsQed

Driver specific image creation options for qed.

Since: 2.12

type BlockdevCreateOptionsQed struct {
    File        BlockdevRef     `json:"file"`                   // Node to create the image format on
    Size        uint64          `json:"size"`                   // Size of the virtual disk in bytes
    BackingFile *string         `json:"backing-file,omitempty"` // File name of the backing file if a backing file should be used
    BackingFmt  *BlockdevDriver `json:"backing-fmt,omitempty"`  // Name of the block driver to use for the backing file
    ClusterSize *uint64         `json:"cluster-size,omitempty"` // Cluster size in bytes (default: 65536)
    TableSize   *int64          `json:"table-size,omitempty"`   // L1/L2 table size (in clusters)
}

type BlockdevCreateOptionsRbd

Driver specific image creation options for rbd/Ceph.

Since: 2.12

type BlockdevCreateOptionsRbd struct {
    Location    BlockdevOptionsRbd          `json:"location"`               // Where to store the new image file. This location cannot point to a snapshot.
    Size        uint64                      `json:"size"`                   // Size of the virtual disk in bytes
    ClusterSize *uint64                     `json:"cluster-size,omitempty"` // RBD object size
    Encrypt     *RbdEncryptionCreateOptions `json:"encrypt,omitempty"`      // Image encryption options. (Since 6.1)
}

type BlockdevCreateOptionsSsh

Driver specific image creation options for SSH.

Since: 2.12

type BlockdevCreateOptionsSsh struct {
    Location BlockdevOptionsSsh `json:"location"` // Where to store the new image file
    Size     uint64             `json:"size"`     // Size of the virtual disk in bytes
}

type BlockdevCreateOptionsVdi

Driver specific image creation options for VDI.

Since: 2.12

type BlockdevCreateOptionsVdi struct {
    File          BlockdevRef   `json:"file"`                    // Node to create the image format on
    Size          uint64        `json:"size"`                    // Size of the virtual disk in bytes
    Preallocation *PreallocMode `json:"preallocation,omitempty"` // Preallocation mode for the new image (default: off; allowed values: off, metadata)
}

type BlockdevCreateOptionsVhdx

Driver specific image creation options for vhdx.

Since: 2.12

type BlockdevCreateOptionsVhdx struct {
    File           BlockdevRef            `json:"file"`                       // Node to create the image format on
    Size           uint64                 `json:"size"`                       // Size of the virtual disk in bytes
    LogSize        *uint64                `json:"log-size,omitempty"`         // Log size in bytes, must be a multiple of 1 MB (default: 1 MB)
    BlockSize      *uint64                `json:"block-size,omitempty"`       // Block size in bytes, must be a multiple of 1 MB and not larger than 256 MB (default: automatically choose a block size depending on the image size)
    Subformat      *BlockdevVhdxSubformat `json:"subformat,omitempty"`        // vhdx subformat (default: dynamic)
    BlockStateZero *bool                  `json:"block-state-zero,omitempty"` // Force use of payload blocks of type 'ZERO'. Non-standard, but default. Do not set to 'off' when using 'qemu-img convert' with subformat=dynamic.
}

type BlockdevCreateOptionsVmdk

Driver specific image creation options for VMDK.

Since: 4.0

type BlockdevCreateOptionsVmdk struct {
    File         BlockdevRef              `json:"file"`                   // Where to store the new image file. This refers to the image file for monolithcSparse and streamOptimized format, or the descriptor file for other formats.
    Size         uint64                   `json:"size"`                   // Size of the virtual disk in bytes
    Extents      []BlockdevRef            `json:"extents,omitempty"`      // Where to store the data extents. Required for monolithcFlat, twoGbMaxExtentSparse and twoGbMaxExtentFlat formats. For monolithicFlat, only one entry is required; for twoGbMaxExtent* formats, the number of entries required is calculated as extent_number = virtual_size / 2GB. Providing more extents than will be used is an error.
    Subformat    *BlockdevVmdkSubformat   `json:"subformat,omitempty"`    // The subformat of the VMDK image. Default: "monolithicSparse".
    BackingFile  *string                  `json:"backing-file,omitempty"` // The path of backing file. Default: no backing file is used.
    AdapterType  *BlockdevVmdkAdapterType `json:"adapter-type,omitempty"` // The adapter type used to fill in the descriptor. Default: ide.
    Hwversion    *string                  `json:"hwversion,omitempty"`    // Hardware version. The meaningful options are "4" or "6". Default: "4".
    Toolsversion *string                  `json:"toolsversion,omitempty"` // VMware guest tools version. Default: "2147483647" (Since 6.2)
    ZeroedGrain  *bool                    `json:"zeroed-grain,omitempty"` // Whether to enable zeroed-grain feature for sparse subformats. Default: false.
}

type BlockdevCreateOptionsVpc

Driver specific image creation options for vpc (VHD).

Since: 2.12

type BlockdevCreateOptionsVpc struct {
    File      BlockdevRef           `json:"file"`                 // Node to create the image format on
    Size      uint64                `json:"size"`                 // Size of the virtual disk in bytes
    Subformat *BlockdevVpcSubformat `json:"subformat,omitempty"`  // vhdx subformat (default: dynamic)
    ForceSize *bool                 `json:"force-size,omitempty"` // Force use of the exact byte size instead of rounding to the next size that can be represented in CHS geometry (default: false)
}

type BlockdevDelCommand

Deletes a block device that has been added using blockdev-add. The command will fail if the node is attached to a device or is otherwise being used.

Since: 2.9

Example: -> { "execute": "blockdev-add",

  "arguments": {
       "driver": "qcow2",
       "node-name": "node0",
       "file": {
           "driver": "file",
           "filename": "test.qcow2"
       }
  }
}

<- { "return": {} }

-> { "execute": "blockdev-del",

  "arguments": { "node-name": "node0" }
}

<- { "return": {} }

type BlockdevDelCommand struct {
    NodeName string `json:"node-name"` // Name of the graph node to delete.
}

type BlockdevDetectZeroesOptions

Describes the operation mode for the automatic conversion of plain zero writes by the OS to driver specific optimized zero write commands.

Since: 2.1

type BlockdevDetectZeroesOptions int32
const (
    BlockdevDetectZeroesOptionsOff   BlockdevDetectZeroesOptions = iota
    BlockdevDetectZeroesOptionsOn                                // Enabled
    BlockdevDetectZeroesOptionsUnmap                             // Enabled and even try to unmap blocks if possible. This requires also that @BlockdevDiscardOptions is set to unmap for this device.
)

func (BlockdevDetectZeroesOptions) MarshalJSON

func (s BlockdevDetectZeroesOptions) MarshalJSON() ([]byte, error)

func (*BlockdevDetectZeroesOptions) UnmarshalJSON

func (s *BlockdevDetectZeroesOptions) UnmarshalJSON(data []byte) error

type BlockdevDiscardOptions

Determines how to handle discard requests.

Since: 2.9

type BlockdevDiscardOptions int32
const (
    BlockdevDiscardOptionsIgnore BlockdevDiscardOptions = iota
    BlockdevDiscardOptionsUnmap                         // Forward as an unmap request
)

func (BlockdevDiscardOptions) MarshalJSON

func (s BlockdevDiscardOptions) MarshalJSON() ([]byte, error)

func (*BlockdevDiscardOptions) UnmarshalJSON

func (s *BlockdevDiscardOptions) UnmarshalJSON(data []byte) error

type BlockdevDriver

Drivers that are supported in block device operations.

Since: 2.9

type BlockdevDriver int32
const (
    BlockdevDriverBlkdebug     BlockdevDriver = iota
    BlockdevDriverBlklogwrites                // Since 3.0
    BlockdevDriverBlkreplay                   // Since 4.2
    BlockdevDriverBlkverify
    BlockdevDriverBochs
    BlockdevDriverCloop
    BlockdevDriverCompress        // Since 5.0
    BlockdevDriverCopyBeforeWrite // Since 6.2
    BlockdevDriverCopyOnRead      // Since 3.0
    BlockdevDriverDmg
    BlockdevDriverFile
    BlockdevDriverSnapshotAccess // Since 7.0
    BlockdevDriverFtp
    BlockdevDriverFtps
    BlockdevDriverGluster
    BlockdevDriverHost_Cdrom
    BlockdevDriverHost_Device
    BlockdevDriverHttp
    BlockdevDriverHttps
    BlockdevDriverIscsi
    BlockdevDriverLuks
    BlockdevDriverNbd
    BlockdevDriverNfs
    BlockdevDriverNullAio
    BlockdevDriverNullCo
    BlockdevDriverNvme // Since 2.12
    BlockdevDriverParallels
    BlockdevDriverPreallocate
    BlockdevDriverQcow
    BlockdevDriverQcow2
    BlockdevDriverQed
    BlockdevDriverQuorum
    BlockdevDriverRaw
    BlockdevDriverRbd
    BlockdevDriverReplication
    BlockdevDriverSsh
    BlockdevDriverThrottle // Since 2.11
    BlockdevDriverVdi
    BlockdevDriverVhdx
    BlockdevDriverVmdk
    BlockdevDriverVpc
    BlockdevDriverVvfat
)

func (BlockdevDriver) MarshalJSON

func (s BlockdevDriver) MarshalJSON() ([]byte, error)

func (*BlockdevDriver) UnmarshalJSON

func (s *BlockdevDriver) UnmarshalJSON(data []byte) error

type BlockdevInsertMediumCommand

Inserts a medium (a block driver state tree) into a block device. That block device's tray must currently be open (unless there is no attached guest device) and there must be no medium inserted already.

Since: 2.12

Example: -> { "execute": "blockdev-add",

"arguments": {
    "node-name": "node0",
    "driver": "raw",
    "file": { "driver": "file",
              "filename": "fedora.iso" } } }

<- { "return": {} }

-> { "execute": "blockdev-insert-medium",

"arguments": { "id": "ide0-1-0",
               "node-name": "node0" } }

<- { "return": {} }

type BlockdevInsertMediumCommand struct {
    Id       string `json:"id"`        // The name or QOM path of the guest device
    NodeName string `json:"node-name"` // name of a node in the block driver state graph
}

type BlockdevMirrorCommand

Start mirroring a block device's writes to a new destination.

Returns: nothing on success.

Since: 2.6

Example: -> { "execute": "blockdev-mirror",

"arguments": { "device": "ide-hd0",
               "target": "target0",
               "sync": "full" } }

<- { "return": {} }

type BlockdevMirrorCommand struct {
    JobId          *string          `json:"job-id,omitempty"`           // identifier for the newly-created block job. If omitted, the device name will be used. (Since 2.7)
    Device         string           `json:"device"`                     // The device name or node-name of a root node whose writes should be mirrored.
    Target         string           `json:"target"`                     // the id or node-name of the block device to mirror to. This mustn't be attached to guest.
    Replaces       *string          `json:"replaces,omitempty"`         // with sync=full graph node name to be replaced by the new image when a whole image copy is done. This can be used to repair broken Quorum files. By default, @device is replaced, although implicitly created filters on it are kept.
    Sync           MirrorSyncMode   `json:"sync"`                       // what parts of the disk image should be copied to the destination (all the disk, only the sectors allocated in the topmost image, or only new I/O).
    Speed          *int64           `json:"speed,omitempty"`            // the maximum speed, in bytes per second
    Granularity    *uint32          `json:"granularity,omitempty"`      // granularity of the dirty bitmap, default is 64K if the image format doesn't have clusters, 4K if the clusters are smaller than that, else the cluster size. Must be a power of 2 between 512 and 64M
    BufSize        *int64           `json:"buf-size,omitempty"`         // maximum amount of data in flight from source to target
    OnSourceError  *BlockdevOnError `json:"on-source-error,omitempty"`  // the action to take on an error on the source, default 'report'. 'stop' and 'enospc' can only be used if the block device supports io-status (see BlockInfo).
    OnTargetError  *BlockdevOnError `json:"on-target-error,omitempty"`  // the action to take on an error on the target, default 'report' (no limitations, since this applies to a different block device than @device).
    FilterNodeName *string          `json:"filter-node-name,omitempty"` // the node name that should be assigned to the filter driver that the mirror job inserts into the graph above @device. If this option is not given, a node name is autogenerated. (Since: 2.9)
    CopyMode       *MirrorCopyMode  `json:"copy-mode,omitempty"`        // when to copy data to the destination; defaults to 'background' (Since: 3.0)
    AutoFinalize   *bool            `json:"auto-finalize,omitempty"`    // When false, this job will wait in a PENDING state after it has finished its work, waiting for @block-job-finalize before making any block graph changes. When true, this job will automatically perform its abort or commit actions. Defaults to true. (Since 3.1)
    AutoDismiss    *bool            `json:"auto-dismiss,omitempty"`     // When false, this job will wait in a CONCLUDED state after it has completely ceased all work, and awaits @block-job-dismiss. When true, this job will automatically disappear from the query list without user intervention. Defaults to true. (Since 3.1)
}

type BlockdevOnError

An enumeration of possible behaviors for errors on I/O operations. The exact meaning depends on whether the I/O was initiated by a guest or by a block job

Since: 1.3

type BlockdevOnError int32
const (
    BlockdevOnErrorReport BlockdevOnError = iota
    BlockdevOnErrorIgnore                 // ignore the error, only report a QMP event (BLOCK_IO_ERROR or BLOCK_JOB_ERROR). The backup, mirror and commit block jobs retry the failing request later and may still complete successfully. The stream block job continues to stream and will complete with an error.
    BlockdevOnErrorEnospc                 // same as @stop on ENOSPC, same as @report otherwise.
    BlockdevOnErrorStop                   // for guest operations, stop the virtual machine; for jobs, pause the job
    BlockdevOnErrorAuto                   // inherit the error handling policy of the backend (since: 2.7)
)

func (BlockdevOnError) MarshalJSON

func (s BlockdevOnError) MarshalJSON() ([]byte, error)

func (*BlockdevOnError) UnmarshalJSON

func (s *BlockdevOnError) UnmarshalJSON(data []byte) error

type BlockdevOpenTrayCommand

Opens a block device's tray. If there is a block driver state tree inserted as a medium, it will become inaccessible to the guest (but it will remain associated to the block device, so closing the tray will make it accessible again).

If the tray was already open before, this will be a no-op.

Once the tray opens, a DEVICE_TRAY_MOVED event is emitted. There are cases in which no such event will be generated, these include:

- if the guest has locked the tray, @force is false and the guest does not

respond to the eject request

- if the BlockBackend denoted by @device does not have a guest device attached

to it

- if the guest device does not have an actual tray

Since: 2.5

Example: -> { "execute": "blockdev-open-tray",

"arguments": { "id": "ide0-1-0" } }

<- { "timestamp": { "seconds": 1418751016,

               "microseconds": 716996 },
"event": "DEVICE_TRAY_MOVED",
"data": { "device": "ide1-cd0",
          "id": "ide0-1-0",
          "tray-open": true } }

<- { "return": {} }

type BlockdevOpenTrayCommand struct {
    Device *string `json:"device,omitempty"` // Block device name
    Id     *string `json:"id,omitempty"`     // The name or QOM path of the guest device (since: 2.8)
    Force  *bool   `json:"force,omitempty"`  // if false (the default), an eject request will be sent to the guest if it has locked the tray (and the tray will not be opened immediately); if true, the tray will be opened regardless of whether it is locked
}

type BlockdevOptions

Options for creating a block device. Many options are available for all block devices, independent of the block driver:

None: Remaining options are determined by the block driver.

Since: 2.9

type BlockdevOptions struct {
    // Base type for this struct
    BlockdevOptionsBase
    // Value based on @driver, possible types:
    // * BlockdevOptionsBlkdebug
    // * BlockdevOptionsBlklogwrites
    // * BlockdevOptionsBlkverify
    // * BlockdevOptionsBlkreplay
    // * BlockdevOptionsGenericFormat
    // * BlockdevOptionsGenericFormat
    // * BlockdevOptionsGenericFormat
    // * BlockdevOptionsCbw
    // * BlockdevOptionsCor
    // * BlockdevOptionsGenericFormat
    // * BlockdevOptionsFile
    // * BlockdevOptionsCurlFtp
    // * BlockdevOptionsCurlFtps
    // * BlockdevOptionsGluster
    // * BlockdevOptionsFile
    // * BlockdevOptionsFile
    // * BlockdevOptionsCurlHttp
    // * BlockdevOptionsCurlHttps
    // * BlockdevOptionsIscsi
    // * BlockdevOptionsLUKS
    // * BlockdevOptionsNbd
    // * BlockdevOptionsNfs
    // * BlockdevOptionsNull
    // * BlockdevOptionsNull
    // * BlockdevOptionsNVMe
    // * BlockdevOptionsGenericFormat
    // * BlockdevOptionsPreallocate
    // * BlockdevOptionsQcow2
    // * BlockdevOptionsQcow
    // * BlockdevOptionsGenericCOWFormat
    // * BlockdevOptionsQuorum
    // * BlockdevOptionsRaw
    // * BlockdevOptionsRbd
    // * BlockdevOptionsReplication
    // * BlockdevOptionsGenericFormat
    // * BlockdevOptionsSsh
    // * BlockdevOptionsThrottle
    // * BlockdevOptionsGenericFormat
    // * BlockdevOptionsGenericFormat
    // * BlockdevOptionsGenericCOWFormat
    // * BlockdevOptionsGenericFormat
    // * BlockdevOptionsVVFAT
    Value Any
}

func (BlockdevOptions) MarshalJSON

func (s BlockdevOptions) MarshalJSON() ([]byte, error)

func (*BlockdevOptions) UnmarshalJSON

func (s *BlockdevOptions) UnmarshalJSON(data []byte) error

type BlockdevOptionsBase

Options for creating a block device. Many options are available for all block devices, independent of the block driver:

None: Remaining options are determined by the block driver.

Since: 2.9

type BlockdevOptionsBase struct {
    Driver       BlockdevDriver               `json:"driver"`                   // block driver name
    NodeName     *string                      `json:"node-name,omitempty"`      // the node name of the new node (Since 2.0). This option is required on the top level of blockdev-add. Valid node names start with an alphabetic character and may contain only alphanumeric characters, '-', '.' and '_'. Their maximum length is 31 characters.
    Discard      *BlockdevDiscardOptions      `json:"discard,omitempty"`        // discard-related options (default: ignore)
    Cache        *BlockdevCacheOptions        `json:"cache,omitempty"`          // cache-related options
    ReadOnly     *bool                        `json:"read-only,omitempty"`      // whether the block device should be read-only (default: false). Note that some block drivers support only read-only access, either generally or in certain configurations. In this case, the default value does not work and the option must be specified explicitly.
    AutoReadOnly *bool                        `json:"auto-read-only,omitempty"` // if true and @read-only is false, QEMU may automatically decide not to open the image read-write as requested, but fall back to read-only instead (and switch between the modes later), e.g. depending on whether the image file is writable or whether a writing user is attached to the node (default: false, since 3.1)
    ForceShare   *bool                        `json:"force-share,omitempty"`    // force share all permission on added nodes. Requires read-only=true. (Since 2.10)
    DetectZeroes *BlockdevDetectZeroesOptions `json:"detect-zeroes,omitempty"`  // detect and optimize zero writes (Since 2.1) (default: off)
}

type BlockdevOptionsBlkdebug

Driver specific block device options for blkdebug.

Since: 2.9

type BlockdevOptionsBlkdebug struct {
    Image             BlockdevRef                  `json:"image"`                         // underlying raw block device (or image file)
    Config            *string                      `json:"config,omitempty"`              // filename of the configuration file
    Align             *int64                       `json:"align,omitempty"`               // required alignment for requests in bytes, must be positive power of 2, or 0 for default
    MaxTransfer       *int32                       `json:"max-transfer,omitempty"`        // maximum size for I/O transfers in bytes, must be positive multiple of @align and of the underlying file's request alignment (but need not be a power of 2), or 0 for default (since 2.10)
    OptWriteZero      *int32                       `json:"opt-write-zero,omitempty"`      // preferred alignment for write zero requests in bytes, must be positive multiple of @align and of the underlying file's request alignment (but need not be a power of 2), or 0 for default (since 2.10)
    MaxWriteZero      *int32                       `json:"max-write-zero,omitempty"`      // maximum size for write zero requests in bytes, must be positive multiple of @align, of @opt-write-zero, and of the underlying file's request alignment (but need not be a power of 2), or 0 for default (since 2.10)
    OptDiscard        *int32                       `json:"opt-discard,omitempty"`         // preferred alignment for discard requests in bytes, must be positive multiple of @align and of the underlying file's request alignment (but need not be a power of 2), or 0 for default (since 2.10)
    MaxDiscard        *int32                       `json:"max-discard,omitempty"`         // maximum size for discard requests in bytes, must be positive multiple of @align, of @opt-discard, and of the underlying file's request alignment (but need not be a power of 2), or 0 for default (since 2.10)
    InjectError       []BlkdebugInjectErrorOptions `json:"inject-error,omitempty"`        // array of error injection descriptions
    SetState          []BlkdebugSetStateOptions    `json:"set-state,omitempty"`           // array of state-change descriptions
    TakeChildPerms    []BlockPermission            `json:"take-child-perms,omitempty"`    // Permissions to take on @image in addition to what is necessary anyway (which depends on how the blkdebug node is used). Defaults to none. (since 5.0)
    UnshareChildPerms []BlockPermission            `json:"unshare-child-perms,omitempty"` // Permissions not to share on @image in addition to what cannot be shared anyway (which depends on how the blkdebug node is used). Defaults to none. (since 5.0)
}

type BlockdevOptionsBlklogwrites

Driver specific block device options for blklogwrites.

Since: 3.0

type BlockdevOptionsBlklogwrites struct {
    File                   BlockdevRef `json:"file"`                                // block device
    Log                    BlockdevRef `json:"log"`                                 // block device used to log writes to @file
    LogSectorSize          *uint32     `json:"log-sector-size,omitempty"`           // sector size used in logging writes to @file, determines granularity of offsets and sizes of writes (default: 512)
    LogAppend              *bool       `json:"log-append,omitempty"`                // append to an existing log (default: false)
    LogSuperUpdateInterval *uint64     `json:"log-super-update-interval,omitempty"` // interval of write requests after which the log super block is updated to disk (default: 4096)
}

type BlockdevOptionsBlkreplay

Driver specific block device options for blkreplay.

Since: 4.2

type BlockdevOptionsBlkreplay struct {
    Image BlockdevRef `json:"image"` // disk image which should be controlled with blkreplay
}

type BlockdevOptionsBlkverify

Driver specific block device options for blkverify.

Since: 2.9

type BlockdevOptionsBlkverify struct {
    Test BlockdevRef `json:"test"` // block device to be tested
    Raw  BlockdevRef `json:"raw"`  // raw image used for verification
}

type BlockdevOptionsCbw

Driver specific block device options for the copy-before-write driver, which does so called copy-before-write operations: when data is written to the filter, the filter first reads corresponding blocks from its file child and copies them to @target child. After successfully copying, the write request is propagated to file child. If copying fails, the original write request is failed too and no data is written to file child.

Since: 6.2

type BlockdevOptionsCbw struct {
    // Base type for this struct
    BlockdevOptionsGenericFormat
    Target BlockdevRef       `json:"target"`           // The target for copy-before-write operations.
    Bitmap *BlockDirtyBitmap `json:"bitmap,omitempty"` // If specified, copy-before-write filter will do copy-before-write operations only for dirty regions of the bitmap. Bitmap size must be equal to length of file and target child of the filter. Note also, that bitmap is used only to initialize internal bitmap of the process, so further modifications (or removing) of specified bitmap doesn't influence the filter. (Since 7.0)
}

type BlockdevOptionsCor

Driver specific block device options for the copy-on-read driver.

Since: 6.0

type BlockdevOptionsCor struct {
    // Base type for this struct
    BlockdevOptionsGenericFormat
    Bottom *string `json:"bottom,omitempty"` // The name of a non-filter node (allocation-bearing layer) that limits the COR operations in the backing chain (inclusive), so that no data below this node will be copied by this filter. If option is absent, the limit is not applied, so that data from all backing layers may be copied.
}

type BlockdevOptionsCurlBase

Driver specific block device options shared by all protocols supported by the curl backend.

Since: 2.9

type BlockdevOptionsCurlBase struct {
    Url                 string  `json:"url"`                             // URL of the image file
    Readahead           *int64  `json:"readahead,omitempty"`             // Size of the read-ahead cache; must be a multiple of 512 (defaults to 256 kB)
    Timeout             *int64  `json:"timeout,omitempty"`               // Timeout for connections, in seconds (defaults to 5)
    Username            *string `json:"username,omitempty"`              // Username for authentication (defaults to none)
    PasswordSecret      *string `json:"password-secret,omitempty"`       // ID of a QCryptoSecret object providing a password for authentication (defaults to no password)
    ProxyUsername       *string `json:"proxy-username,omitempty"`        // Username for proxy authentication (defaults to none)
    ProxyPasswordSecret *string `json:"proxy-password-secret,omitempty"` // ID of a QCryptoSecret object providing a password for proxy authentication (defaults to no password)
}

type BlockdevOptionsCurlFtp

Driver specific block device options for FTP connections over the curl backend. URLs must start with "ftp://".

Since: 2.9

type BlockdevOptionsCurlFtp struct {
    // Base type for this struct
    BlockdevOptionsCurlBase
}

type BlockdevOptionsCurlFtps

Driver specific block device options for FTPS connections over the curl backend. URLs must start with "ftps://".

Since: 2.9

type BlockdevOptionsCurlFtps struct {
    // Base type for this struct
    BlockdevOptionsCurlBase
    Sslverify *bool `json:"sslverify,omitempty"` // Whether to verify the SSL certificate's validity (defaults to true)
}

type BlockdevOptionsCurlHttp

Driver specific block device options for HTTP connections over the curl backend. URLs must start with "http://".

Since: 2.9

type BlockdevOptionsCurlHttp struct {
    // Base type for this struct
    BlockdevOptionsCurlBase
    Cookie       *string `json:"cookie,omitempty"`        // List of cookies to set; format is "name1=content1; name2=content2;" as explained by CURLOPT_COOKIE(3). Defaults to no cookies.
    CookieSecret *string `json:"cookie-secret,omitempty"` // ID of a QCryptoSecret object providing the cookie data in a secure way. See @cookie for the format. (since 2.10)
}

type BlockdevOptionsCurlHttps

Driver specific block device options for HTTPS connections over the curl backend. URLs must start with "https://".

Since: 2.9

type BlockdevOptionsCurlHttps struct {
    // Base type for this struct
    BlockdevOptionsCurlBase
    Cookie       *string `json:"cookie,omitempty"`        // List of cookies to set; format is "name1=content1; name2=content2;" as explained by CURLOPT_COOKIE(3). Defaults to no cookies.
    Sslverify    *bool   `json:"sslverify,omitempty"`     // Whether to verify the SSL certificate's validity (defaults to true)
    CookieSecret *string `json:"cookie-secret,omitempty"` // ID of a QCryptoSecret object providing the cookie data in a secure way. See @cookie for the format. (since 2.10)
}

type BlockdevOptionsFile

Driver specific block device options for the file backend.

Since: 2.9

type BlockdevOptionsFile struct {
    Filename           string              `json:"filename"`                        // path to the image file
    PrManager          *string             `json:"pr-manager,omitempty"`            // the id for the object that will handle persistent reservations for this device (default: none, forward the commands via SG_IO; since 2.11)
    Locking            *OnOffAuto          `json:"locking,omitempty"`               // whether to enable file locking. If set to 'auto', only enable when Open File Descriptor (OFD) locking API is available (default: auto, since 2.10)
    Aio                *BlockdevAioOptions `json:"aio,omitempty"`                   // AIO backend (default: threads) (since: 2.8)
    AioMaxBatch        *int64              `json:"aio-max-batch,omitempty"`         // maximum number of requests to batch together into a single submission in the AIO backend. The smallest value between this and the aio-max-batch value of the IOThread object is chosen. 0 means that the AIO backend will handle it automatically. (default: 0, since 6.2)
    DropCache          *bool               `json:"drop-cache,omitempty"`            // invalidate page cache during live migration. This prevents stale data on the migration destination with cache.direct=off. Currently only supported on Linux hosts. (default: on, since: 4.0)
    XCheckCacheDropped *bool               `json:"x-check-cache-dropped,omitempty"` // whether to check that page cache was dropped on live migration. May cause noticeable delays if the image file is large, do not use in production. (default: off) (since: 3.0)
}

type BlockdevOptionsGenericCOWFormat

Driver specific block device options for image format that have no option besides their data source and an optional backing file.

Since: 2.9

type BlockdevOptionsGenericCOWFormat struct {
    // Base type for this struct
    BlockdevOptionsGenericFormat
    Backing *BlockdevRefOrNull `json:"backing,omitempty"` // reference to or definition of the backing file block device, null disables the backing file entirely. Defaults to the backing file stored the image file.
}

type BlockdevOptionsGenericFormat

Driver specific block device options for image format that have no option besides their data source.

Since: 2.9

type BlockdevOptionsGenericFormat struct {
    File BlockdevRef `json:"file"` // reference to or definition of the data source block device
}

type BlockdevOptionsGluster

Driver specific block device options for Gluster

Since: 2.9

type BlockdevOptionsGluster struct {
    Volume  string          `json:"volume"`            // name of gluster volume where VM image resides
    Path    string          `json:"path"`              // absolute path to image file in gluster volume
    Server  []SocketAddress `json:"server"`            // gluster servers description
    Debug   *int64          `json:"debug,omitempty"`   // libgfapi log level (default '4' which is Error) (Since 2.8)
    Logfile *string         `json:"logfile,omitempty"` // libgfapi log file (default /dev/stderr) (Since 2.8)
}

type BlockdevOptionsIscsi

None: Driver specific block device options for iscsi

Since: 2.9

type BlockdevOptionsIscsi struct {
    Transport      IscsiTransport     `json:"transport"`                 // The iscsi transport type
    Portal         string             `json:"portal"`                    // The address of the iscsi portal
    Target         string             `json:"target"`                    // The target iqn name
    Lun            *int64             `json:"lun,omitempty"`             // LUN to connect to. Defaults to 0.
    User           *string            `json:"user,omitempty"`            // User name to log in with. If omitted, no CHAP authentication is performed.
    PasswordSecret *string            `json:"password-secret,omitempty"` // The ID of a QCryptoSecret object providing the password for the login. This option is required if @user is specified.
    InitiatorName  *string            `json:"initiator-name,omitempty"`  // The iqn name we want to identify to the target as. If this option is not specified, an initiator name is generated automatically.
    HeaderDigest   *IscsiHeaderDigest `json:"header-digest,omitempty"`   // The desired header digest. Defaults to none-crc32c.
    Timeout        *int64             `json:"timeout,omitempty"`         // Timeout in seconds after which a request will timeout. 0 means no timeout and is the default.
}

type BlockdevOptionsLUKS

Driver specific block device options for LUKS.

Since: 2.9

type BlockdevOptionsLUKS struct {
    // Base type for this struct
    BlockdevOptionsGenericFormat
    KeySecret *string `json:"key-secret,omitempty"` // the ID of a QCryptoSecret object providing the decryption key (since 2.6). Mandatory except when doing a metadata-only probe of the image.
}

type BlockdevOptionsNVMe

Driver specific block device options for the NVMe backend.

None: Note that the PCI @device must have been unbound from any host kernel driver before instructing QEMU to add the blockdev.

Since: 2.12

type BlockdevOptionsNVMe struct {
    Device    string `json:"device"`    // PCI controller address of the NVMe device in format hhhh:bb:ss.f (host:bus:slot.function)
    Namespace int64  `json:"namespace"` // namespace number of the device, starting from 1.
}

type BlockdevOptionsNbd

Driver specific block device options for NBD.

Since: 2.9

type BlockdevOptionsNbd struct {
    Server         SocketAddress `json:"server"`                    // NBD server address
    Export         *string       `json:"export,omitempty"`          // export name
    TlsCreds       *string       `json:"tls-creds,omitempty"`       // TLS credentials ID
    TlsHostname    *string       `json:"tls-hostname,omitempty"`    // TLS hostname override for certificate validation (Since 7.0)
    XDirtyBitmap   *string       `json:"x-dirty-bitmap,omitempty"`  // A metadata context name such as "qemu:dirty-bitmap:NAME" or "qemu:allocation-depth" to query in place of the traditional "base:allocation" block status (see NBD_OPT_LIST_META_CONTEXT in the NBD protocol; and yes, naming this option x-context would have made more sense) (since 3.0)
    ReconnectDelay *uint32       `json:"reconnect-delay,omitempty"` // On an unexpected disconnect, the nbd client tries to connect again until succeeding or encountering a serious error. During the first @reconnect-delay seconds, all requests are paused and will be rerun on a successful reconnect. After that time, any delayed requests and all future requests before a successful reconnect will immediately fail. Default 0 (Since 4.2)
    OpenTimeout    *uint32       `json:"open-timeout,omitempty"`    // In seconds. If zero, the nbd driver tries the connection only once, and fails to open if the connection fails. If non-zero, the nbd driver will repeat connection attempts until successful or until @open-timeout seconds have elapsed. Default 0 (Since 7.0)
}

type BlockdevOptionsNfs

Driver specific block device option for NFS

Since: 2.9

type BlockdevOptionsNfs struct {
    Server        NFSServer `json:"server"`                    // host address
    Path          string    `json:"path"`                      // path of the image on the host
    User          *int64    `json:"user,omitempty"`            // UID value to use when talking to the server (defaults to 65534 on Windows and getuid() on unix)
    Group         *int64    `json:"group,omitempty"`           // GID value to use when talking to the server (defaults to 65534 on Windows and getgid() in unix)
    TcpSynCount   *int64    `json:"tcp-syn-count,omitempty"`   // number of SYNs during the session establishment (defaults to libnfs default)
    ReadaheadSize *int64    `json:"readahead-size,omitempty"`  // set the readahead size in bytes (defaults to libnfs default)
    PageCacheSize *int64    `json:"page-cache-size,omitempty"` // set the pagecache size in bytes (defaults to libnfs default)
    Debug         *int64    `json:"debug,omitempty"`           // set the NFS debug level (max 2) (defaults to libnfs default)
}

type BlockdevOptionsNull

Driver specific block device options for the null backend.

Since: 2.9

type BlockdevOptionsNull struct {
    Size       *int64  `json:"size,omitempty"`        // size of the device in bytes.
    LatencyNs  *uint64 `json:"latency-ns,omitempty"`  // emulated latency (in nanoseconds) in processing requests. Default to zero which completes requests immediately. (Since 2.4)
    ReadZeroes *bool   `json:"read-zeroes,omitempty"` // if true, reads from the device produce zeroes; if false, the buffer is left unchanged. (default: false; since: 4.1)
}

type BlockdevOptionsPreallocate

Filter driver intended to be inserted between format and protocol node and do preallocation in protocol node on write.

Since: 6.0

type BlockdevOptionsPreallocate struct {
    // Base type for this struct
    BlockdevOptionsGenericFormat
    PreallocAlign *int64 `json:"prealloc-align,omitempty"` // on preallocation, align file length to this number, default 1048576 (1M)
    PreallocSize  *int64 `json:"prealloc-size,omitempty"`  // how much to preallocate, default 134217728 (128M)
}

type BlockdevOptionsQcow

Driver specific block device options for qcow.

Since: 2.10

type BlockdevOptionsQcow struct {
    // Base type for this struct
    BlockdevOptionsGenericCOWFormat
    Encrypt *BlockdevQcowEncryption `json:"encrypt,omitempty"` // Image decryption options. Mandatory for encrypted images, except when doing a metadata-only probe of the image.
}

type BlockdevOptionsQcow2

Driver specific block device options for qcow2.

Since: 2.9

type BlockdevOptionsQcow2 struct {
    // Base type for this struct
    BlockdevOptionsGenericCOWFormat
    LazyRefcounts       *bool                    `json:"lazy-refcounts,omitempty"`        // whether to enable the lazy refcounts feature (default is taken from the image file)
    PassDiscardRequest  *bool                    `json:"pass-discard-request,omitempty"`  // whether discard requests to the qcow2 device should be forwarded to the data source
    PassDiscardSnapshot *bool                    `json:"pass-discard-snapshot,omitempty"` // whether discard requests for the data source should be issued when a snapshot operation (e.g. deleting a snapshot) frees clusters in the qcow2 file
    PassDiscardOther    *bool                    `json:"pass-discard-other,omitempty"`    // whether discard requests for the data source should be issued on other occasions where a cluster gets freed
    OverlapCheck        *Qcow2OverlapChecks      `json:"overlap-check,omitempty"`         // which overlap checks to perform for writes to the image, defaults to 'cached' (since 2.2)
    CacheSize           *int64                   `json:"cache-size,omitempty"`            // the maximum total size of the L2 table and refcount block caches in bytes (since 2.2)
    L2CacheSize         *int64                   `json:"l2-cache-size,omitempty"`         // the maximum size of the L2 table cache in bytes (since 2.2)
    L2CacheEntrySize    *int64                   `json:"l2-cache-entry-size,omitempty"`   // the size of each entry in the L2 cache in bytes. It must be a power of two between 512 and the cluster size. The default value is the cluster size (since 2.12)
    RefcountCacheSize   *int64                   `json:"refcount-cache-size,omitempty"`   // the maximum size of the refcount block cache in bytes (since 2.2)
    CacheCleanInterval  *int64                   `json:"cache-clean-interval,omitempty"`  // clean unused entries in the L2 and refcount caches. The interval is in seconds. The default value is 600 on supporting platforms, and 0 on other platforms. 0 disables this feature. (since 2.5)
    Encrypt             *BlockdevQcow2Encryption `json:"encrypt,omitempty"`               // Image decryption options. Mandatory for encrypted images, except when doing a metadata-only probe of the image. (since 2.10)
    DataFile            *BlockdevRef             `json:"data-file,omitempty"`             // reference to or definition of the external data file. This may only be specified for images that require an external data file. If it is not specified for such an image, the data file name is loaded from the image file. (since 4.0)
}

type BlockdevOptionsQuorum

Driver specific block device options for Quorum

Since: 2.9

type BlockdevOptionsQuorum struct {
    Blkverify        *bool              `json:"blkverify,omitempty"`         // true if the driver must print content mismatch set to false by default
    Children         []BlockdevRef      `json:"children"`                    // the children block devices to use
    VoteThreshold    int64              `json:"vote-threshold"`              // the vote limit under which a read will fail
    RewriteCorrupted *bool              `json:"rewrite-corrupted,omitempty"` // rewrite corrupted data when quorum is reached (Since 2.1)
    ReadPattern      *QuorumReadPattern `json:"read-pattern,omitempty"`      // choose read pattern and set to quorum by default (Since 2.2)
}

type BlockdevOptionsRaw

Driver specific block device options for the raw driver.

Since: 2.9

type BlockdevOptionsRaw struct {
    // Base type for this struct
    BlockdevOptionsGenericFormat
    Offset *int64 `json:"offset,omitempty"` // position where the block device starts
    Size   *int64 `json:"size,omitempty"`   // the assumed size of the device
}

type BlockdevOptionsRbd

Since: 2.9

type BlockdevOptionsRbd struct {
    Pool               string                  `json:"pool"`                           // Ceph pool name.
    Namespace          *string                 `json:"namespace,omitempty"`            // Rados namespace name in the Ceph pool. (Since 5.0)
    Image              string                  `json:"image"`                          // Image name in the Ceph pool.
    Conf               *string                 `json:"conf,omitempty"`                 // path to Ceph configuration file. Values in the configuration file will be overridden by options specified via QAPI.
    Snapshot           *string                 `json:"snapshot,omitempty"`             // Ceph snapshot name.
    Encrypt            *RbdEncryptionOptions   `json:"encrypt,omitempty"`              // Image encryption options. (Since 6.1)
    User               *string                 `json:"user,omitempty"`                 // Ceph id name.
    AuthClientRequired []RbdAuthMode           `json:"auth-client-required,omitempty"` // Acceptable authentication modes. This maps to Ceph configuration option "auth_client_required". (Since 3.0)
    KeySecret          *string                 `json:"key-secret,omitempty"`           // ID of a QCryptoSecret object providing a key for cephx authentication. This maps to Ceph configuration option "key". (Since 3.0)
    Server             []InetSocketAddressBase `json:"server,omitempty"`               // Monitor host address and port. This maps to the "mon_host" Ceph option.
}

type BlockdevOptionsReplication

Driver specific block device options for replication

Since: 2.9

type BlockdevOptionsReplication struct {
    // Base type for this struct
    BlockdevOptionsGenericFormat
    Mode  ReplicationMode `json:"mode"`             // the replication mode
    TopId *string         `json:"top-id,omitempty"` // In secondary mode, node name or device ID of the root node who owns the replication node chain. Must not be given in primary mode.
}

type BlockdevOptionsSsh

Since: 2.9

type BlockdevOptionsSsh struct {
    Server       InetSocketAddress `json:"server"`                   // host address
    Path         string            `json:"path"`                     // path to the image on the host
    User         *string           `json:"user,omitempty"`           // user as which to connect, defaults to current local user name
    HostKeyCheck *SshHostKeyCheck  `json:"host-key-check,omitempty"` // Defines how and what to check the host key against (default: known_hosts)
}

type BlockdevOptionsThrottle

Driver specific block device options for the throttle driver

Since: 2.11

type BlockdevOptionsThrottle struct {
    ThrottleGroup string      `json:"throttle-group"` // the name of the throttle-group object to use. It must already exist.
    File          BlockdevRef `json:"file"`           // reference to or definition of the data source block device
}

type BlockdevOptionsVVFAT

Driver specific block device options for the vvfat protocol.

Since: 2.9

type BlockdevOptionsVVFAT struct {
    Dir     string  `json:"dir"`                // directory to be exported as FAT image
    FatType *int64  `json:"fat-type,omitempty"` // FAT type: 12, 16 or 32
    Floppy  *bool   `json:"floppy,omitempty"`   // whether to export a floppy image (true) or partitioned hard disk (false; default)
    Label   *string `json:"label,omitempty"`    // set the volume label, limited to 11 bytes. FAT16 and FAT32 traditionally have some restrictions on labels, which are ignored by most operating systems. Defaults to "QEMU VVFAT". (since 2.4)
    Rw      *bool   `json:"rw,omitempty"`       // whether to allow write operations (default: false)
}

type BlockdevQcow2Encryption

Since: 2.10

type BlockdevQcow2Encryption struct {
    // Base type for this struct
    BlockdevQcow2EncryptionBase
    // Value based on @format, possible types:
    // * QCryptoBlockOptionsQCow
    // * QCryptoBlockOptionsLUKS
    Value Any
}

func (BlockdevQcow2Encryption) MarshalJSON

func (s BlockdevQcow2Encryption) MarshalJSON() ([]byte, error)

func (*BlockdevQcow2Encryption) UnmarshalJSON

func (s *BlockdevQcow2Encryption) UnmarshalJSON(data []byte) error

type BlockdevQcow2EncryptionBase

Since: 2.10

type BlockdevQcow2EncryptionBase struct {
    Format BlockdevQcow2EncryptionFormat `json:"format"`
}

type BlockdevQcow2EncryptionFormat

Since: 2.10

type BlockdevQcow2EncryptionFormat int32
const (
    BlockdevQcow2EncryptionFormatAes BlockdevQcow2EncryptionFormat = iota
    BlockdevQcow2EncryptionFormatLuks
)

func (BlockdevQcow2EncryptionFormat) MarshalJSON

func (s BlockdevQcow2EncryptionFormat) MarshalJSON() ([]byte, error)

func (*BlockdevQcow2EncryptionFormat) UnmarshalJSON

func (s *BlockdevQcow2EncryptionFormat) UnmarshalJSON(data []byte) error

type BlockdevQcow2Version

Since: 2.12

type BlockdevQcow2Version int32
const (
    BlockdevQcow2VersionV2 BlockdevQcow2Version = iota
    BlockdevQcow2VersionV3                      // The extended QCOW2 format as introduced in qemu 1.1 (version 3)
)

func (BlockdevQcow2Version) MarshalJSON

func (s BlockdevQcow2Version) MarshalJSON() ([]byte, error)

func (*BlockdevQcow2Version) UnmarshalJSON

func (s *BlockdevQcow2Version) UnmarshalJSON(data []byte) error

type BlockdevQcowEncryption

Since: 2.10

type BlockdevQcowEncryption struct {
    // Base type for this struct
    BlockdevQcowEncryptionBase
    // Value based on @format, possible types:
    // * QCryptoBlockOptionsQCow
    Value Any
}

func (BlockdevQcowEncryption) MarshalJSON

func (s BlockdevQcowEncryption) MarshalJSON() ([]byte, error)

func (*BlockdevQcowEncryption) UnmarshalJSON

func (s *BlockdevQcowEncryption) UnmarshalJSON(data []byte) error

type BlockdevQcowEncryptionBase

Since: 2.10

type BlockdevQcowEncryptionBase struct {
    Format BlockdevQcowEncryptionFormat `json:"format"`
}

type BlockdevQcowEncryptionFormat

Since: 2.10

type BlockdevQcowEncryptionFormat int32
const (
    BlockdevQcowEncryptionFormatAes BlockdevQcowEncryptionFormat = iota
)

func (BlockdevQcowEncryptionFormat) MarshalJSON

func (s BlockdevQcowEncryptionFormat) MarshalJSON() ([]byte, error)

func (*BlockdevQcowEncryptionFormat) UnmarshalJSON

func (s *BlockdevQcowEncryptionFormat) UnmarshalJSON(data []byte) error

type BlockdevRef

Reference to a block device.

Since: 2.9

type BlockdevRef struct {
    // Options are:
    // * definition (BlockdevOptions): defines a new block device inline
    // * reference (string): references the ID of an existing block device
    Value Any
}

func (BlockdevRef) MarshalJSON

func (s BlockdevRef) MarshalJSON() ([]byte, error)

func (*BlockdevRef) UnmarshalJSON

func (s *BlockdevRef) UnmarshalJSON(data []byte) error

type BlockdevRefOrNull

Reference to a block device.

Since: 2.9

type BlockdevRefOrNull struct {
    // Options are:
    // * definition (BlockdevOptions): defines a new block device inline
    // * reference (string): references the ID of an existing block device. An empty string means that no block device should be referenced. Deprecated; use null instead.
    // * null (nil): No block device should be referenced (since 2.10)
    Value Any
}

func (BlockdevRefOrNull) MarshalJSON

func (s BlockdevRefOrNull) MarshalJSON() ([]byte, error)

func (*BlockdevRefOrNull) UnmarshalJSON

func (s *BlockdevRefOrNull) UnmarshalJSON(data []byte) error

type BlockdevRemoveMediumCommand

Removes a medium (a block driver state tree) from a block device. That block device's tray must currently be open (unless there is no attached guest device).

If the tray is open and there is no medium inserted, this will be a no-op.

Since: 2.12

Example: -> { "execute": "blockdev-remove-medium",

"arguments": { "id": "ide0-1-0" } }

<- { "error": { "class": "GenericError",

"desc": "Tray of device 'ide0-1-0' is not open" } }

-> { "execute": "blockdev-open-tray",

"arguments": { "id": "ide0-1-0" } }

<- { "timestamp": { "seconds": 1418751627,

               "microseconds": 549958 },
"event": "DEVICE_TRAY_MOVED",
"data": { "device": "ide1-cd0",
          "id": "ide0-1-0",
          "tray-open": true } }

<- { "return": {} }

-> { "execute": "blockdev-remove-medium",

"arguments": { "id": "ide0-1-0" } }

<- { "return": {} }

type BlockdevRemoveMediumCommand struct {
    Id string `json:"id"` // The name or QOM path of the guest device
}

type BlockdevReopenCommand

Reopens one or more block devices using the given set of options. Any option not specified will be reset to its default value regardless of its previous status. If an option cannot be changed or a particular driver does not support reopening then the command will return an error. All devices in the list are reopened in one transaction, so if one of them fails then the whole transaction is cancelled.

The command receives a list of block devices to reopen. For each one of them, the top-level @node-name option (from BlockdevOptions) must be specified and is used to select the block device to be reopened. Other @node-name options must be either omitted or set to the current name of the appropriate node. This command won't change any node name and any attempt to do it will result in an error.

In the case of options that refer to child nodes, the behavior of this command depends on the value:

1) A set of options (BlockdevOptions): the child is reopened with
   the specified set of options.

2) A reference to the current child: the child is reopened using
   its existing set of options.

3) A reference to a different node: the current child is replaced
   with the specified one.

4) NULL: the current child (if any) is detached.

Options (1) and (2) are supported in all cases. Option (3) is supported for @file and @backing, and option (4) for @backing only.

Unlike with blockdev-add, the @backing option must always be present unless the node being reopened does not have a backing file and its image does not have a default backing file name as part of its metadata.

Since: 6.1

type BlockdevReopenCommand struct {
    Options []BlockdevOptions `json:"options"`
}

type BlockdevSnapshot

Since: 2.5

type BlockdevSnapshot struct {
    Node    string `json:"node"`    // device or node name that will have a snapshot taken.
    Overlay string `json:"overlay"` // reference to the existing block device that will become the overlay of @node, as part of taking the snapshot. It must not have a current backing file (this can be achieved by passing "backing": null to blockdev-add).
}

type BlockdevSnapshotCommand

Takes a snapshot of a block device.

Take a snapshot, by installing 'node' as the backing image of 'overlay'. Additionally, if 'node' is associated with a block device, the block device changes to using 'overlay' as its new active image.

For the arguments, see the documentation of BlockdevSnapshot.

Since: 2.5

Example: -> { "execute": "blockdev-add",

"arguments": { "driver": "qcow2",
               "node-name": "node1534",
               "file": { "driver": "file",
                         "filename": "hd1.qcow2" },
               "backing": null } }

<- { "return": {} }

-> { "execute": "blockdev-snapshot",

"arguments": { "node": "ide-hd0",
               "overlay": "node1534" } }

<- { "return": {} }

type BlockdevSnapshotCommand struct {
    BlockdevSnapshot
}

type BlockdevSnapshotDeleteInternalSyncCommand

Synchronously delete an internal snapshot of a block device, when the format of the image used support it. The snapshot is identified by name or id or both. One of the name or id is required. Return SnapshotInfo for the successfully deleted snapshot.

Returns: - SnapshotInfo on success - If @device is not a valid block device, GenericError - If snapshot not found, GenericError - If the format of the image used does not support it,

BlockFormatFeatureNotSupported

- If @id and @name are both not specified, GenericError

Since: 1.7

Example: -> { "execute": "blockdev-snapshot-delete-internal-sync",

  "arguments": { "device": "ide-hd0",
                 "name": "snapshot0" }
}

<- { "return": {

                "id": "1",
                "name": "snapshot0",
                "vm-state-size": 0,
                "date-sec": 1000012,
                "date-nsec": 10,
                "vm-clock-sec": 100,
                "vm-clock-nsec": 20,
                "icount": 220414
  }
}
type BlockdevSnapshotDeleteInternalSyncCommand struct {
    Device string  `json:"device"`         // the device name or node-name of a root node to delete the snapshot from
    Id     *string `json:"id,omitempty"`   // optional the snapshot's ID to be deleted
    Name   *string `json:"name,omitempty"` // optional the snapshot's name to be deleted
}

type BlockdevSnapshotInternal

Notes: In transaction, if @name is empty, or any snapshot matching @name exists, the operation will fail. Only some image formats support it, for example, qcow2, and rbd.

Since: 1.7

type BlockdevSnapshotInternal struct {
    Device string `json:"device"` // the device name or node-name of a root node to generate the snapshot from
    Name   string `json:"name"`   // the name of the internal snapshot to be created
}

type BlockdevSnapshotInternalSyncCommand

Synchronously take an internal snapshot of a block device, when the format of the image used supports it. If the name is an empty string, or a snapshot with name already exists, the operation will fail.

For the arguments, see the documentation of BlockdevSnapshotInternal.

Returns: - nothing on success - If @device is not a valid block device, GenericError - If any snapshot matching @name exists, or @name is empty,

GenericError

- If the format of the image used does not support it,

BlockFormatFeatureNotSupported

Since: 1.7

Example: -> { "execute": "blockdev-snapshot-internal-sync",

  "arguments": { "device": "ide-hd0",
                 "name": "snapshot0" }
}

<- { "return": {} }

type BlockdevSnapshotInternalSyncCommand struct {
    BlockdevSnapshotInternal
}

type BlockdevSnapshotInternalWrapper

Since: 1.7

type BlockdevSnapshotInternalWrapper struct {
    Data BlockdevSnapshotInternal `json:"data"`
}

type BlockdevSnapshotSync

Either @device or @node-name must be set but not both.

type BlockdevSnapshotSync struct {
    Device           *string       `json:"device,omitempty"`             // the name of the device to take a snapshot of.
    NodeName         *string       `json:"node-name,omitempty"`          // graph node name to generate the snapshot from (Since 2.0)
    SnapshotFile     string        `json:"snapshot-file"`                // the target of the new overlay image. If the file exists, or if it is a device, the overlay will be created in the existing file/device. Otherwise, a new file will be created.
    SnapshotNodeName *string       `json:"snapshot-node-name,omitempty"` // the graph node name of the new image (Since 2.0)
    Format           *string       `json:"format,omitempty"`             // the format of the overlay image, default is 'qcow2'.
    Mode             *NewImageMode `json:"mode,omitempty"`               // whether and how QEMU should create a new image, default is 'absolute-paths'.
}

type BlockdevSnapshotSyncCommand

Takes a synchronous snapshot of a block device.

For the arguments, see the documentation of BlockdevSnapshotSync.

Returns: - nothing on success - If @device is not a valid block device, DeviceNotFound

Since: 0.14

Example: -> { "execute": "blockdev-snapshot-sync",

"arguments": { "device": "ide-hd0",
               "snapshot-file":
               "/some/place/my-image",
               "format": "qcow2" } }

<- { "return": {} }

type BlockdevSnapshotSyncCommand struct {
    BlockdevSnapshotSync
}

type BlockdevSnapshotSyncWrapper

Since: 1.1

type BlockdevSnapshotSyncWrapper struct {
    Data BlockdevSnapshotSync `json:"data"`
}

type BlockdevSnapshotWrapper

Since: 2.5

type BlockdevSnapshotWrapper struct {
    Data BlockdevSnapshot `json:"data"`
}

type BlockdevVhdxSubformat

Since: 2.12

type BlockdevVhdxSubformat int32
const (
    BlockdevVhdxSubformatDynamic BlockdevVhdxSubformat = iota
    BlockdevVhdxSubformatFixed                         // Preallocated fixed-size image file
)

func (BlockdevVhdxSubformat) MarshalJSON

func (s BlockdevVhdxSubformat) MarshalJSON() ([]byte, error)

func (*BlockdevVhdxSubformat) UnmarshalJSON

func (s *BlockdevVhdxSubformat) UnmarshalJSON(data []byte) error

type BlockdevVmdkAdapterType

Adapter type info for VMDK images

Since: 4.0

type BlockdevVmdkAdapterType int32
const (
    BlockdevVmdkAdapterTypeIde BlockdevVmdkAdapterType = iota
    BlockdevVmdkAdapterTypeBuslogic
    BlockdevVmdkAdapterTypeLsilogic
    BlockdevVmdkAdapterTypeLegacyesx
)

func (BlockdevVmdkAdapterType) MarshalJSON

func (s BlockdevVmdkAdapterType) MarshalJSON() ([]byte, error)

func (*BlockdevVmdkAdapterType) UnmarshalJSON

func (s *BlockdevVmdkAdapterType) UnmarshalJSON(data []byte) error

type BlockdevVmdkSubformat

Subformat options for VMDK images

Since: 4.0

type BlockdevVmdkSubformat int32
const (
    BlockdevVmdkSubformatMonolithicsparse     BlockdevVmdkSubformat = iota
    BlockdevVmdkSubformatMonolithicflat                             // Single flat data image and a descriptor file
    BlockdevVmdkSubformatTwogbmaxextentsparse                       // Data is split into 2GB (per virtual LBA) sparse extent files, in addition to a descriptor file
    BlockdevVmdkSubformatTwogbmaxextentflat                         // Data is split into 2GB (per virtual LBA) flat extent files, in addition to a descriptor file
    BlockdevVmdkSubformatStreamoptimized                            // Single file image sparse cluster allocation, optimized for streaming over network.
)

func (BlockdevVmdkSubformat) MarshalJSON

func (s BlockdevVmdkSubformat) MarshalJSON() ([]byte, error)

func (*BlockdevVmdkSubformat) UnmarshalJSON

func (s *BlockdevVmdkSubformat) UnmarshalJSON(data []byte) error

type BlockdevVpcSubformat

Since: 2.12

type BlockdevVpcSubformat int32
const (
    BlockdevVpcSubformatDynamic BlockdevVpcSubformat = iota
    BlockdevVpcSubformatFixed                        // Preallocated fixed-size image file
)

func (BlockdevVpcSubformat) MarshalJSON

func (s BlockdevVpcSubformat) MarshalJSON() ([]byte, error)

func (*BlockdevVpcSubformat) UnmarshalJSON

func (s *BlockdevVpcSubformat) UnmarshalJSON(data []byte) error

type COLOExitReason

The reason for a COLO exit.

Since: 3.1

type COLOExitReason int32
const (
    COLOExitReasonNone       COLOExitReason = iota
    COLOExitReasonRequest                   // COLO exit is due to an external request.
    COLOExitReasonError                     // COLO exit is due to an internal error.
    COLOExitReasonProcessing                // COLO is currently handling a failover (since 4.0).
)

func (COLOExitReason) MarshalJSON

func (s COLOExitReason) MarshalJSON() ([]byte, error)

func (*COLOExitReason) UnmarshalJSON

func (s *COLOExitReason) UnmarshalJSON(data []byte) error

type COLOMessage

The message transmission between Primary side and Secondary side.

Since: 2.8

type COLOMessage int32
const (
    COLOMessageCheckpointReady   COLOMessage = iota
    COLOMessageCheckpointRequest             // Primary VM (PVM) tells SVM to prepare for checkpointing
    COLOMessageCheckpointReply               // SVM gets PVM's checkpoint request
    COLOMessageVmstateSend                   // VM's state will be sent by PVM.
    COLOMessageVmstateSize                   // The total size of VMstate.
    COLOMessageVmstateReceived               // VM's state has been received by SVM.
    COLOMessageVmstateLoaded                 // VM's state has been loaded by SVM.
)

func (COLOMessage) MarshalJSON

func (s COLOMessage) MarshalJSON() ([]byte, error)

func (*COLOMessage) UnmarshalJSON

func (s *COLOMessage) UnmarshalJSON(data []byte) error

type COLOMode

The COLO current mode.

Since: 2.8

type COLOMode int32
const (
    COLOModeNone      COLOMode = iota
    COLOModePrimary            // COLO node in primary side.
    COLOModeSecondary          // COLO node in slave side.
)

func (COLOMode) MarshalJSON

func (s COLOMode) MarshalJSON() ([]byte, error)

func (*COLOMode) UnmarshalJSON

func (s *COLOMode) UnmarshalJSON(data []byte) error

type COLOStatus

The result format for 'query-colo-status'.

Since: 3.1

type COLOStatus struct {
    Mode     COLOMode       `json:"mode"`      // COLO running mode. If COLO is running, this field will return 'primary' or 'secondary'.
    LastMode COLOMode       `json:"last-mode"` // COLO last running mode. If COLO is running, this field will return same like mode field, after failover we can use this field to get last colo mode. (since 4.0)
    Reason   COLOExitReason `json:"reason"`    // describes the reason for the COLO exit.
}

type CalcDirtyRateCommand

start calculating dirty page rate for vm

Since: 5.2

Example: {"command": "calc-dirty-rate", "arguments": {"calc-time": 1,

'sample-pages': 512} }
type CalcDirtyRateCommand struct {
    CalcTime    int64                 `json:"calc-time"`              // time in units of second for sample dirty pages
    SamplePages *int64                `json:"sample-pages,omitempty"` // page count per GB for sample dirty pages the default value is 512 (since 6.1)
    Mode        *DirtyRateMeasureMode `json:"mode,omitempty"`         // mechanism of calculating dirtyrate includes 'page-sampling' and 'dirty-ring' (Since 6.1)
}

type CanHostSocketcanProperties

Properties for can-host-socketcan objects.

Since: 2.12

type CanHostSocketcanProperties struct {
    If     string `json:"if"`     // interface name of the host system CAN bus to connect to
    Canbus string `json:"canbus"` // object ID of the can-bus object to connect to the host interface
}

type ChangeBackingFileCommand

Change the backing file in the image file metadata. This does not cause QEMU to reopen the image file to reparse the backing filename (it may, however, perform a reopen to change permissions from r/o -> r/w -> r/o, if needed). The new backing file string is written into the image file metadata, and the QEMU internal strings are updated.

Returns: - Nothing on success - If "device" does not exist or cannot be determined, DeviceNotFound

Since: 2.1

type ChangeBackingFileCommand struct {
    Device        string `json:"device"`          // The device name or node-name of the root node that owns image-node-name.
    ImageNodeName string `json:"image-node-name"` // The name of the block driver state node of the image to modify. The "device" argument is used to verify "image-node-name" is in the chain described by "device".
    BackingFile   string `json:"backing-file"`    // The string to write as the backing file. This string is not validated, so care should be taken when specifying the string or the image chain may not be able to be reopened again.
}

type ChangeVncPasswordCommand

Change the VNC server password.

Since: 1.1

Notes: An empty password in this command will set the password to the empty string. Existing clients are unaffected by executing this command.

type ChangeVncPasswordCommand struct {
    Password string `json:"password"` // the new password to use with VNC authentication
}

type ChardevAddCommand

Add a character device backend

Returns: ChardevReturn.

Since: 1.4

Example: -> { "execute" : "chardev-add",

"arguments" : { "id" : "foo",
                "backend" : { "type" : "null", "data" : {} } } }

<- { "return": {} }

-> { "execute" : "chardev-add",

"arguments" : { "id" : "bar",
                "backend" : { "type" : "file",
                              "data" : { "out" : "/tmp/bar.log" } } } }

<- { "return": {} }

-> { "execute" : "chardev-add",

"arguments" : { "id" : "baz",
                "backend" : { "type" : "pty", "data" : {} } } }

<- { "return": { "pty" : "/dev/pty/42" } }

type ChardevAddCommand struct {
    Id      string         `json:"id"`      // the chardev's ID, must be unique
    Backend ChardevBackend `json:"backend"` // backend type and parameters
}

type ChardevBackend

Configuration info for the new chardev backend.

Since: 1.4

type ChardevBackend struct {
    // Base type for this struct
    ChardevBackendBase
    // Value based on @type, possible types:
    // * ChardevFileWrapper
    // * ChardevHostdevWrapper
    // * ChardevHostdevWrapper
    // * ChardevHostdevWrapper
    // * ChardevSocketWrapper
    // * ChardevUdpWrapper
    // * ChardevCommonWrapper
    // * ChardevCommonWrapper
    // * ChardevMuxWrapper
    // * ChardevCommonWrapper
    // * ChardevCommonWrapper
    // * ChardevCommonWrapper
    // * ChardevCommonWrapper
    // * ChardevStdioWrapper
    // * ChardevCommonWrapper
    // * ChardevSpiceChannelWrapper
    // * ChardevSpicePortWrapper
    // * ChardevQemuVDAgentWrapper
    // * ChardevDBusWrapper
    // * ChardevVCWrapper
    // * ChardevRingbufWrapper
    // * ChardevRingbufWrapper
    Value Any
}

func (ChardevBackend) MarshalJSON

func (s ChardevBackend) MarshalJSON() ([]byte, error)

func (*ChardevBackend) UnmarshalJSON

func (s *ChardevBackend) UnmarshalJSON(data []byte) error

type ChardevBackendBase

Configuration info for the new chardev backend.

Since: 1.4

type ChardevBackendBase struct {
    Type ChardevBackendKind `json:"type"`
}

type ChardevBackendInfo

Information about a character device backend

Since: 2.0

type ChardevBackendInfo struct {
    Name string `json:"name"` // The backend name
}

type ChardevBackendKind

Since: 1.4

type ChardevBackendKind int32
const (
    ChardevBackendKindFile ChardevBackendKind = iota
    ChardevBackendKindSerial
    ChardevBackendKindParallel
    ChardevBackendKindPipe // Since 1.5
    ChardevBackendKindSocket
    ChardevBackendKindUdp // Since 1.5
    ChardevBackendKindPty
    ChardevBackendKindNull
    ChardevBackendKindMux         // Since 1.5
    ChardevBackendKindMsmouse     // Since 1.5
    ChardevBackendKindWctablet    // Since 2.9
    ChardevBackendKindBraille     // Since 1.5
    ChardevBackendKindTestdev     // Since 2.2
    ChardevBackendKindStdio       // Since 1.5
    ChardevBackendKindConsole     // Since 1.5
    ChardevBackendKindSpicevmc    // Since 1.5
    ChardevBackendKindSpiceport   // Since 1.5
    ChardevBackendKindQemuVdagent // Since 6.1
    ChardevBackendKindDbus        // Since 7.0
    ChardevBackendKindVc          // v1.5
    ChardevBackendKindRingbuf     // Since 1.6
    ChardevBackendKindMemory      // Since 1.5
)

func (ChardevBackendKind) MarshalJSON

func (s ChardevBackendKind) MarshalJSON() ([]byte, error)

func (*ChardevBackendKind) UnmarshalJSON

func (s *ChardevBackendKind) UnmarshalJSON(data []byte) error

type ChardevChangeCommand

Change a character device backend

Returns: ChardevReturn.

Since: 2.10

Example: -> { "execute" : "chardev-change",

"arguments" : { "id" : "baz",
                "backend" : { "type" : "pty", "data" : {} } } }

<- { "return": { "pty" : "/dev/pty/42" } }

-> {"execute" : "chardev-change",

"arguments" : {
    "id" : "charchannel2",
    "backend" : {
        "type" : "socket",
        "data" : {
            "addr" : {
                "type" : "unix" ,
                "data" : {
                    "path" : "/tmp/charchannel2.socket"
                }
             },
             "server" : true,
             "wait" : false }}}}

<- {"return": {}}

type ChardevChangeCommand struct {
    Id      string         `json:"id"`      // the chardev's ID, must exist
    Backend ChardevBackend `json:"backend"` // new backend type and parameters
}

type ChardevCommon

Configuration shared across all chardev backends

Since: 2.6

type ChardevCommon struct {
    Logfile   *string `json:"logfile,omitempty"`   // The name of a logfile to save output
    Logappend *bool   `json:"logappend,omitempty"` // true to append instead of truncate (default to false to truncate)
}

type ChardevCommonWrapper

Since: 2.6

type ChardevCommonWrapper struct {
    Data ChardevCommon `json:"data"`
}

type ChardevDBus

Configuration info for DBus chardevs.

Since: 7.0

type ChardevDBus struct {
    // Base type for this struct
    ChardevCommon
    Name string `json:"name"` // name of the channel (following docs/spice-port-fqdn.txt)
}

type ChardevDBusWrapper

Since: 7.0

type ChardevDBusWrapper struct {
    Data ChardevDBus `json:"data"`
}

type ChardevFile

Configuration info for file chardevs.

Since: 1.4

type ChardevFile struct {
    // Base type for this struct
    ChardevCommon
    In     *string `json:"in,omitempty"`     // The name of the input file
    Out    string  `json:"out"`              // The name of the output file
    Append *bool   `json:"append,omitempty"` // Open the file in append mode (default false to truncate) (Since 2.6)
}

type ChardevFileWrapper

Since: 1.4

type ChardevFileWrapper struct {
    Data ChardevFile `json:"data"`
}

type ChardevHostdev

Configuration info for device and pipe chardevs.

Since: 1.4

type ChardevHostdev struct {
    // Base type for this struct
    ChardevCommon
    Device string `json:"device"` // The name of the special file for the device, i.e. /dev/ttyS0 on Unix or COM1: on Windows
}

type ChardevHostdevWrapper

Since: 1.4

type ChardevHostdevWrapper struct {
    Data ChardevHostdev `json:"data"`
}

type ChardevInfo

Information about a character device.

Notes: @filename is encoded using the QEMU command line character device encoding. See the QEMU man page for details.

Since: 0.14

type ChardevInfo struct {
    Label        string `json:"label"`         // the label of the character device
    Filename     string `json:"filename"`      // the filename of the character device
    FrontendOpen bool   `json:"frontend-open"` // shows whether the frontend device attached to this backend (eg. with the chardev=... option) is in open or closed state (since 2.1)
}

type ChardevMux

Configuration info for mux chardevs.

Since: 1.5

type ChardevMux struct {
    // Base type for this struct
    ChardevCommon
    Chardev string `json:"chardev"` // name of the base chardev.
}

type ChardevMuxWrapper

Since: 1.5

type ChardevMuxWrapper struct {
    Data ChardevMux `json:"data"`
}

type ChardevQemuVDAgent

Configuration info for qemu vdagent implementation.

Since: 6.1

type ChardevQemuVDAgent struct {
    // Base type for this struct
    ChardevCommon
    Mouse     *bool `json:"mouse,omitempty"`     // enable/disable mouse, default is enabled.
    Clipboard *bool `json:"clipboard,omitempty"` // enable/disable clipboard, default is disabled.
}

type ChardevQemuVDAgentWrapper

Since: 6.1

type ChardevQemuVDAgentWrapper struct {
    Data ChardevQemuVDAgent `json:"data"`
}

type ChardevRemoveCommand

Remove a character device backend

Returns: Nothing on success

Since: 1.4

Example: -> { "execute": "chardev-remove", "arguments": { "id" : "foo" } } <- { "return": {} }

type ChardevRemoveCommand struct {
    Id string `json:"id"` // the chardev's ID, must exist and not be in use
}

type ChardevReturn

Return info about the chardev backend just created.

Since: 1.4

type ChardevReturn struct {
    Pty *string `json:"pty,omitempty"` // name of the slave pseudoterminal device, present if and only if a chardev of type 'pty' was created
}

type ChardevRingbuf

Configuration info for ring buffer chardevs.

Since: 1.5

type ChardevRingbuf struct {
    // Base type for this struct
    ChardevCommon
    Size *int64 `json:"size,omitempty"` // ring buffer size, must be power of two, default is 65536
}

type ChardevRingbufWrapper

Since: 1.5

type ChardevRingbufWrapper struct {
    Data ChardevRingbuf `json:"data"`
}

type ChardevSendBreakCommand

Send a break to a character device

Returns: Nothing on success

Since: 2.10

Example: -> { "execute": "chardev-send-break", "arguments": { "id" : "foo" } } <- { "return": {} }

type ChardevSendBreakCommand struct {
    Id string `json:"id"` // the chardev's ID, must exist
}

type ChardevSocket

Configuration info for (stream) socket chardevs.

Since: 1.4

type ChardevSocket struct {
    // Base type for this struct
    ChardevCommon
    Addr      SocketAddressLegacy `json:"addr"`                // socket address to listen on (server=true) or connect to (server=false)
    TlsCreds  *string             `json:"tls-creds,omitempty"` // the ID of the TLS credentials object (since 2.6)
    TlsAuthz  *string             `json:"tls-authz,omitempty"` // the ID of the QAuthZ authorization object against which the client's x509 distinguished name will be validated. This object is only resolved at time of use, so can be deleted and recreated on the fly while the chardev server is active. If missing, it will default to denying access (since 4.0)
    Server    *bool               `json:"server,omitempty"`    // create server socket (default: true)
    Wait      *bool               `json:"wait,omitempty"`      // wait for incoming connection on server sockets (default: false). Silently ignored with server: false. This use is deprecated.
    Nodelay   *bool               `json:"nodelay,omitempty"`   // set TCP_NODELAY socket option (default: false)
    Telnet    *bool               `json:"telnet,omitempty"`    // enable telnet protocol on server sockets (default: false)
    Tn3270    *bool               `json:"tn3270,omitempty"`    // enable tn3270 protocol on server sockets (default: false) (Since: 2.10)
    Websocket *bool               `json:"websocket,omitempty"` // enable websocket protocol on server sockets (default: false) (Since: 3.1)
    Reconnect *int64              `json:"reconnect,omitempty"` // For a client socket, if a socket is disconnected, then attempt a reconnect after the given number of seconds. Setting this to zero disables this function. (default: 0) (Since: 2.2)
}

type ChardevSocketWrapper

Since: 1.4

type ChardevSocketWrapper struct {
    Data ChardevSocket `json:"data"`
}

type ChardevSpiceChannel

Configuration info for spice vm channel chardevs.

Since: 1.5

type ChardevSpiceChannel struct {
    // Base type for this struct
    ChardevCommon
    Type string `json:"type"` // kind of channel (for example vdagent).
}

type ChardevSpiceChannelWrapper

Since: 1.5

type ChardevSpiceChannelWrapper struct {
    Data ChardevSpiceChannel `json:"data"`
}

type ChardevSpicePort

Configuration info for spice port chardevs.

Since: 1.5

type ChardevSpicePort struct {
    // Base type for this struct
    ChardevCommon
    Fqdn string `json:"fqdn"` // name of the channel (see docs/spice-port-fqdn.txt)
}

type ChardevSpicePortWrapper

Since: 1.5

type ChardevSpicePortWrapper struct {
    Data ChardevSpicePort `json:"data"`
}

type ChardevStdio

Configuration info for stdio chardevs.

Since: 1.5

type ChardevStdio struct {
    // Base type for this struct
    ChardevCommon
    Signal *bool `json:"signal,omitempty"` // Allow signals (such as SIGINT triggered by ^C) be delivered to qemu. Default: true.
}

type ChardevStdioWrapper

Since: 1.5

type ChardevStdioWrapper struct {
    Data ChardevStdio `json:"data"`
}

type ChardevUdp

Configuration info for datagram socket chardevs.

Since: 1.5

type ChardevUdp struct {
    // Base type for this struct
    ChardevCommon
    Remote SocketAddressLegacy  `json:"remote"`          // remote address
    Local  *SocketAddressLegacy `json:"local,omitempty"` // local address
}

type ChardevUdpWrapper

Since: 1.5

type ChardevUdpWrapper struct {
    Data ChardevUdp `json:"data"`
}

type ChardevVC

Configuration info for virtual console chardevs.

Since: 1.5

type ChardevVC struct {
    // Base type for this struct
    ChardevCommon
    Width  *int64 `json:"width,omitempty"`  // console width, in pixels
    Height *int64 `json:"height,omitempty"` // console height, in pixels
    Cols   *int64 `json:"cols,omitempty"`   // console width, in chars
    Rows   *int64 `json:"rows,omitempty"`   // console height, in chars
}

type ChardevVCWrapper

Since: 1.5

type ChardevVCWrapper struct {
    Data ChardevVC `json:"data"`
}

type ClientMigrateInfoCommand

Set migration information for remote display. This makes the server ask the client to automatically reconnect using the new parameters once migration finished successfully. Only implemented for SPICE.

Since: 0.14

Example: -> { "execute": "client_migrate_info",

"arguments": { "protocol": "spice",
               "hostname": "virt42.lab.kraxel.org",
               "port": 1234 } }

<- { "return": {} }

type ClientMigrateInfoCommand struct {
    Protocol    string  `json:"protocol"`               // must be "spice"
    Hostname    string  `json:"hostname"`               // migration target hostname
    Port        *int64  `json:"port,omitempty"`         // spice tcp port for plaintext channels
    TlsPort     *int64  `json:"tls-port,omitempty"`     // spice tcp port for tls-secured channels
    CertSubject *string `json:"cert-subject,omitempty"` // server certificate subject
}

type ClosefdCommand

Close a file descriptor previously passed via SCM rights

Returns: Nothing on success

Since: 0.14

Example: -> { "execute": "closefd", "arguments": { "fdname": "fd1" } } <- { "return": {} }

type ClosefdCommand struct {
    Fdname string `json:"fdname"` // file descriptor name
}

type ColoCompareProperties

Properties for colo-compare objects.

Since: 2.8

type ColoCompareProperties struct {
    PrimaryIn        string  `json:"primary_in"`                   // name of the character device backend to use for the primary input (incoming packets are redirected to @outdev)
    SecondaryIn      string  `json:"secondary_in"`                 // name of the character device backend to use for secondary input (incoming packets are only compared to the input on @primary_in and then dropped)
    Outdev           string  `json:"outdev"`                       // name of the character device backend to use for output
    Iothread         string  `json:"iothread"`                     // name of the iothread to run in
    NotifyDev        *string `json:"notify_dev,omitempty"`         // name of the character device backend to be used to communicate with the remote colo-frame (only for Xen COLO)
    CompareTimeout   *uint64 `json:"compare_timeout,omitempty"`    // the maximum time to hold a packet from @primary_in for comparison with an incoming packet on @secondary_in in milliseconds (default: 3000)
    ExpiredScanCycle *uint32 `json:"expired_scan_cycle,omitempty"` // the interval at which colo-compare checks whether packets from @primary have timed out, in milliseconds (default: 3000)
    MaxQueueSize     *uint32 `json:"max_queue_size,omitempty"`     // the maximum number of packets to keep in the queue for comparing with incoming packets from @secondary_in. If the queue is full and additional packets are received, the additional packets are dropped. (default: 1024)
    VnetHdrSupport   *bool   `json:"vnet_hdr_support,omitempty"`   // if true, vnet header support is enabled (default: false)
}

type ColoExitEvent

Emitted when VM finishes COLO mode due to some errors happening or at the request of users.

Since: 3.1

Example: <- { "timestamp": {"seconds": 2032141960, "microseconds": 417172},

"event": "COLO_EXIT", "data": {"mode": "primary", "reason": "request" } }
type ColoExitEvent struct {
    Mode   COLOMode       `json:"mode"`   // report COLO mode when COLO exited.
    Reason COLOExitReason `json:"reason"` // describes the reason for the COLO exit.
}

type Command

type Command struct {
    CommandBase
    Arg Any `json:"arguments,omitempty"`
}

func (Command) GetReturnType

func (s Command) GetReturnType() CommandResult

func (*Command) UnmarshalJSON

func (s *Command) UnmarshalJSON(data []byte) error

type CommandBase

type CommandBase struct {
    Name string `json:"execute"`
}

type CommandInfo

Information about a QMP command

Since: 0.14

type CommandInfo struct {
    Name string `json:"name"` // The command name
}

type CommandLineOptionInfo

Details about a command line option, including its list of parameter details

Since: 1.5

type CommandLineOptionInfo struct {
    Option     string                     `json:"option"`     // option name
    Parameters []CommandLineParameterInfo `json:"parameters"` // an array of @CommandLineParameterInfo
}

type CommandLineParameterInfo

Details about a single parameter of a command line option.

Since: 1.5

type CommandLineParameterInfo struct {
    Name    string                   `json:"name"`              // parameter name
    Type    CommandLineParameterType `json:"type"`              // parameter @CommandLineParameterType
    Help    *string                  `json:"help,omitempty"`    // human readable text string, not suitable for parsing.
    Default *string                  `json:"default,omitempty"` // default value string (since 2.1)
}

type CommandLineParameterType

Possible types for an option parameter.

Since: 1.5

type CommandLineParameterType int32
const (
    CommandLineParameterTypeString  CommandLineParameterType = iota
    CommandLineParameterTypeBoolean                          // accepts "on" or "off"
    CommandLineParameterTypeNumber                           // accepts a number
    CommandLineParameterTypeSize                             // accepts a number followed by an optional suffix (K)ilo, (M)ega, (G)iga, (T)era
)

func (CommandLineParameterType) MarshalJSON

func (s CommandLineParameterType) MarshalJSON() ([]byte, error)

func (*CommandLineParameterType) UnmarshalJSON

func (s *CommandLineParameterType) UnmarshalJSON(data []byte) error

type CommandResult

type CommandResult struct {
    CommandBase `json:"-"`
    Value       Any `json:"return,omitempty"`
}

func (*CommandResult) MarshalJSON

func (s *CommandResult) MarshalJSON() ([]byte, error)

In order to evaluate nil value to empty JSON object

func (*CommandResult) UnmarshalJSON

func (s *CommandResult) UnmarshalJSON(data []byte) error

type CompatPolicy

Policy for handling deprecated management interfaces.

This is intended for testing users of the management interfaces.

Limitation: covers only syntactic aspects of QMP, i.e. stuff tagged with feature 'deprecated'. We may want to extend it to cover semantic aspects and CLI.

Limitation: deprecated-output policy @hide is not implemented for enumeration values. They behave the same as with policy @accept.

Since: 6.0

type CompatPolicy struct {
    DeprecatedInput  *CompatPolicyInput  `json:"deprecated-input,omitempty"`  // how to handle deprecated input (default 'accept')
    DeprecatedOutput *CompatPolicyOutput `json:"deprecated-output,omitempty"` // how to handle deprecated output (default 'accept')
    UnstableInput    *CompatPolicyInput  `json:"unstable-input,omitempty"`    // how to handle unstable input (default 'accept') (since 6.2)
    UnstableOutput   *CompatPolicyOutput `json:"unstable-output,omitempty"`   // how to handle unstable output (default 'accept') (since 6.2)
}

type CompatPolicyInput

Policy for handling "funny" input.

Since: 6.0

type CompatPolicyInput int32
const (
    CompatPolicyInputAccept CompatPolicyInput = iota
    CompatPolicyInputReject                   // Reject with an error
    CompatPolicyInputCrash                    // abort() the process
)

func (CompatPolicyInput) MarshalJSON

func (s CompatPolicyInput) MarshalJSON() ([]byte, error)

func (*CompatPolicyInput) UnmarshalJSON

func (s *CompatPolicyInput) UnmarshalJSON(data []byte) error

type CompatPolicyOutput

Policy for handling "funny" output.

Since: 6.0

type CompatPolicyOutput int32
const (
    CompatPolicyOutputAccept CompatPolicyOutput = iota
    CompatPolicyOutputHide                      // Filter out
)

func (CompatPolicyOutput) MarshalJSON

func (s CompatPolicyOutput) MarshalJSON() ([]byte, error)

func (*CompatPolicyOutput) UnmarshalJSON

func (s *CompatPolicyOutput) UnmarshalJSON(data []byte) error

type CompressionStats

Detailed migration compression statistics

Since: 3.1

type CompressionStats struct {
    Pages           int64   `json:"pages"`            // amount of pages compressed and transferred to the target VM
    Busy            int64   `json:"busy"`             // count of times that no free thread was available to compress data
    BusyRate        float64 `json:"busy-rate"`        // rate of thread busy
    CompressedSize  int64   `json:"compressed-size"`  // amount of bytes after compression
    CompressionRate float64 `json:"compression-rate"` // rate of compressed size
}

type ContCommand

Resume guest VCPU execution.

Since: 0.14

Returns: If successful, nothing

Notes: This command will succeed if the guest is currently running. It will also succeed if the guest is in the "inmigrate" state; in this case, the effect of the command is to make sure the guest starts once migration finishes, removing the effect of the -S command line option if it was passed.

Example: -> { "execute": "cont" } <- { "return": {} }

type ContCommand struct{}

type CpuDefinitionInfo

Virtual CPU definition.

None: @unavailable-features is a list of QOM property names that represent CPU model attributes that prevent the CPU from running. If the QOM property is read-only, that means there's no known way to make the CPU model run in the current host. Implementations that choose not to provide specific information return the property name "type". If the property is read-write, it means that it MAY be possible to run the CPU model in the current host if that property is changed. Management software can use it as hints to suggest or choose an alternative for the user, or just to generate meaningful error messages explaining why the CPU model can't be used. If @unavailable-features is an empty list, the CPU model is runnable using the current host and machine-type. If @unavailable-features is not present, runnability information for the CPU is not available.

Since: 1.2

type CpuDefinitionInfo struct {
    Name                string   `json:"name"`                           // the name of the CPU definition
    MigrationSafe       *bool    `json:"migration-safe,omitempty"`       // whether a CPU definition can be safely used for migration in combination with a QEMU compatibility machine when migrating between different QEMU versions and between hosts with different sets of (hardware or software) capabilities. If not provided, information is not available and callers should not assume the CPU definition to be migration-safe. (since 2.8)
    Static              bool     `json:"static"`                         // whether a CPU definition is static and will not change depending on QEMU version, machine type, machine options and accelerator options. A static model is always migration-safe. (since 2.8)
    UnavailableFeatures []string `json:"unavailable-features,omitempty"` // List of properties that prevent the CPU model from running in the current host. (since 2.8)
    Typename            string   `json:"typename"`                       // Type name that can be used as argument to @device-list-properties, to introspect properties configurable using -cpu or -global. (since 2.9)
    AliasOf             *string  `json:"alias-of,omitempty"`             // Name of CPU model this model is an alias for. The target of the CPU model alias may change depending on the machine type. Management software is supposed to translate CPU model aliases in the VM configuration, because aliases may stop being migration-safe in the future (since 4.1)
    Deprecated          bool     `json:"deprecated"`                     // If true, this CPU model is deprecated and may be removed in in some future version of QEMU according to the QEMU deprecation policy. (since 5.2)
}

type CpuInfoFast

Information about a virtual CPU

Since: 2.12

type CpuInfoFast struct {
    // Base type for this struct
    CpuInfoFastBase
    // Value based on @target, possible types:
    // * CpuInfoS390
    Value Any
}

func (CpuInfoFast) MarshalJSON

func (s CpuInfoFast) MarshalJSON() ([]byte, error)

func (*CpuInfoFast) UnmarshalJSON

func (s *CpuInfoFast) UnmarshalJSON(data []byte) error

type CpuInfoFastBase

Information about a virtual CPU

Since: 2.12

type CpuInfoFastBase struct {
    CpuIndex int64                  `json:"cpu-index"`       // index of the virtual CPU
    QomPath  string                 `json:"qom-path"`        // path to the CPU object in the QOM tree
    ThreadId int64                  `json:"thread-id"`       // ID of the underlying host thread
    Props    *CpuInstanceProperties `json:"props,omitempty"` // properties describing to which node/socket/core/thread virtual CPU belongs to, provided if supported by board
    Target   SysEmuTarget           `json:"target"`          // the QEMU system emulation target, which determines which additional fields will be listed (since 3.0)
}

type CpuInfoS390

Additional information about a virtual S390 CPU

Since: 2.12

type CpuInfoS390 struct {
    CpuState CpuS390State `json:"cpu-state"` // the virtual CPU's state
}

type CpuInstanceProperties

List of properties to be used for hotplugging a CPU instance, it should be passed by management with device_add command when a CPU is being hotplugged.

Note: currently there are 5 properties that could be present but management should be prepared to pass through other properties with device_add command to allow for future interface extension. This also requires the filed names to be kept in sync with the properties passed to -device/device_add.

Since: 2.7

type CpuInstanceProperties struct {
    NodeId   *int64 `json:"node-id,omitempty"`   // NUMA node ID the CPU belongs to
    SocketId *int64 `json:"socket-id,omitempty"` // socket number within node/board the CPU belongs to
    DieId    *int64 `json:"die-id,omitempty"`    // die number within socket the CPU belongs to (since 4.1)
    CoreId   *int64 `json:"core-id,omitempty"`   // core number within die the CPU belongs to
    ThreadId *int64 `json:"thread-id,omitempty"` // thread number within core the CPU belongs to
}

type CpuModelBaselineInfo

The result of a CPU model baseline.

Since: 2.8

type CpuModelBaselineInfo struct {
    Model CpuModelInfo `json:"model"` // the baselined CpuModelInfo.
}

type CpuModelCompareInfo

The result of a CPU model comparison.

None: @responsible-properties is a list of QOM property names that led to both CPUs not being detected as identical. For identical models, this list is empty. If a QOM property is read-only, that means there's no known way to make the CPU models identical. If the special property name "type" is included, the models are by definition not identical and cannot be made identical.

Since: 2.8

type CpuModelCompareInfo struct {
    Result                CpuModelCompareResult `json:"result"`                 // The result of the compare operation.
    ResponsibleProperties []string              `json:"responsible-properties"` // List of properties that led to the comparison result not being identical.
}

type CpuModelCompareResult

An enumeration of CPU model comparison results. The result is usually calculated using e.g. CPU features or CPU generations.

Since: 2.8

type CpuModelCompareResult int32
const (
    CpuModelCompareResultIncompatible CpuModelCompareResult = iota
    CpuModelCompareResultIdentical                          // If model A is identical to model B, model A is guaranteed to run where model B runs and the other way around.
    CpuModelCompareResultSuperset                           // If model A is a superset of model B, model B is guaranteed to run where model A runs. There are no guarantees about the other way.
    CpuModelCompareResultSubset                             // If model A is a subset of model B, model A is guaranteed to run where model B runs. There are no guarantees about the other way.
)

func (CpuModelCompareResult) MarshalJSON

func (s CpuModelCompareResult) MarshalJSON() ([]byte, error)

func (*CpuModelCompareResult) UnmarshalJSON

func (s *CpuModelCompareResult) UnmarshalJSON(data []byte) error

type CpuModelExpansionInfo

The result of a cpu model expansion.

Since: 2.8

type CpuModelExpansionInfo struct {
    Model CpuModelInfo `json:"model"` // the expanded CpuModelInfo.
}

type CpuModelExpansionType

An enumeration of CPU model expansion types.

Note: When a non-migration-safe CPU model is expanded in static mode, some features enabled by the CPU model may be omitted, because they can't be implemented by a static CPU model definition (e.g. cache info passthrough and PMU passthrough in x86). If you need an accurate representation of the features enabled by a non-migration-safe CPU model, use @full. If you need a static representation that will keep ABI compatibility even when changing QEMU version or machine-type, use @static (but keep in mind that some features may be omitted).

Since: 2.8

type CpuModelExpansionType int32
const (
    CpuModelExpansionTypeStatic CpuModelExpansionType = iota
    CpuModelExpansionTypeFull                         // Expand all properties. The produced model is not guaranteed to be migration-safe, but allows tooling to get an insight and work with model details.
)

func (CpuModelExpansionType) MarshalJSON

func (s CpuModelExpansionType) MarshalJSON() ([]byte, error)

func (*CpuModelExpansionType) UnmarshalJSON

func (s *CpuModelExpansionType) UnmarshalJSON(data []byte) error

type CpuModelInfo

Virtual CPU model.

A CPU model consists of the name of a CPU definition, to which delta changes are applied (e.g. features added/removed). Most magic values that an architecture might require should be hidden behind the name. However, if required, architectures can expose relevant properties.

Since: 2.8

type CpuModelInfo struct {
    Name  string `json:"name"`            // the name of the CPU definition the model is based on
    Props *Any   `json:"props,omitempty"` // a dictionary of QOM properties to be applied
}

type CpuS390State

An enumeration of cpu states that can be assumed by a virtual S390 CPU

Since: 2.12

type CpuS390State int32
const (
    CpuS390StateUninitialized CpuS390State = iota
    CpuS390StateStopped
    CpuS390StateCheckStop
    CpuS390StateOperating
    CpuS390StateLoad
)

func (CpuS390State) MarshalJSON

func (s CpuS390State) MarshalJSON() ([]byte, error)

func (*CpuS390State) UnmarshalJSON

func (s *CpuS390State) UnmarshalJSON(data []byte) error

type CryptodevBackendProperties

Properties for cryptodev-backend and cryptodev-backend-builtin objects.

Since: 2.8

type CryptodevBackendProperties struct {
    Queues *uint32 `json:"queues,omitempty"` // the number of queues for the cryptodev backend. Ignored for cryptodev-backend and must be 1 for cryptodev-backend-builtin. (default: 1)
}

type CryptodevVhostUserProperties

Properties for cryptodev-vhost-user objects.

Since: 2.12

type CryptodevVhostUserProperties struct {
    // Base type for this struct
    CryptodevBackendProperties
    Chardev string `json:"chardev"` // the name of a Unix domain socket character device that connects to the vhost-user server
}

type CurrentMachineParams

Information describing the running machine parameters.

Since: 4.0

type CurrentMachineParams struct {
    WakeupSuspendSupport bool `json:"wakeup-suspend-support"` // true if the machine supports wake up from suspend
}

type DBusVMStateProperties

Properties for dbus-vmstate objects.

Since: 5.0

type DBusVMStateProperties struct {
    Addr   string  `json:"addr"`              // the name of the DBus bus to connect to
    IdList *string `json:"id-list,omitempty"` // a comma separated list of DBus IDs of helpers whose data should be included in the VM state on migration
}

type DataFormat

An enumeration of data format.

Since: 1.4

type DataFormat int32
const (
    DataFormatUtf8   DataFormat = iota
    DataFormatBase64            // Data is Base64 encoded binary (RFC 3548)
)

func (DataFormat) MarshalJSON

func (s DataFormat) MarshalJSON() ([]byte, error)

func (*DataFormat) UnmarshalJSON

func (s *DataFormat) UnmarshalJSON(data []byte) error

type DeviceAddCommand

Add a device.

Notes: Additional arguments depend on the type.

1. For detailed information about this command, please refer to the

'docs/qdev-device-use.txt' file.

2. It's possible to list device properties by running QEMU with the

"-device DEVICE,help" command-line argument, where DEVICE is the
device's name

Example: -> { "execute": "device_add",

"arguments": { "driver": "e1000", "id": "net1",
               "bus": "pci.0",
               "mac": "52:54:00:12:34:56" } }

<- { "return": {} }

Since: 0.13

type DeviceAddCommand struct {
    Driver string  `json:"driver"`        // the name of the new device's driver
    Bus    *string `json:"bus,omitempty"` // the device's parent bus (device tree path)
    Id     *string `json:"id,omitempty"`  // the device's ID, must be unique
}

type DeviceDelCommand

Remove a device from a guest

Returns: Nothing on success If @id is not a valid device, DeviceNotFound

Notes: When this command completes, the device may not be removed from the guest. Hot removal is an operation that requires guest cooperation. This command merely requests that the guest begin the hot removal process. Completion of the device removal process is signaled with a DEVICE_DELETED event. Guest reset will automatically complete removal for all devices. If a guest-side error in the hot removal process is detected, the device will not be removed and a DEVICE_UNPLUG_GUEST_ERROR event is sent. Some errors cannot be detected.

Since: 0.14

Example: -> { "execute": "device_del",

"arguments": { "id": "net1" } }

<- { "return": {} }

-> { "execute": "device_del",

"arguments": { "id": "/machine/peripheral-anon/device[0]" } }

<- { "return": {} }

type DeviceDelCommand struct {
    Id string `json:"id"` // the device's ID or QOM path
}

type DeviceDeletedEvent

Emitted whenever the device removal completion is acknowledged by the guest. At this point, it's safe to reuse the specified device ID. Device removal can be initiated by the guest or by HMP/QMP commands.

Since: 1.5

Example: <- { "event": "DEVICE_DELETED",

"data": { "device": "virtio-net-pci-0",
          "path": "/machine/peripheral/virtio-net-pci-0" },
"timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
type DeviceDeletedEvent struct {
    Device *string `json:"device,omitempty"` // the device's ID if it has one
    Path   string  `json:"path"`             // the device's QOM path
}

type DeviceListPropertiesCommand

List properties associated with a device.

Returns: a list of ObjectPropertyInfo describing a devices properties

Note: objects can create properties at runtime, for example to describe links between different devices and/or objects. These properties are not included in the output of this command.

Since: 1.2

type DeviceListPropertiesCommand struct {
    Typename string `json:"typename"` // the type name of a device
}

type DeviceTrayMovedEvent

Emitted whenever the tray of a removable device is moved by the guest or by HMP/QMP commands

Since: 1.1

Example: <- { "event": "DEVICE_TRAY_MOVED",

"data": { "device": "ide1-cd0",
          "id": "/machine/unattached/device[22]",
          "tray-open": true
},
"timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
type DeviceTrayMovedEvent struct {
    Device   string `json:"device"`    // Block device name. This is always present for compatibility reasons, but it can be empty ("") if the image does not have a device name associated.
    Id       string `json:"id"`        // The name or QOM path of the guest device (since 2.8)
    TrayOpen bool   `json:"tray-open"` // true if the tray has been opened or false if it has been closed
}

type DeviceUnplugGuestErrorEvent

Emitted when a device hot unplug fails due to a guest reported error.

Since: 6.2

Example: <- { "event": "DEVICE_UNPLUG_GUEST_ERROR"

"data": { "device": "core1",
          "path": "/machine/peripheral/core1" },
},
"timestamp": { "seconds": 1615570772, "microseconds": 202844 } }
type DeviceUnplugGuestErrorEvent struct {
    Device *string `json:"device,omitempty"` // the device's ID if it has one
    Path   string  `json:"path"`             // the device's QOM path
}

type DirtyRateInfo

Information about current dirty page rate of vm.

Since: 5.2

type DirtyRateInfo struct {
    DirtyRate     *int64               `json:"dirty-rate,omitempty"`      // an estimate of the dirty page rate of the VM in units of MB/s, present only when estimating the rate has completed.
    Status        DirtyRateStatus      `json:"status"`                    // status containing dirtyrate query status includes 'unstarted' or 'measuring' or 'measured'
    StartTime     int64                `json:"start-time"`                // start time in units of second for calculation
    CalcTime      int64                `json:"calc-time"`                 // time in units of second for sample dirty pages
    SamplePages   uint64               `json:"sample-pages"`              // page count per GB for sample dirty pages the default value is 512 (since 6.1)
    Mode          DirtyRateMeasureMode `json:"mode"`                      // mode containing method of calculate dirtyrate includes 'page-sampling' and 'dirty-ring' (Since 6.2)
    VcpuDirtyRate []DirtyRateVcpu      `json:"vcpu-dirty-rate,omitempty"` // dirtyrate for each vcpu if dirty-ring mode specified (Since 6.2)
}

type DirtyRateMeasureMode

An enumeration of mode of measuring dirtyrate.

Since: 6.2

type DirtyRateMeasureMode int32
const (
    DirtyRateMeasureModePageSampling DirtyRateMeasureMode = iota
    DirtyRateMeasureModeDirtyRing                         // calculate dirtyrate by dirty ring.
    DirtyRateMeasureModeDirtyBitmap                       // calculate dirtyrate by dirty bitmap.
)

func (DirtyRateMeasureMode) MarshalJSON

func (s DirtyRateMeasureMode) MarshalJSON() ([]byte, error)

func (*DirtyRateMeasureMode) UnmarshalJSON

func (s *DirtyRateMeasureMode) UnmarshalJSON(data []byte) error

type DirtyRateStatus

An enumeration of dirtyrate status.

Since: 5.2

type DirtyRateStatus int32
const (
    DirtyRateStatusUnstarted DirtyRateStatus = iota
    DirtyRateStatusMeasuring                 // the dirtyrate thread is measuring.
    DirtyRateStatusMeasured                  // the dirtyrate thread has measured and results are available.
)

func (DirtyRateStatus) MarshalJSON

func (s DirtyRateStatus) MarshalJSON() ([]byte, error)

func (*DirtyRateStatus) UnmarshalJSON

func (s *DirtyRateStatus) UnmarshalJSON(data []byte) error

type DirtyRateVcpu

Dirty rate of vcpu.

Since: 6.2

type DirtyRateVcpu struct {
    Id        int64 `json:"id"`         // vcpu index.
    DirtyRate int64 `json:"dirty-rate"` // dirty rate.
}

type DisplayCocoa

Cocoa display options.

Since: 7.0

type DisplayCocoa struct {
    LeftCommandKey *bool `json:"left-command-key,omitempty"` // Enable/disable forwarding of left command key to guest. Allows command-tab window switching on the host without sending this key to the guest when "off". Defaults to "on"
    FullGrab       *bool `json:"full-grab,omitempty"`        // Capture all key presses, including system combos. This requires accessibility permissions, since it performs a global grab on key events. (default: off) See https://support.apple.com/en-in/guide/mac-help/mh32356/mac
    SwapOptCmd     *bool `json:"swap-opt-cmd,omitempty"`     // Swap the Option and Command keys so that their key codes match their position on non-Mac keyboards and you can use Meta/Super and Alt where you expect them. (default: off)
}

type DisplayCurses

Curses display options.

Since: 4.0

type DisplayCurses struct {
    Charset *string `json:"charset,omitempty"` // Font charset used by guest (default: CP437).
}

type DisplayDBus

DBus display options.

Since: 7.0

type DisplayDBus struct {
    Rendernode *string `json:"rendernode,omitempty"` // Which DRM render node should be used. Default is the first available node on the host.
    Addr       *string `json:"addr,omitempty"`       // The D-Bus bus address (default to the session bus).
    P2P        *bool   `json:"p2p,omitempty"`        // Whether to use peer-to-peer connections (accepted through ``add_client``).
    Audiodev   *string `json:"audiodev,omitempty"`   // Use the specified DBus audiodev to export audio.
}

type DisplayEGLHeadless

EGL headless display options.

Since: 3.1

type DisplayEGLHeadless struct {
    Rendernode *string `json:"rendernode,omitempty"` // Which DRM render node should be used. Default is the first available node on the host.
}

type DisplayGLMode

Display OpenGL mode.

Since: 3.0

type DisplayGLMode int32
const (
    DisplayGLModeOff  DisplayGLMode = iota
    DisplayGLModeOn                 // Use OpenGL, pick context type automatically. Would better be named 'auto' but is called 'on' for backward compatibility with bool type.
    DisplayGLModeCore               // Use OpenGL with Core (desktop) Context.
    DisplayGLModeEs                 // Use OpenGL with ES (embedded systems) Context.
)

func (DisplayGLMode) MarshalJSON

func (s DisplayGLMode) MarshalJSON() ([]byte, error)

func (*DisplayGLMode) UnmarshalJSON

func (s *DisplayGLMode) UnmarshalJSON(data []byte) error

type DisplayGTK

GTK display options.

Since: 2.12

type DisplayGTK struct {
    GrabOnHover *bool `json:"grab-on-hover,omitempty"` // Grab keyboard input on mouse hover.
    ZoomToFit   *bool `json:"zoom-to-fit,omitempty"`   // Zoom guest display to fit into the host window. When turned off the host window will be resized instead. In case the display device can notify the guest on window resizes (virtio-gpu) this will default to "on", assuming the guest will resize the display to match the window size then. Otherwise it defaults to "off". Since 3.1
}

type DisplayOptions

Display (user interface) options.

Since: 2.12

type DisplayOptions struct {
    // Base type for this struct
    DisplayOptionsBase
    // Value based on @type, possible types:
    // * DisplayGTK
    // * DisplayCocoa
    // * DisplayCurses
    // * DisplayEGLHeadless
    // * DisplayDBus
    Value Any
}

func (DisplayOptions) MarshalJSON

func (s DisplayOptions) MarshalJSON() ([]byte, error)

func (*DisplayOptions) UnmarshalJSON

func (s *DisplayOptions) UnmarshalJSON(data []byte) error

type DisplayOptionsBase

Display (user interface) options.

Since: 2.12

type DisplayOptionsBase struct {
    Type        DisplayType    `json:"type"`                   // Which DisplayType qemu should use.
    FullScreen  *bool          `json:"full-screen,omitempty"`  // Start user interface in fullscreen mode (default: off).
    WindowClose *bool          `json:"window-close,omitempty"` // Allow to quit qemu with window close button (default: on).
    ShowCursor  *bool          `json:"show-cursor,omitempty"`  // Force showing the mouse cursor (default: off). (since: 5.0)
    Gl          *DisplayGLMode `json:"gl,omitempty"`           // Enable OpenGL support (default: off).
}

type DisplayProtocol

Display protocols which support changing password options.

Since: 7.0

type DisplayProtocol int32
const (
    DisplayProtocolVnc DisplayProtocol = iota
    DisplayProtocolSpice
)

func (DisplayProtocol) MarshalJSON

func (s DisplayProtocol) MarshalJSON() ([]byte, error)

func (*DisplayProtocol) UnmarshalJSON

func (s *DisplayProtocol) UnmarshalJSON(data []byte) error

type DisplayReloadCommand

Reload display configuration.

Returns: Nothing on success.

Since: 6.0

Example: -> { "execute": "display-reload",

"arguments": { "type": "vnc", "tls-certs": true  } }

<- { "return": {} }

type DisplayReloadCommand struct {
    DisplayReloadOptions
}

type DisplayReloadOptions

Options of the display configuration reload.

Since: 6.0

type DisplayReloadOptions struct {
    // Base type for this struct
    DisplayReloadOptionsBase
    // Value based on @type, possible types:
    // * DisplayReloadOptionsVNC
    Value Any
}

func (DisplayReloadOptions) MarshalJSON

func (s DisplayReloadOptions) MarshalJSON() ([]byte, error)

func (*DisplayReloadOptions) UnmarshalJSON

func (s *DisplayReloadOptions) UnmarshalJSON(data []byte) error

type DisplayReloadOptionsBase

Options of the display configuration reload.

Since: 6.0

type DisplayReloadOptionsBase struct {
    Type DisplayReloadType `json:"type"` // Specify the display type.
}

type DisplayReloadOptionsVNC

Specify the VNC reload options.

Since: 6.0

type DisplayReloadOptionsVNC struct {
    TlsCerts *bool `json:"tls-certs,omitempty"` // reload tls certs or not.
}

type DisplayReloadType

Available DisplayReload types.

Since: 6.0

type DisplayReloadType int32
const (
    DisplayReloadTypeVnc DisplayReloadType = iota
)

func (DisplayReloadType) MarshalJSON

func (s DisplayReloadType) MarshalJSON() ([]byte, error)

func (*DisplayReloadType) UnmarshalJSON

func (s *DisplayReloadType) UnmarshalJSON(data []byte) error

type DisplayType

Display (user interface) type.

Since: 2.12

type DisplayType int32
const (
    DisplayTypeDefault     DisplayType = iota
    DisplayTypeNone                    // No user interface or video output display. The guest will still see an emulated graphics card, but its output will not be displayed to the QEMU user.
    DisplayTypeGtk                     // The GTK user interface.
    DisplayTypeSdl                     // The SDL user interface.
    DisplayTypeEglHeadless             // No user interface, offload GL operations to a local DRI device. Graphical display need to be paired with VNC or Spice. (Since 3.1)
    DisplayTypeCurses                  // Display video output via curses. For graphics device models which support a text mode, QEMU can display this output using a curses/ncurses interface. Nothing is displayed when the graphics device is in graphical mode or if the graphics device does not support a text mode. Generally only the VGA device models support text mode.
    DisplayTypeCocoa                   // The Cocoa user interface.
    DisplayTypeSpiceApp                // Set up a Spice server and run the default associated application to connect to it. The server will redirect the serial console and QEMU monitors. (Since 4.0)
    DisplayTypeDbus                    // Start a D-Bus service for the display. (Since 7.0)
)

func (DisplayType) MarshalJSON

func (s DisplayType) MarshalJSON() ([]byte, error)

func (*DisplayType) UnmarshalJSON

func (s *DisplayType) UnmarshalJSON(data []byte) error

type DriveBackup

Since: 1.6

type DriveBackup struct {
    // Base type for this struct
    BackupCommon
    Target string        `json:"target"`           // the target of the new image. If the file exists, or if it is a device, the existing file/device will be used as the new destination. If it does not exist, a new file will be created.
    Format *string       `json:"format,omitempty"` // the format of the new destination, default is to probe if @mode is 'existing', else the format of the source
    Mode   *NewImageMode `json:"mode,omitempty"`   // whether and how QEMU should create a new image, default is 'absolute-paths'.
}

type DriveBackupCommand

Start a point-in-time copy of a block device to a new destination. The status of ongoing drive-backup operations can be checked with query-block-jobs where the BlockJobInfo.type field has the value 'backup'. The operation can be stopped before it has completed using the block-job-cancel command.

Returns: - nothing on success - If @device is not a valid block device, GenericError

Since: 1.6

Example: -> { "execute": "drive-backup",

"arguments": { "device": "drive0",
               "sync": "full",
               "target": "backup.img" } }

<- { "return": {} }

type DriveBackupCommand struct {
    DriveBackup
}

type DriveBackupWrapper

Since: 1.6

type DriveBackupWrapper struct {
    Data DriveBackup `json:"data"`
}

type DriveMirror

A set of parameters describing drive mirror setup.

Since: 1.3

type DriveMirror struct {
    JobId         *string          `json:"job-id,omitempty"`          // identifier for the newly-created block job. If omitted, the device name will be used. (Since 2.7)
    Device        string           `json:"device"`                    // the device name or node-name of a root node whose writes should be mirrored.
    Target        string           `json:"target"`                    // the target of the new image. If the file exists, or if it is a device, the existing file/device will be used as the new destination. If it does not exist, a new file will be created.
    Format        *string          `json:"format,omitempty"`          // the format of the new destination, default is to probe if @mode is 'existing', else the format of the source
    NodeName      *string          `json:"node-name,omitempty"`       // the new block driver state node name in the graph (Since 2.1)
    Replaces      *string          `json:"replaces,omitempty"`        // with sync=full graph node name to be replaced by the new image when a whole image copy is done. This can be used to repair broken Quorum files. By default, @device is replaced, although implicitly created filters on it are kept. (Since 2.1)
    Sync          MirrorSyncMode   `json:"sync"`                      // what parts of the disk image should be copied to the destination (all the disk, only the sectors allocated in the topmost image, or only new I/O).
    Mode          *NewImageMode    `json:"mode,omitempty"`            // whether and how QEMU should create a new image, default is 'absolute-paths'.
    Speed         *int64           `json:"speed,omitempty"`           // the maximum speed, in bytes per second
    Granularity   *uint32          `json:"granularity,omitempty"`     // granularity of the dirty bitmap, default is 64K if the image format doesn't have clusters, 4K if the clusters are smaller than that, else the cluster size. Must be a power of 2 between 512 and 64M (since 1.4).
    BufSize       *int64           `json:"buf-size,omitempty"`        // maximum amount of data in flight from source to target (since 1.4).
    OnSourceError *BlockdevOnError `json:"on-source-error,omitempty"` // the action to take on an error on the source, default 'report'. 'stop' and 'enospc' can only be used if the block device supports io-status (see BlockInfo).
    OnTargetError *BlockdevOnError `json:"on-target-error,omitempty"` // the action to take on an error on the target, default 'report' (no limitations, since this applies to a different block device than @device).
    Unmap         *bool            `json:"unmap,omitempty"`           // Whether to try to unmap target sectors where source has only zero. If true, and target unallocated sectors will read as zero, target image sectors will be unmapped; otherwise, zeroes will be written. Both will result in identical contents. Default is true. (Since 2.4)
    CopyMode      *MirrorCopyMode  `json:"copy-mode,omitempty"`       // when to copy data to the destination; defaults to 'background' (Since: 3.0)
    AutoFinalize  *bool            `json:"auto-finalize,omitempty"`   // When false, this job will wait in a PENDING state after it has finished its work, waiting for @block-job-finalize before making any block graph changes. When true, this job will automatically perform its abort or commit actions. Defaults to true. (Since 3.1)
    AutoDismiss   *bool            `json:"auto-dismiss,omitempty"`    // When false, this job will wait in a CONCLUDED state after it has completely ceased all work, and awaits @block-job-dismiss. When true, this job will automatically disappear from the query list without user intervention. Defaults to true. (Since 3.1)
}

type DriveMirrorCommand

Start mirroring a block device's writes to a new destination. target specifies the target of the new image. If the file exists, or if it is a device, it will be used as the new destination for writes. If it does not exist, a new file will be created. format specifies the format of the mirror image, default is to probe if mode='existing', else the format of the source.

Returns: - nothing on success - If @device is not a valid block device, GenericError

Since: 1.3

Example: -> { "execute": "drive-mirror",

"arguments": { "device": "ide-hd0",
               "target": "/some/place/my-image",
               "sync": "full",
               "format": "qcow2" } }

<- { "return": {} }

type DriveMirrorCommand struct {
    DriveMirror
}

type DummyForceArrays

Not used by QMP; hack to let us use X86CPUFeatureWordInfoList internally

Since: 2.5

type DummyForceArrays struct {
    Unused []X86CPUFeatureWordInfo `json:"unused"`
}

type DumpCompletedEvent

Emitted when background dump has completed

Since: 2.6

Example: { "event": "DUMP_COMPLETED",

"data": {"result": {"total": 1090650112, "status": "completed",
                    "completed": 1090650112} } }
type DumpCompletedEvent struct {
    Result DumpQueryResult `json:"result"`          // final dump status
    Error  *string         `json:"error,omitempty"` // human-readable error string that provides hint on why dump failed. Only presents on failure. The user should not try to interpret the error string.
}

type DumpGuestMemoryCapability

A list of the available formats for dump-guest-memory

Since: 2.0

type DumpGuestMemoryCapability struct {
    Formats []DumpGuestMemoryFormat `json:"formats"`
}

type DumpGuestMemoryCommand

Dump guest's memory to vmcore. It is a synchronous operation that can take very long depending on the amount of guest memory.

Note: All boolean arguments default to false

Returns: nothing on success

Since: 1.2

Example: -> { "execute": "dump-guest-memory",

"arguments": { "protocol": "fd:dump" } }

<- { "return": {} }

type DumpGuestMemoryCommand struct {
    Paging   bool                   `json:"paging"`           // if true, do paging to get guest's memory mapping. This allows using gdb to process the core file. IMPORTANT: this option can make QEMU allocate several gigabytes of RAM. This can happen for a large guest, or a malicious guest pretending to be large. Also, paging=true has the following limitations: 1. The guest may be in a catastrophic state or can have corrupted memory, which cannot be trusted 2. The guest can be in real-mode even if paging is enabled. For example, the guest uses ACPI to sleep, and ACPI sleep state goes in real-mode 3. Currently only supported on i386 and x86_64.
    Protocol string                 `json:"protocol"`         // the filename or file descriptor of the vmcore. The supported protocols are: 1. file: the protocol starts with "file:", and the following string is the file's path. 2. fd: the protocol starts with "fd:", and the following string is the fd's name.
    Detach   *bool                  `json:"detach,omitempty"` // if true, QMP will return immediately rather than waiting for the dump to finish. The user can track progress using "query-dump". (since 2.6).
    Begin    *int64                 `json:"begin,omitempty"`  // if specified, the starting physical address.
    Length   *int64                 `json:"length,omitempty"` // if specified, the memory size, in bytes. If you don't want to dump all guest's memory, please specify the start @begin and @length
    Format   *DumpGuestMemoryFormat `json:"format,omitempty"` // if specified, the format of guest memory dump. But non-elf format is conflict with paging and filter, ie. @paging, @begin and @length is not allowed to be specified with non-elf @format at the same time (since 2.0)
}

type DumpGuestMemoryFormat

An enumeration of guest-memory-dump's format.

Since: 2.0

type DumpGuestMemoryFormat int32
const (
    DumpGuestMemoryFormatElf         DumpGuestMemoryFormat = iota
    DumpGuestMemoryFormatKdumpZlib                         // kdump-compressed format with zlib-compressed
    DumpGuestMemoryFormatKdumpLzo                          // kdump-compressed format with lzo-compressed
    DumpGuestMemoryFormatKdumpSnappy                       // kdump-compressed format with snappy-compressed
    DumpGuestMemoryFormatWinDmp                            // Windows full crashdump format, can be used instead of ELF converting (since 2.13)
)

func (DumpGuestMemoryFormat) MarshalJSON

func (s DumpGuestMemoryFormat) MarshalJSON() ([]byte, error)

func (*DumpGuestMemoryFormat) UnmarshalJSON

func (s *DumpGuestMemoryFormat) UnmarshalJSON(data []byte) error

type DumpQueryResult

The result format for 'query-dump'.

Since: 2.6

type DumpQueryResult struct {
    Status    DumpStatus `json:"status"`    // enum of @DumpStatus, which shows current dump status
    Completed int64      `json:"completed"` // bytes written in latest dump (uncompressed)
    Total     int64      `json:"total"`     // total bytes to be written in latest dump (uncompressed)
}

type DumpSkeysCommand

Dump guest's storage keys

None: This command is only supported on s390 architecture.

Since: 2.5

Example: -> { "execute": "dump-skeys",

"arguments": { "filename": "/tmp/skeys" } }

<- { "return": {} }

type DumpSkeysCommand struct {
    Filename string `json:"filename"` // the path to the file to dump to
}

type DumpStatus

Describe the status of a long-running background guest memory dump.

Since: 2.6

type DumpStatus int32
const (
    DumpStatusNone      DumpStatus = iota
    DumpStatusActive               // there is one dump running in background.
    DumpStatusCompleted            // the last dump has finished successfully.
    DumpStatusFailed               // the last dump has failed.
)

func (DumpStatus) MarshalJSON

func (s DumpStatus) MarshalJSON() ([]byte, error)

func (*DumpStatus) UnmarshalJSON

func (s *DumpStatus) UnmarshalJSON(data []byte) error

type EjectCommand

Ejects the medium from a removable drive.

Returns: - Nothing on success - If @device is not a valid block device, DeviceNotFound

Notes: Ejecting a device with no media results in success

Since: 0.14

Example: -> { "execute": "eject", "arguments": { "id": "ide1-0-1" } } <- { "return": {} }

type EjectCommand struct {
    Device *string `json:"device,omitempty"` // Block device name
    Id     *string `json:"id,omitempty"`     // The name or QOM path of the guest device (since: 2.8)
    Force  *bool   `json:"force,omitempty"`  // If true, eject regardless of whether the drive is locked. If not specified, the default value is false.
}

type Event

type Event struct {
    EventBase
    Arg Any `json:"data,omitempty"`
}

func (*Event) UnmarshalJSON

func (s *Event) UnmarshalJSON(data []byte) error

type EventBase

type EventBase struct {
    Name      string `json:"event"`
    Timestamp struct {
        Seconds      int64 `json:"seconds"`
        Microseconds int64 `json:"microseconds"`
    } `json:"timestamp"`
}

type ExpirePasswordCommand

Expire the password of a remote display server.

Returns: - Nothing on success - If @protocol is 'spice' and Spice is not active, DeviceNotFound

Since: 0.14

Example: -> { "execute": "expire_password", "arguments": { "protocol": "vnc",

"time": "+60" } }

<- { "return": {} }

type ExpirePasswordCommand struct {
    ExpirePasswordOptions
}

type ExpirePasswordOptions

General options for expire_password.

Notes: Time is relative to the server and currently there is no way to coordinate server time with client time. It is not recommended to use the absolute time version of the @time parameter unless you're sure you are on the same machine as the QEMU instance.

Since: 7.0

type ExpirePasswordOptions struct {
    // Base type for this struct
    ExpirePasswordOptionsBase
    // Value based on @protocol, possible types:
    // * ExpirePasswordOptionsVnc
    Value Any
}

func (ExpirePasswordOptions) MarshalJSON

func (s ExpirePasswordOptions) MarshalJSON() ([]byte, error)

func (*ExpirePasswordOptions) UnmarshalJSON

func (s *ExpirePasswordOptions) UnmarshalJSON(data []byte) error

type ExpirePasswordOptionsBase

General options for expire_password.

Notes: Time is relative to the server and currently there is no way to coordinate server time with client time. It is not recommended to use the absolute time version of the @time parameter unless you're sure you are on the same machine as the QEMU instance.

Since: 7.0

type ExpirePasswordOptionsBase struct {
    Protocol DisplayProtocol `json:"protocol"` // - 'vnc' to modify the VNC server expiration - 'spice' to modify the Spice server expiration
    Time     string          `json:"time"`     // when to expire the password. - 'now' to expire the password immediately - 'never' to cancel password expiration - '+INT' where INT is the number of seconds from now (integer) - 'INT' where INT is the absolute time in seconds
}

type ExpirePasswordOptionsVnc

Options for expire_password specific to the VNC procotol.

Since: 7.0

type ExpirePasswordOptionsVnc struct {
    Display *string `json:"display,omitempty"` // The id of the display where the expiration should be changed. Defaults to the first.
}

type FailoverNegotiatedEvent

Emitted when VIRTIO_NET_F_STANDBY was enabled during feature negotiation. Failover primary devices which were hidden (not hotplugged when requested) before will now be hotplugged by the virtio-net standby device.

device-id: QEMU device id of the unplugged device

Since: 4.2

Example: <- { "event": "FAILOVER_NEGOTIATED",

"data": "net1" }
type FailoverNegotiatedEvent struct {
    DeviceId string `json:"device-id"`
}

type FailoverStatus

An enumeration of COLO failover status

Since: 2.8

type FailoverStatus int32
const (
    FailoverStatusNone      FailoverStatus = iota
    FailoverStatusRequire                  // got failover requirement but not handled
    FailoverStatusActive                   // in the process of doing failover
    FailoverStatusCompleted                // finish the process of failover
    FailoverStatusRelaunch                 // restart the failover process, from 'none' -> 'completed' (Since 2.9)
)

func (FailoverStatus) MarshalJSON

func (s FailoverStatus) MarshalJSON() ([]byte, error)

func (*FailoverStatus) UnmarshalJSON

func (s *FailoverStatus) UnmarshalJSON(data []byte) error

type FdsetFdInfo

Information about a file descriptor that belongs to an fd set.

Since: 1.2

type FdsetFdInfo struct {
    Fd     int64   `json:"fd"`               // The file descriptor value.
    Opaque *string `json:"opaque,omitempty"` // A free-form string that can be used to describe the fd.
}

type FdsetInfo

Information about an fd set.

Since: 1.2

type FdsetInfo struct {
    FdsetId int64         `json:"fdset-id"` // The ID of the fd set.
    Fds     []FdsetFdInfo `json:"fds"`      // A list of file descriptors that belong to this fd set.
}

type FilterBufferProperties

Properties for filter-buffer objects.

Since: 2.5

type FilterBufferProperties struct {
    // Base type for this struct
    NetfilterProperties
    Interval uint32 `json:"interval"` // a non-zero interval in microseconds. All packets arriving in the given interval are delayed until the end of the interval.
}

type FilterDumpProperties

Properties for filter-dump objects.

Since: 2.5

type FilterDumpProperties struct {
    // Base type for this struct
    NetfilterProperties
    File   string  `json:"file"`             // the filename where the dumped packets should be stored
    Maxlen *uint32 `json:"maxlen,omitempty"` // maximum number of bytes in a packet that are stored (default: 65536)
}

type FilterMirrorProperties

Properties for filter-mirror objects.

Since: 2.6

type FilterMirrorProperties struct {
    // Base type for this struct
    NetfilterProperties
    Outdev         string `json:"outdev"`                     // the name of a character device backend to which all incoming packets are mirrored
    VnetHdrSupport *bool  `json:"vnet_hdr_support,omitempty"` // if true, vnet header support is enabled (default: false)
}

type FilterRedirectorProperties

Properties for filter-redirector objects.

At least one of @indev or @outdev must be present. If both are present, they must not refer to the same character device backend.

Since: 2.6

type FilterRedirectorProperties struct {
    // Base type for this struct
    NetfilterProperties
    Indev          *string `json:"indev,omitempty"`            // the name of a character device backend from which packets are received and redirected to the filtered network device
    Outdev         *string `json:"outdev,omitempty"`           // the name of a character device backend to which all incoming packets are redirected
    VnetHdrSupport *bool   `json:"vnet_hdr_support,omitempty"` // if true, vnet header support is enabled (default: false)
}

type FilterRewriterProperties

Properties for filter-rewriter objects.

Since: 2.8

type FilterRewriterProperties struct {
    // Base type for this struct
    NetfilterProperties
    VnetHdrSupport *bool `json:"vnet_hdr_support,omitempty"` // if true, vnet header support is enabled (default: false)
}

type FloppyDriveType

Type of Floppy drive to be emulated by the Floppy Disk Controller.

Since: 2.6

type FloppyDriveType int32
const (
    FloppyDriveType144  FloppyDriveType = iota
    FloppyDriveType288                  // 2.88MB 3.5" drive
    FloppyDriveType120                  // 1.2MB 5.25" drive
    FloppyDriveTypeNone                 // No drive connected
    FloppyDriveTypeAuto                 // Automatically determined by inserted media at boot
)

func (FloppyDriveType) MarshalJSON

func (s FloppyDriveType) MarshalJSON() ([]byte, error)

func (*FloppyDriveType) UnmarshalJSON

func (s *FloppyDriveType) UnmarshalJSON(data []byte) error

type FuseExportAllowOther

Possible allow_other modes for FUSE exports.

Since: 6.1

type FuseExportAllowOther int32
const (
    FuseExportAllowOtherOff  FuseExportAllowOther = iota
    FuseExportAllowOtherOn                        // Pass allow_other as a mount option.
    FuseExportAllowOtherAuto                      // Try mounting with allow_other first, and if that fails, retry without allow_other.
)

func (FuseExportAllowOther) MarshalJSON

func (s FuseExportAllowOther) MarshalJSON() ([]byte, error)

func (*FuseExportAllowOther) UnmarshalJSON

func (s *FuseExportAllowOther) UnmarshalJSON(data []byte) error

type GICCapability

The struct describes capability for a specific GIC (Generic Interrupt Controller) version. These bits are not only decided by QEMU/KVM software version, but also decided by the hardware that the program is running upon.

Since: 2.6

type GICCapability struct {
    Version  int64 `json:"version"`  // version of GIC to be described. Currently, only 2 and 3 are supported.
    Emulated bool  `json:"emulated"` // whether current QEMU/hardware supports emulated GIC device in user space.
    Kernel   bool  `json:"kernel"`   // whether current QEMU/hardware supports hardware accelerated GIC device in kernel.
}

type GetfdCommand

Receive a file descriptor via SCM rights and assign it a name

Returns: Nothing on success

Since: 0.14

Notes: If @fdname already exists, the file descriptor assigned to it will be closed and replaced by the received file descriptor.

The 'closefd' command can be used to explicitly close the file descriptor when it is no longer needed.

Example: -> { "execute": "getfd", "arguments": { "fdname": "fd1" } } <- { "return": {} }

type GetfdCommand struct {
    Fdname string `json:"fdname"` // file descriptor name
}

type GrabToggleKeys

Keys to toggle input-linux between host and guest.

Since: 4.0

type GrabToggleKeys int32
const (
    GrabToggleKeysCtrlCtrl GrabToggleKeys = iota
    GrabToggleKeysAltAlt
    GrabToggleKeysShiftShift
    GrabToggleKeysMetaMeta
    GrabToggleKeysScrolllock
    GrabToggleKeysCtrlScrolllock
)

func (GrabToggleKeys) MarshalJSON

func (s GrabToggleKeys) MarshalJSON() ([]byte, error)

func (*GrabToggleKeys) UnmarshalJSON

func (s *GrabToggleKeys) UnmarshalJSON(data []byte) error

type GuestCrashloadedEvent

Emitted when guest OS crash loaded is detected

Since: 5.0

Example: <- { "event": "GUEST_CRASHLOADED",

"data": { "action": "run" } }
type GuestCrashloadedEvent struct {
    Action GuestPanicAction       `json:"action"`         // action that has been taken, currently always "run"
    Info   *GuestPanicInformation `json:"info,omitempty"` // information about a panic
}

type GuestPanicAction

An enumeration of the actions taken when guest OS panic is detected

Since: 2.1 (poweroff since 2.8, run since 5.0)

type GuestPanicAction int32
const (
    GuestPanicActionPause GuestPanicAction = iota
    GuestPanicActionPoweroff
    GuestPanicActionRun
)

func (GuestPanicAction) MarshalJSON

func (s GuestPanicAction) MarshalJSON() ([]byte, error)

func (*GuestPanicAction) UnmarshalJSON

func (s *GuestPanicAction) UnmarshalJSON(data []byte) error

type GuestPanicInformation

Information about a guest panic

Since: 2.9

type GuestPanicInformation struct {
    // Base type for this struct
    GuestPanicInformationBase
    // Value based on @type, possible types:
    // * GuestPanicInformationHyperV
    // * GuestPanicInformationS390
    Value Any
}

func (GuestPanicInformation) MarshalJSON

func (s GuestPanicInformation) MarshalJSON() ([]byte, error)

func (*GuestPanicInformation) UnmarshalJSON

func (s *GuestPanicInformation) UnmarshalJSON(data []byte) error

type GuestPanicInformationBase

Information about a guest panic

Since: 2.9

type GuestPanicInformationBase struct {
    Type GuestPanicInformationType `json:"type"` // Crash type that defines the hypervisor specific information
}

type GuestPanicInformationHyperV

Hyper-V specific guest panic information (HV crash MSRs)

Since: 2.9

type GuestPanicInformationHyperV struct {
    Arg1 uint64 `json:"arg1"`
    Arg2 uint64 `json:"arg2"`
    Arg3 uint64 `json:"arg3"`
    Arg4 uint64 `json:"arg4"`
    Arg5 uint64 `json:"arg5"`
}

type GuestPanicInformationS390

S390 specific guest panic information (PSW)

Since: 2.12

type GuestPanicInformationS390 struct {
    Core    uint32          `json:"core"`     // core id of the CPU that crashed
    PswMask uint64          `json:"psw-mask"` // control fields of guest PSW
    PswAddr uint64          `json:"psw-addr"` // guest instruction address
    Reason  S390CrashReason `json:"reason"`   // guest crash reason
}

type GuestPanicInformationType

An enumeration of the guest panic information types

Since: 2.9

type GuestPanicInformationType int32
const (
    GuestPanicInformationTypeHyperV GuestPanicInformationType = iota
    GuestPanicInformationTypeS390                             // s390 guest panic information type (Since: 2.12)
)

func (GuestPanicInformationType) MarshalJSON

func (s GuestPanicInformationType) MarshalJSON() ([]byte, error)

func (*GuestPanicInformationType) UnmarshalJSON

func (s *GuestPanicInformationType) UnmarshalJSON(data []byte) error

type GuestPanickedEvent

Emitted when guest OS panic is detected

Since: 1.5

Example: <- { "event": "GUEST_PANICKED",

"data": { "action": "pause" } }
type GuestPanickedEvent struct {
    Action GuestPanicAction       `json:"action"`         // action that has been taken, currently always "pause"
    Info   *GuestPanicInformation `json:"info,omitempty"` // information about a panic (since 2.9)
}

type GuidInfo

GUID information.

Since: 2.9

type GuidInfo struct {
    Guid string `json:"guid"` // the globally unique identifier
}

type HmatCacheAssociativity

Cache associativity in the Memory Side Cache Information Structure of HMAT

For more information of @HmatCacheAssociativity, see chapter 5.2.27.5: Table 5-147 of ACPI 6.3 spec.

Since: 5.0

type HmatCacheAssociativity int32
const (
    HmatCacheAssociativityNone    HmatCacheAssociativity = iota
    HmatCacheAssociativityDirect                         // Direct Mapped
    HmatCacheAssociativityComplex                        // Complex Cache Indexing (implementation specific)
)

func (HmatCacheAssociativity) MarshalJSON

func (s HmatCacheAssociativity) MarshalJSON() ([]byte, error)

func (*HmatCacheAssociativity) UnmarshalJSON

func (s *HmatCacheAssociativity) UnmarshalJSON(data []byte) error

type HmatCacheWritePolicy

Cache write policy in the Memory Side Cache Information Structure of HMAT

For more information of @HmatCacheWritePolicy, see chapter 5.2.27.5: Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec.

Since: 5.0

type HmatCacheWritePolicy int32
const (
    HmatCacheWritePolicyNone         HmatCacheWritePolicy = iota
    HmatCacheWritePolicyWriteBack                         // Write Back (WB)
    HmatCacheWritePolicyWriteThrough                      // Write Through (WT)
)

func (HmatCacheWritePolicy) MarshalJSON

func (s HmatCacheWritePolicy) MarshalJSON() ([]byte, error)

func (*HmatCacheWritePolicy) UnmarshalJSON

func (s *HmatCacheWritePolicy) UnmarshalJSON(data []byte) error

type HmatLBDataType

Data type in the System Locality Latency and Bandwidth Information Structure of HMAT (Heterogeneous Memory Attribute Table)

For more information about @HmatLBDataType, see chapter 5.2.27.4: Table 5-146: Field "Data Type" of ACPI 6.3 spec.

Since: 5.0

type HmatLBDataType int32
const (
    HmatLBDataTypeAccessLatency   HmatLBDataType = iota
    HmatLBDataTypeReadLatency                    // read latency (nanoseconds)
    HmatLBDataTypeWriteLatency                   // write latency (nanoseconds)
    HmatLBDataTypeAccessBandwidth                // access bandwidth (Bytes per second)
    HmatLBDataTypeReadBandwidth                  // read bandwidth (Bytes per second)
    HmatLBDataTypeWriteBandwidth                 // write bandwidth (Bytes per second)
)

func (HmatLBDataType) MarshalJSON

func (s HmatLBDataType) MarshalJSON() ([]byte, error)

func (*HmatLBDataType) UnmarshalJSON

func (s *HmatLBDataType) UnmarshalJSON(data []byte) error

type HmatLBMemoryHierarchy

The memory hierarchy in the System Locality Latency and Bandwidth Information Structure of HMAT (Heterogeneous Memory Attribute Table)

For more information about @HmatLBMemoryHierarchy, see chapter 5.2.27.4: Table 5-146: Field "Flags" of ACPI 6.3 spec.

Since: 5.0

type HmatLBMemoryHierarchy int32
const (
    HmatLBMemoryHierarchyMemory      HmatLBMemoryHierarchy = iota
    HmatLBMemoryHierarchyFirstLevel                        // first level of memory side cache
    HmatLBMemoryHierarchySecondLevel                       // second level of memory side cache
    HmatLBMemoryHierarchyThirdLevel                        // third level of memory side cache
)

func (HmatLBMemoryHierarchy) MarshalJSON

func (s HmatLBMemoryHierarchy) MarshalJSON() ([]byte, error)

func (*HmatLBMemoryHierarchy) UnmarshalJSON

func (s *HmatLBMemoryHierarchy) UnmarshalJSON(data []byte) error

type HostMemPolicy

Host memory policy types

Since: 2.1

type HostMemPolicy int32
const (
    HostMemPolicyDefault    HostMemPolicy = iota
    HostMemPolicyPreferred                // set the preferred host nodes for allocation
    HostMemPolicyBind                     // a strict policy that restricts memory allocation to the host nodes specified
    HostMemPolicyInterleave               // memory allocations are interleaved across the set of host nodes specified
)

func (HostMemPolicy) MarshalJSON

func (s HostMemPolicy) MarshalJSON() ([]byte, error)

func (*HostMemPolicy) UnmarshalJSON

func (s *HostMemPolicy) UnmarshalJSON(data []byte) error

type HotpluggableCPU

Since: 2.7

type HotpluggableCPU struct {
    Type       string                `json:"type"`               // CPU object type for usage with device_add command
    VcpusCount int64                 `json:"vcpus-count"`        // number of logical VCPU threads @HotpluggableCPU provides
    Props      CpuInstanceProperties `json:"props"`              // list of properties to be used for hotplugging CPU
    QomPath    *string               `json:"qom-path,omitempty"` // link to existing CPU object if CPU is present or omitted if CPU is not present.
}

type HumanMonitorCommandCommand

Execute a command on the human monitor and return the output.

Returns: the output of the command as a string

Since: 0.14

Notes: This command only exists as a stop-gap. Its use is highly discouraged. The semantics of this command are not guaranteed: this means that command names, arguments and responses can change or be removed at ANY time. Applications that rely on long term stability guarantees should NOT use this command.

Known limitations:

* This command is stateless, this means that commands that depend

on state information (such as getfd) might not work

* Commands that prompt the user for data don't currently work

Example: -> { "execute": "human-monitor-command",

"arguments": { "command-line": "info kvm" } }

<- { "return": "kvm support: enabled\r\n" }

type HumanMonitorCommandCommand struct {
    CommandLine string `json:"command-line"`        // the command to execute in the human monitor
    CpuIndex    *int64 `json:"cpu-index,omitempty"` // The CPU to use for commands that require an implicit CPU
}

type HumanReadableText

Since: 6.2

type HumanReadableText struct {
    HumanReadableText string `json:"human-readable-text"` // Formatted output intended for humans.
}

type IOThreadInfo

Information about an iothread

Since: 2.0

type IOThreadInfo struct {
    Id          string `json:"id"`            // the identifier of the iothread
    ThreadId    int64  `json:"thread-id"`     // ID of the underlying host thread
    PollMaxNs   int64  `json:"poll-max-ns"`   // maximum polling time in ns, 0 means polling is disabled (since 2.9)
    PollGrow    int64  `json:"poll-grow"`     // how many ns will be added to polling time, 0 means that it's not configured (since 2.9)
    PollShrink  int64  `json:"poll-shrink"`   // how many ns will be removed from polling time, 0 means that it's not configured (since 2.9)
    AioMaxBatch int64  `json:"aio-max-batch"` // maximum number of requests in a batch for the AIO engine, 0 means that the engine will use its default (since 6.1)
}

type ImageCheck

Information about a QEMU image file check

Since: 1.4

type ImageCheck struct {
    Filename           string `json:"filename"`                      // name of the image file checked
    Format             string `json:"format"`                        // format of the image file checked
    CheckErrors        int64  `json:"check-errors"`                  // number of unexpected errors occurred during check
    ImageEndOffset     *int64 `json:"image-end-offset,omitempty"`    // offset (in bytes) where the image ends, this field is present if the driver for the image format supports it
    Corruptions        *int64 `json:"corruptions,omitempty"`         // number of corruptions found during the check if any
    Leaks              *int64 `json:"leaks,omitempty"`               // number of leaks found during the check if any
    CorruptionsFixed   *int64 `json:"corruptions-fixed,omitempty"`   // number of corruptions fixed during the check if any
    LeaksFixed         *int64 `json:"leaks-fixed,omitempty"`         // number of leaks fixed during the check if any
    TotalClusters      *int64 `json:"total-clusters,omitempty"`      // total number of clusters, this field is present if the driver for the image format supports it
    AllocatedClusters  *int64 `json:"allocated-clusters,omitempty"`  // total number of allocated clusters, this field is present if the driver for the image format supports it
    FragmentedClusters *int64 `json:"fragmented-clusters,omitempty"` // total number of fragmented clusters, this field is present if the driver for the image format supports it
    CompressedClusters *int64 `json:"compressed-clusters,omitempty"` // total number of compressed clusters, this field is present if the driver for the image format supports it
}

type ImageInfo

Information about a QEMU image file

Since: 1.3

type ImageInfo struct {
    Filename              string             `json:"filename"`                          // name of the image file
    Format                string             `json:"format"`                            // format of the image file
    DirtyFlag             *bool              `json:"dirty-flag,omitempty"`              // true if image is not cleanly closed
    ActualSize            *int64             `json:"actual-size,omitempty"`             // actual size on disk in bytes of the image
    VirtualSize           int64              `json:"virtual-size"`                      // maximum capacity in bytes of the image
    ClusterSize           *int64             `json:"cluster-size,omitempty"`            // size of a cluster in bytes
    Encrypted             *bool              `json:"encrypted,omitempty"`               // true if the image is encrypted
    Compressed            *bool              `json:"compressed,omitempty"`              // true if the image is compressed (Since 1.7)
    BackingFilename       *string            `json:"backing-filename,omitempty"`        // name of the backing file
    FullBackingFilename   *string            `json:"full-backing-filename,omitempty"`   // full path of the backing file
    BackingFilenameFormat *string            `json:"backing-filename-format,omitempty"` // the format of the backing file
    Snapshots             []SnapshotInfo     `json:"snapshots,omitempty"`               // list of VM snapshots
    BackingImage          *ImageInfo         `json:"backing-image,omitempty"`           // info of the backing image (since 1.6)
    FormatSpecific        *ImageInfoSpecific `json:"format-specific,omitempty"`         // structure supplying additional format-specific information (since 1.7)
}

type ImageInfoSpecific

A discriminated record of image format specific information structures.

Since: 1.7

type ImageInfoSpecific struct {
    // Base type for this struct
    ImageInfoSpecificBase
    // Value based on @type, possible types:
    // * ImageInfoSpecificQCow2Wrapper
    // * ImageInfoSpecificVmdkWrapper
    // * ImageInfoSpecificLUKSWrapper
    // * ImageInfoSpecificRbdWrapper
    Value Any
}

func (ImageInfoSpecific) MarshalJSON

func (s ImageInfoSpecific) MarshalJSON() ([]byte, error)

func (*ImageInfoSpecific) UnmarshalJSON

func (s *ImageInfoSpecific) UnmarshalJSON(data []byte) error

type ImageInfoSpecificBase

A discriminated record of image format specific information structures.

Since: 1.7

type ImageInfoSpecificBase struct {
    Type ImageInfoSpecificKind `json:"type"`
}

type ImageInfoSpecificKind

Since: 1.7

type ImageInfoSpecificKind int32
const (
    ImageInfoSpecificKindQcow2 ImageInfoSpecificKind = iota
    ImageInfoSpecificKindVmdk
    ImageInfoSpecificKindLuks // Since 2.7
    ImageInfoSpecificKindRbd  // Since 6.1
)

func (ImageInfoSpecificKind) MarshalJSON

func (s ImageInfoSpecificKind) MarshalJSON() ([]byte, error)

func (*ImageInfoSpecificKind) UnmarshalJSON

func (s *ImageInfoSpecificKind) UnmarshalJSON(data []byte) error

type ImageInfoSpecificLUKSWrapper

Since: 2.7

type ImageInfoSpecificLUKSWrapper struct {
    Data QCryptoBlockInfoLUKS `json:"data"`
}

type ImageInfoSpecificQCow2

Since: 1.7

type ImageInfoSpecificQCow2 struct {
    Compat          string                            `json:"compat"`                   // compatibility level
    DataFile        *string                           `json:"data-file,omitempty"`      // the filename of the external data file that is stored in the image and used as a default for opening the image (since: 4.0)
    DataFileRaw     *bool                             `json:"data-file-raw,omitempty"`  // True if the external data file must stay valid as a standalone (read-only) raw image without looking at qcow2 metadata (since: 4.0)
    ExtendedL2      *bool                             `json:"extended-l2,omitempty"`    // true if the image has extended L2 entries; only valid for compat >= 1.1 (since 5.2)
    LazyRefcounts   *bool                             `json:"lazy-refcounts,omitempty"` // on or off; only valid for compat >= 1.1
    Corrupt         *bool                             `json:"corrupt,omitempty"`        // true if the image has been marked corrupt; only valid for compat >= 1.1 (since 2.2)
    RefcountBits    int64                             `json:"refcount-bits"`            // width of a refcount entry in bits (since 2.3)
    Encrypt         *ImageInfoSpecificQCow2Encryption `json:"encrypt,omitempty"`        // details about encryption parameters; only set if image is encrypted (since 2.10)
    Bitmaps         []Qcow2BitmapInfo                 `json:"bitmaps,omitempty"`        // A list of qcow2 bitmap details (since 4.0)
    CompressionType Qcow2CompressionType              `json:"compression-type"`         // the image cluster compression method (since 5.1)
}

type ImageInfoSpecificQCow2Encryption

Since: 2.10

type ImageInfoSpecificQCow2Encryption struct {
    // Base type for this struct
    ImageInfoSpecificQCow2EncryptionBase
    // Value based on @format, possible types:
    // * QCryptoBlockInfoLUKS
    Value Any
}

func (ImageInfoSpecificQCow2Encryption) MarshalJSON

func (s ImageInfoSpecificQCow2Encryption) MarshalJSON() ([]byte, error)

func (*ImageInfoSpecificQCow2Encryption) UnmarshalJSON

func (s *ImageInfoSpecificQCow2Encryption) UnmarshalJSON(data []byte) error

type ImageInfoSpecificQCow2EncryptionBase

Since: 2.10

type ImageInfoSpecificQCow2EncryptionBase struct {
    Format BlockdevQcow2EncryptionFormat `json:"format"` // The encryption format
}

type ImageInfoSpecificQCow2Wrapper

Since: 1.7

type ImageInfoSpecificQCow2Wrapper struct {
    Data ImageInfoSpecificQCow2 `json:"data"`
}

type ImageInfoSpecificRbd

Since: 6.1

type ImageInfoSpecificRbd struct {
    EncryptionFormat *RbdImageEncryptionFormat `json:"encryption-format,omitempty"` // Image encryption format
}

type ImageInfoSpecificRbdWrapper

Since: 6.1

type ImageInfoSpecificRbdWrapper struct {
    Data ImageInfoSpecificRbd `json:"data"`
}

type ImageInfoSpecificVmdk

Since: 1.7

type ImageInfoSpecificVmdk struct {
    CreateType string      `json:"create-type"` // The create type of VMDK image
    Cid        int64       `json:"cid"`         // Content id of image
    ParentCid  int64       `json:"parent-cid"`  // Parent VMDK image's cid
    Extents    []ImageInfo `json:"extents"`     // List of extent files
}

type ImageInfoSpecificVmdkWrapper

Since: 6.1

type ImageInfoSpecificVmdkWrapper struct {
    Data ImageInfoSpecificVmdk `json:"data"`
}

type InetSocketAddress

Captures a socket address or address range in the Internet namespace.

Since: 1.3

type InetSocketAddress struct {
    // Base type for this struct
    InetSocketAddressBase
    Numeric   *bool   `json:"numeric,omitempty"`    // true if the host/port are guaranteed to be numeric, false if name resolution should be attempted. Defaults to false. (Since 2.9)
    To        *uint16 `json:"to,omitempty"`         // If present, this is range of possible addresses, with port between @port and @to.
    Ipv4      *bool   `json:"ipv4,omitempty"`       // whether to accept IPv4 addresses, default try both IPv4 and IPv6
    Ipv6      *bool   `json:"ipv6,omitempty"`       // whether to accept IPv6 addresses, default try both IPv4 and IPv6
    KeepAlive *bool   `json:"keep-alive,omitempty"` // enable keep-alive when connecting to this socket. Not supported for passive sockets. (Since 4.2)
    Mptcp     *bool   `json:"mptcp,omitempty"`      // enable multi-path TCP. (Since 6.1)
}

type InetSocketAddressBase

type InetSocketAddressBase struct {
    Host string `json:"host"` // host part of the address
    Port string `json:"port"` // port part of the address
}

type InetSocketAddressWrapper

Since: 1.3

type InetSocketAddressWrapper struct {
    Data InetSocketAddress `json:"data"`
}

type InjectNmiCommand

Injects a Non-Maskable Interrupt into the default CPU (x86/s390) or all CPUs (ppc64). The command fails when the guest doesn't support injecting.

Returns: If successful, nothing

Since: 0.14

Note: prior to 2.1, this command was only supported for x86 and s390 VMs

Example: -> { "execute": "inject-nmi" } <- { "return": {} }

type InjectNmiCommand struct{}

type InputAxis

Position axis of a pointer input device (mouse, tablet).

Since: 2.0

type InputAxis int32
const (
    InputAxisX InputAxis = iota
    InputAxisY
)

func (InputAxis) MarshalJSON

func (s InputAxis) MarshalJSON() ([]byte, error)

func (*InputAxis) UnmarshalJSON

func (s *InputAxis) UnmarshalJSON(data []byte) error

type InputBarrierProperties

Properties for input-barrier objects.

Since: 4.2

type InputBarrierProperties struct {
    Name    string  `json:"name"`               // the screen name as declared in the screens section of barrier.conf
    Server  *string `json:"server,omitempty"`   // hostname of the Barrier server (default: "localhost")
    Port    *string `json:"port,omitempty"`     // TCP port of the Barrier server (default: "24800")
    XOrigin *string `json:"x-origin,omitempty"` // x coordinate of the leftmost pixel on the guest screen (default: "0")
    YOrigin *string `json:"y-origin,omitempty"` // y coordinate of the topmost pixel on the guest screen (default: "0")
    Width   *string `json:"width,omitempty"`    // the width of secondary screen in pixels (default: "1920")
    Height  *string `json:"height,omitempty"`   // the height of secondary screen in pixels (default: "1080")
}

type InputBtnEvent

Pointer button input event.

Since: 2.0

type InputBtnEvent struct {
    Button InputButton `json:"button"` // Which button this event is for.
    Down   bool        `json:"down"`   // True for key-down and false for key-up events.
}

type InputBtnEventWrapper

Since: 2.0

type InputBtnEventWrapper struct {
    Data InputBtnEvent `json:"data"`
}

type InputButton

Button of a pointer input device (mouse, tablet).

Since: 2.0

type InputButton int32
const (
    InputButtonLeft InputButton = iota
    InputButtonMiddle
    InputButtonRight
    InputButtonWheelUp
    InputButtonWheelDown
    InputButtonSide  // front side button of a 5-button mouse (since 2.9)
    InputButtonExtra // rear side button of a 5-button mouse (since 2.9)
    InputButtonWheelLeft
    InputButtonWheelRight
)

func (InputButton) MarshalJSON

func (s InputButton) MarshalJSON() ([]byte, error)

func (*InputButton) UnmarshalJSON

func (s *InputButton) UnmarshalJSON(data []byte) error

type InputEvent

Input event union.

Since: 2.0

type InputEvent struct {
    // Base type for this struct
    InputEventBase
    // Value based on @type, possible types:
    // * InputKeyEventWrapper
    // * InputBtnEventWrapper
    // * InputMoveEventWrapper
    // * InputMoveEventWrapper
    Value Any
}

func (InputEvent) MarshalJSON

func (s InputEvent) MarshalJSON() ([]byte, error)

func (*InputEvent) UnmarshalJSON

func (s *InputEvent) UnmarshalJSON(data []byte) error

type InputEventBase

Input event union.

Since: 2.0

type InputEventBase struct {
    Type InputEventKind `json:"type"` // the input type, one of: - 'key': Input event of Keyboard - 'btn': Input event of pointer buttons - 'rel': Input event of relative pointer motion - 'abs': Input event of absolute pointer motion
}

type InputEventKind

Since: 2.0

type InputEventKind int32
const (
    InputEventKindKey InputEventKind = iota
    InputEventKindBtn
    InputEventKindRel
    InputEventKindAbs
)

func (InputEventKind) MarshalJSON

func (s InputEventKind) MarshalJSON() ([]byte, error)

func (*InputEventKind) UnmarshalJSON

func (s *InputEventKind) UnmarshalJSON(data []byte) error

type InputKeyEvent

Keyboard input event.

Since: 2.0

type InputKeyEvent struct {
    Key  KeyValue `json:"key"`  // Which key this event is for.
    Down bool     `json:"down"` // True for key-down and false for key-up events.
}

type InputKeyEventWrapper

Since: 2.0

type InputKeyEventWrapper struct {
    Data InputKeyEvent `json:"data"`
}

type InputLinuxProperties

Properties for input-linux objects.

Since: 2.6

type InputLinuxProperties struct {
    Evdev      string          `json:"evdev"`                 // the path of the host evdev device to use
    GrabAll    *bool           `json:"grab_all,omitempty"`    // if true, grab is toggled for all devices (e.g. both keyboard and mouse) instead of just one device (default: false)
    Repeat     *bool           `json:"repeat,omitempty"`      // enables auto-repeat events (default: false)
    GrabToggle *GrabToggleKeys `json:"grab-toggle,omitempty"` // the key or key combination that toggles device grab (default: ctrl-ctrl)
}

type InputMoveEvent

Pointer motion input event.

Since: 2.0

type InputMoveEvent struct {
    Axis  InputAxis `json:"axis"`  // Which axis is referenced by @value.
    Value int64     `json:"value"` // Pointer position. For absolute coordinates the valid range is 0 -> 0x7ffff
}

type InputMoveEventWrapper

Since: 2.0

type InputMoveEventWrapper struct {
    Data InputMoveEvent `json:"data"`
}

type InputSendEventCommand

Send input event(s) to guest.

The @device and @head parameters can be used to send the input event to specific input devices in case (a) multiple input devices of the same kind are added to the virtual machine and (b) you have configured input routing (see docs/multiseat.txt) for those input devices. The parameters work exactly like the device and head properties of input devices. If @device is missing, only devices that have no input routing config are admissible. If @device is specified, both input devices with and without input routing config are admissible, but devices with input routing config take precedence.

Returns: Nothing on success.

Since: 2.6

Note: The consoles are visible in the qom tree, under /backend/console[$index]. They have a device link and head property, so it is possible to map which console belongs to which device and display.

Example: 1. Press left mouse button.

-> { "execute": "input-send-event",

"arguments": { "device": "video0",
               "events": [ { "type": "btn",
               "data" : { "down": true, "button": "left" } } ] } }

<- { "return": {} }

-> { "execute": "input-send-event",

"arguments": { "device": "video0",
               "events": [ { "type": "btn",
               "data" : { "down": false, "button": "left" } } ] } }

<- { "return": {} }

2. Press ctrl-alt-del.

-> { "execute": "input-send-event",

"arguments": { "events": [
   { "type": "key", "data" : { "down": true,
     "key": {"type": "qcode", "data": "ctrl" } } },
   { "type": "key", "data" : { "down": true,
     "key": {"type": "qcode", "data": "alt" } } },
   { "type": "key", "data" : { "down": true,
     "key": {"type": "qcode", "data": "delete" } } } ] } }

<- { "return": {} }

3. Move mouse pointer to absolute coordinates (20000, 400).

-> { "execute": "input-send-event" ,

"arguments": { "events": [
             { "type": "abs", "data" : { "axis": "x", "value" : 20000 } },
             { "type": "abs", "data" : { "axis": "y", "value" : 400 } } ] } }

<- { "return": {} }

type InputSendEventCommand struct {
    Device *string      `json:"device,omitempty"` // display device to send event(s) to.
    Head   *int64       `json:"head,omitempty"`   // head to send event(s) to, in case the display device supports multiple scanouts.
    Events []InputEvent `json:"events"`           // List of InputEvent union.
}

type IntWrapper

Since: 1.3

type IntWrapper struct {
    Data int64 `json:"data"`
}

type IoOperationType

An enumeration of the I/O operation types

Since: 2.1

type IoOperationType int32
const (
    IoOperationTypeRead  IoOperationType = iota
    IoOperationTypeWrite                 // write operation
)

func (IoOperationType) MarshalJSON

func (s IoOperationType) MarshalJSON() ([]byte, error)

func (*IoOperationType) UnmarshalJSON

func (s *IoOperationType) UnmarshalJSON(data []byte) error

type IothreadProperties

Properties for iothread objects.

Since: 2.0

type IothreadProperties struct {
    PollMaxNs   *int64 `json:"poll-max-ns,omitempty"`   // the maximum number of nanoseconds to busy wait for events. 0 means polling is disabled (default: 32768 on POSIX hosts, 0 otherwise)
    PollGrow    *int64 `json:"poll-grow,omitempty"`     // the multiplier used to increase the polling time when the algorithm detects it is missing events due to not polling long enough. 0 selects a default behaviour (default: 0)
    PollShrink  *int64 `json:"poll-shrink,omitempty"`   // the divisor used to decrease the polling time when the algorithm detects it is spending too long polling without encountering events. 0 selects a default behaviour (default: 0)
    AioMaxBatch *int64 `json:"aio-max-batch,omitempty"` // maximum number of requests in a batch for the AIO engine, 0 means that the engine will use its default (default:0, since 6.1)
}

type IscsiHeaderDigest

An enumeration of header digests supported by libiscsi

Since: 2.9

type IscsiHeaderDigest int32
const (
    IscsiHeaderDigestCrc32C IscsiHeaderDigest = iota
    IscsiHeaderDigestNone
    IscsiHeaderDigestCrc32CNone
    IscsiHeaderDigestNoneCrc32C
)

func (IscsiHeaderDigest) MarshalJSON

func (s IscsiHeaderDigest) MarshalJSON() ([]byte, error)

func (*IscsiHeaderDigest) UnmarshalJSON

func (s *IscsiHeaderDigest) UnmarshalJSON(data []byte) error

type IscsiTransport

An enumeration of libiscsi transport types

Since: 2.9

type IscsiTransport int32
const (
    IscsiTransportTcp IscsiTransport = iota
    IscsiTransportIser
)

func (IscsiTransport) MarshalJSON

func (s IscsiTransport) MarshalJSON() ([]byte, error)

func (*IscsiTransport) UnmarshalJSON

func (s *IscsiTransport) UnmarshalJSON(data []byte) error

type JSONType

The four primitive and two structured types according to RFC 8259 section 1, plus 'int' (split off 'number'), plus the obvious top type 'value'.

Since: 2.5

type JSONType int32
const (
    JSONTypeString JSONType = iota
    JSONTypeNumber
    JSONTypeInt
    JSONTypeBoolean
    JSONTypeNull
    JSONTypeObject
    JSONTypeArray
    JSONTypeValue
)

func (JSONType) MarshalJSON

func (s JSONType) MarshalJSON() ([]byte, error)

func (*JSONType) UnmarshalJSON

func (s *JSONType) UnmarshalJSON(data []byte) error

type JobCancelCommand

Instruct an active background job to cancel at the next opportunity. This command returns immediately after marking the active job for cancellation.

The job will cancel as soon as possible and then emit a JOB_STATUS_CHANGE event. Usually, the status will change to ABORTING, but it is possible that a job successfully completes (e.g. because it was almost done and there was no opportunity to cancel earlier than completing the job) and transitions to PENDING instead.

Since: 3.0

type JobCancelCommand struct {
    Id string `json:"id"` // The job identifier.
}

type JobCompleteCommand

Manually trigger completion of an active job in the READY state.

Since: 3.0

type JobCompleteCommand struct {
    Id string `json:"id"` // The job identifier.
}

type JobDismissCommand

Deletes a job that is in the CONCLUDED state. This command only needs to be run explicitly for jobs that don't have automatic dismiss enabled.

This command will refuse to operate on any job that has not yet reached its terminal state, JOB_STATUS_CONCLUDED. For jobs that make use of JOB_READY event, job-cancel or job-complete will still need to be used as appropriate.

Since: 3.0

type JobDismissCommand struct {
    Id string `json:"id"` // The job identifier.
}

type JobFinalizeCommand

Instructs all jobs in a transaction (or a single job if it is not part of any transaction) to finalize any graph changes and do any necessary cleanup. This command requires that all involved jobs are in the PENDING state.

For jobs in a transaction, instructing one job to finalize will force ALL jobs in the transaction to finalize, so it is only necessary to instruct a single member job to finalize.

Since: 3.0

type JobFinalizeCommand struct {
    Id string `json:"id"` // The identifier of any job in the transaction, or of a job that is not part of any transaction.
}

type JobInfo

Information about a job.

Since: 3.0

type JobInfo struct {
    Id              string    `json:"id"`               // The job identifier
    Type            JobType   `json:"type"`             // The kind of job that is being performed
    Status          JobStatus `json:"status"`           // Current job state/status
    CurrentProgress int64     `json:"current-progress"` // Progress made until now. The unit is arbitrary and the value can only meaningfully be used for the ratio of @current-progress to @total-progress. The value is monotonically increasing.
    TotalProgress   int64     `json:"total-progress"`   // Estimated @current-progress value at the completion of the job. This value can arbitrarily change while the job is running, in both directions.
    Error           *string   `json:"error,omitempty"`  // If this field is present, the job failed; if it is still missing in the CONCLUDED state, this indicates successful completion. The value is a human-readable error message to describe the reason for the job failure. It should not be parsed by applications.
}

type JobPauseCommand

Pause an active job.

This command returns immediately after marking the active job for pausing. Pausing an already paused job is an error.

The job will pause as soon as possible, which means transitioning into the PAUSED state if it was RUNNING, or into STANDBY if it was READY. The corresponding JOB_STATUS_CHANGE event will be emitted.

Cancelling a paused job automatically resumes it.

Since: 3.0

type JobPauseCommand struct {
    Id string `json:"id"` // The job identifier.
}

type JobResumeCommand

Resume a paused job.

This command returns immediately after resuming a paused job. Resuming an already running job is an error.

@id : The job identifier.

Since: 3.0

type JobResumeCommand struct {
    Id string `json:"id"`
}

type JobStatus

Indicates the present state of a given job in its lifetime.

Since: 2.12

type JobStatus int32
const (
    JobStatusUndefined JobStatus = iota
    JobStatusCreated             // The job has been created, but not yet started.
    JobStatusRunning             // The job is currently running.
    JobStatusPaused              // The job is running, but paused. The pause may be requested by either the QMP user or by internal processes.
    JobStatusReady               // The job is running, but is ready for the user to signal completion. This is used for long-running jobs like mirror that are designed to run indefinitely.
    JobStatusStandby             // The job is ready, but paused. This is nearly identical to @paused. The job may return to @ready or otherwise be canceled.
    JobStatusWaiting             // The job is waiting for other jobs in the transaction to converge to the waiting state. This status will likely not be visible for the last job in a transaction.
    JobStatusPending             // The job has finished its work, but has finalization steps that it needs to make prior to completing. These changes will require manual intervention via @job-finalize if auto-finalize was set to false. These pending changes may still fail.
    JobStatusAborting            // The job is in the process of being aborted, and will finish with an error. The job will afterwards report that it is @concluded. This status may not be visible to the management process.
    JobStatusConcluded           // The job has finished all work. If auto-dismiss was set to false, the job will remain in the query list until it is dismissed via @job-dismiss.
    JobStatusNull                // The job is in the process of being dismantled. This state should not ever be visible externally.
)

func (JobStatus) MarshalJSON

func (s JobStatus) MarshalJSON() ([]byte, error)

func (*JobStatus) UnmarshalJSON

func (s *JobStatus) UnmarshalJSON(data []byte) error

type JobStatusChangeEvent

Emitted when a job transitions to a different status.

Since: 3.0

type JobStatusChangeEvent struct {
    Id     string    `json:"id"`     // The job identifier
    Status JobStatus `json:"status"` // The new job status
}

type JobType

Type of a background job.

Since: 1.7

type JobType int32
const (
    JobTypeCommit         JobType = iota
    JobTypeStream                 // block stream job type, see "block-stream"
    JobTypeMirror                 // drive mirror job type, see "drive-mirror"
    JobTypeBackup                 // drive backup job type, see "drive-backup"
    JobTypeCreate                 // image creation job type, see "blockdev-create" (since 3.0)
    JobTypeAmend                  // image options amend job type, see "x-blockdev-amend" (since 5.1)
    JobTypeSnapshotLoad           // snapshot load job type, see "snapshot-load" (since 6.0)
    JobTypeSnapshotSave           // snapshot save job type, see "snapshot-save" (since 6.0)
    JobTypeSnapshotDelete         // snapshot delete job type, see "snapshot-delete" (since 6.0)
)

func (JobType) MarshalJSON

func (s JobType) MarshalJSON() ([]byte, error)

func (*JobType) UnmarshalJSON

func (s *JobType) UnmarshalJSON(data []byte) error

type JobVerb

Represents command verbs that can be applied to a job.

Since: 2.12

type JobVerb int32
const (
    JobVerbCancel   JobVerb = iota
    JobVerbPause            // see @job-pause
    JobVerbResume           // see @job-resume
    JobVerbSetSpeed         // see @block-job-set-speed
    JobVerbComplete         // see @job-complete
    JobVerbDismiss          // see @job-dismiss
    JobVerbFinalize         // see @job-finalize
)

func (JobVerb) MarshalJSON

func (s JobVerb) MarshalJSON() ([]byte, error)

func (*JobVerb) UnmarshalJSON

func (s *JobVerb) UnmarshalJSON(data []byte) error

type KeyValue

Represents a keyboard key.

Since: 1.3

type KeyValue struct {
    // Base type for this struct
    KeyValueBase
    // Value based on @type, possible types:
    // * IntWrapper
    // * QKeyCodeWrapper
    Value Any
}

func (KeyValue) MarshalJSON

func (s KeyValue) MarshalJSON() ([]byte, error)

func (*KeyValue) UnmarshalJSON

func (s *KeyValue) UnmarshalJSON(data []byte) error

type KeyValueBase

Represents a keyboard key.

Since: 1.3

type KeyValueBase struct {
    Type KeyValueKind `json:"type"`
}

type KeyValueKind

Since: 1.3

type KeyValueKind int32
const (
    KeyValueKindNumber KeyValueKind = iota
    KeyValueKindQcode
)

func (KeyValueKind) MarshalJSON

func (s KeyValueKind) MarshalJSON() ([]byte, error)

func (*KeyValueKind) UnmarshalJSON

func (s *KeyValueKind) UnmarshalJSON(data []byte) error

type KvmInfo

Information about support for KVM acceleration

Since: 0.14

type KvmInfo struct {
    Enabled bool `json:"enabled"` // true if KVM acceleration is active
    Present bool `json:"present"` // true if KVM acceleration is built into this executable
}

type LostTickPolicy

Policy for handling lost ticks in timer devices. Ticks end up getting lost when, for example, the guest is paused.

Since: 2.0

type LostTickPolicy int32
const (
    LostTickPolicyDiscard LostTickPolicy = iota
    LostTickPolicyDelay                  // continue to deliver ticks at the normal rate. The guest OS will not notice anything is amiss, as from its point of view time will have continued to flow normally. The time in the guest should now be behind the time in the host by exactly the amount of time during which ticks have been missed.
    LostTickPolicySlew                   // deliver ticks at a higher rate to catch up with the missed ticks. The guest OS will not notice anything is amiss, as from its point of view time will have continued to flow normally. Once the timer has managed to catch up with all the missing ticks, the time in the guest and in the host should match.
)

func (LostTickPolicy) MarshalJSON

func (s LostTickPolicy) MarshalJSON() ([]byte, error)

func (*LostTickPolicy) UnmarshalJSON

func (s *LostTickPolicy) UnmarshalJSON(data []byte) error

type MachineInfo

Information describing a machine.

Since: 1.2

type MachineInfo struct {
    Name             string  `json:"name"`                       // the name of the machine
    Alias            *string `json:"alias,omitempty"`            // an alias for the machine name
    IsDefault        *bool   `json:"is-default,omitempty"`       // whether the machine is default
    CpuMax           int64   `json:"cpu-max"`                    // maximum number of CPUs supported by the machine type (since 1.5)
    HotpluggableCpus bool    `json:"hotpluggable-cpus"`          // cpu hotplug via -device is supported (since 2.7)
    NumaMemSupported bool    `json:"numa-mem-supported"`         // true if '-numa node,mem' option is supported by the machine type and false otherwise (since 4.1)
    Deprecated       bool    `json:"deprecated"`                 // if true, the machine type is deprecated and may be removed in future versions of QEMU according to the QEMU deprecation policy (since 4.1)
    DefaultCpuType   *string `json:"default-cpu-type,omitempty"` // default CPU model typename if none is requested via the -cpu argument. (since 4.2)
    DefaultRamId     *string `json:"default-ram-id,omitempty"`   // the default ID of initial RAM memory backend (since 5.2)
}

type MapEntry

Mapping information from a virtual block range to a host file range

Since: 2.6

type MapEntry struct {
    Start    int64   `json:"start"`              // virtual (guest) offset of the first byte described by this entry
    Length   int64   `json:"length"`             // the number of bytes of the mapped virtual range
    Data     bool    `json:"data"`               // reading the image will actually read data from a file (in particular, if @offset is present this means that the sectors are not simply preallocated, but contain actual data in raw format)
    Zero     bool    `json:"zero"`               // whether the virtual blocks read as zeroes
    Depth    int64   `json:"depth"`              // number of layers (0 = top image, 1 = top image's backing file, ..., n - 1 = bottom image (where n is the number of images in the chain)) before reaching one for which the range is allocated
    Present  bool    `json:"present"`            // true if this layer provides the data, false if adding a backing layer could impact this region (since 6.1)
    Offset   *int64  `json:"offset,omitempty"`   // if present, the image file stores the data for this range in raw format at the given (host) offset
    Filename *string `json:"filename,omitempty"` // filename that is referred to by @offset
}

type MemUnplugErrorEvent

Emitted when memory hot unplug error occurs.

Since: 2.4

Example: <- { "event": "MEM_UNPLUG_ERROR"

"data": { "device": "dimm1",
          "msg": "acpi: device unplug for unsupported device"
},
"timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
type MemUnplugErrorEvent struct {
    Device string `json:"device"` // device name
    Msg    string `json:"msg"`    // Informative message
}

type Memdev

Information about memory backend

Since: 2.1

type Memdev struct {
    Id        *string       `json:"id,omitempty"`      // backend's ID if backend has 'id' property (since 2.9)
    Size      uint64        `json:"size"`              // memory backend size
    Merge     bool          `json:"merge"`             // whether memory merge support is enabled
    Dump      bool          `json:"dump"`              // whether memory backend's memory is included in a core dump
    Prealloc  bool          `json:"prealloc"`          // whether memory was preallocated
    Share     bool          `json:"share"`             // whether memory is private to QEMU or shared (since 6.1)
    Reserve   *bool         `json:"reserve,omitempty"` // whether swap space (or huge pages) was reserved if applicable. This corresponds to the user configuration and not the actual behavior implemented in the OS to perform the reservation. For example, Linux will never reserve swap space for shared file mappings. (since 6.1)
    HostNodes []uint16      `json:"host-nodes"`        // host nodes for its memory policy
    Policy    HostMemPolicy `json:"policy"`            // memory policy of memory backend
}

type MemoryBackendEpcProperties

Properties for memory-backend-epc objects.

The @share boolean option is true by default with epc

The @merge boolean option is false by default with epc

The @dump boolean option is false by default with epc

Since: 6.2

type MemoryBackendEpcProperties struct {
    // Base type for this struct
    MemoryBackendProperties
}

type MemoryBackendFileProperties

Properties for memory-backend-file objects.

Since: 2.1

type MemoryBackendFileProperties struct {
    // Base type for this struct
    MemoryBackendProperties
    Align       *uint64 `json:"align,omitempty"`        // the base address alignment when QEMU mmap(2)s @mem-path. Some backend stores specified by @mem-path require an alignment different than the default one used by QEMU, e.g. the device DAX /dev/dax0.0 requires 2M alignment rather than 4K. In such cases, users can specify the required alignment via this option. 0 selects a default alignment (currently the page size). (default: 0)
    DiscardData *bool   `json:"discard-data,omitempty"` // if true, the file contents can be destroyed when QEMU exits, to avoid unnecessarily flushing data to the backing file. Note that ``discard-data`` is only an optimization, and QEMU might not discard file contents if it aborts unexpectedly or is terminated using SIGKILL. (default: false)
    MemPath     string  `json:"mem-path"`               // the path to either a shared memory or huge page filesystem mount
    Pmem        *bool   `json:"pmem,omitempty"`         // specifies whether the backing file specified by @mem-path is in host persistent memory that can be accessed using the SNIA NVM programming model (e.g. Intel NVDIMM).
    Readonly    *bool   `json:"readonly,omitempty"`     // if true, the backing file is opened read-only; if false, it is opened read-write. (default: false)
}

type MemoryBackendMemfdProperties

Properties for memory-backend-memfd objects.

The @share boolean option is true by default with memfd.

Since: 2.12

type MemoryBackendMemfdProperties struct {
    // Base type for this struct
    MemoryBackendProperties
    Hugetlb     *bool   `json:"hugetlb,omitempty"`     // if true, the file to be created resides in the hugetlbfs filesystem (default: false)
    Hugetlbsize *uint64 `json:"hugetlbsize,omitempty"` // the hugetlb page size on systems that support multiple hugetlb page sizes (it must be a power of 2 value supported by the system). 0 selects a default page size. This option is ignored if @hugetlb is false. (default: 0)
    Seal        *bool   `json:"seal,omitempty"`        // if true, create a sealed-file, which will block further resizing of the memory (default: true)
}

type MemoryBackendProperties

Properties for objects of classes derived from memory-backend.

Note: prealloc=true and reserve=false cannot be set at the same time. With reserve=true, the behavior depends on the operating system: for example, Linux will not reserve swap space for shared file mappings -- "not applicable". In contrast, reserve=false will bail out if it cannot be configured accordingly.

Since: 2.1

type MemoryBackendProperties struct {
    Dump                           *bool          `json:"dump,omitempty"`                                 // if true, include the memory in core dumps (default depends on the machine type)
    HostNodes                      []uint16       `json:"host-nodes,omitempty"`                           // the list of NUMA host nodes to bind the memory to
    Merge                          *bool          `json:"merge,omitempty"`                                // if true, mark the memory as mergeable (default depends on the machine type)
    Policy                         *HostMemPolicy `json:"policy,omitempty"`                               // the NUMA policy (default: 'default')
    Prealloc                       *bool          `json:"prealloc,omitempty"`                             // if true, preallocate memory (default: false)
    PreallocThreads                *uint32        `json:"prealloc-threads,omitempty"`                     // number of CPU threads to use for prealloc (default: 1)
    Share                          *bool          `json:"share,omitempty"`                                // if false, the memory is private to QEMU; if true, it is shared (default: false)
    Reserve                        *bool          `json:"reserve,omitempty"`                              // if true, reserve swap space (or huge pages) if applicable (default: true) (since 6.1)
    Size                           uint64         `json:"size"`                                           // size of the memory region in bytes
    XUseCanonicalPathForRamblockId *bool          `json:"x-use-canonical-path-for-ramblock-id,omitempty"` // if true, the canoncial path is used for ramblock-id. Disable this for 4.0 machine types or older to allow migration with newer QEMU versions. (default: false generally, but true for machine types <= 4.0)
}

type MemoryDeviceInfo

Union containing information about a memory device

nvdimm is included since 2.12. virtio-pmem is included since 4.1. virtio-mem is included since 5.1. sgx-epc is included since 6.2.

Since: 2.1

type MemoryDeviceInfo struct {
    // Base type for this struct
    MemoryDeviceInfoBase
    // Value based on @type, possible types:
    // * PCDIMMDeviceInfoWrapper
    // * PCDIMMDeviceInfoWrapper
    // * VirtioPMEMDeviceInfoWrapper
    // * VirtioMEMDeviceInfoWrapper
    // * SgxEPCDeviceInfoWrapper
    Value Any
}

func (MemoryDeviceInfo) MarshalJSON

func (s MemoryDeviceInfo) MarshalJSON() ([]byte, error)

func (*MemoryDeviceInfo) UnmarshalJSON

func (s *MemoryDeviceInfo) UnmarshalJSON(data []byte) error

type MemoryDeviceInfoBase

Union containing information about a memory device

nvdimm is included since 2.12. virtio-pmem is included since 4.1. virtio-mem is included since 5.1. sgx-epc is included since 6.2.

Since: 2.1

type MemoryDeviceInfoBase struct {
    Type MemoryDeviceInfoKind `json:"type"`
}

type MemoryDeviceInfoKind

Since: 2.1

type MemoryDeviceInfoKind int32
const (
    MemoryDeviceInfoKindDimm MemoryDeviceInfoKind = iota
    MemoryDeviceInfoKindNvdimm
    MemoryDeviceInfoKindVirtioPmem
    MemoryDeviceInfoKindVirtioMem
    MemoryDeviceInfoKindSgxEpc
)

func (MemoryDeviceInfoKind) MarshalJSON

func (s MemoryDeviceInfoKind) MarshalJSON() ([]byte, error)

func (*MemoryDeviceInfoKind) UnmarshalJSON

func (s *MemoryDeviceInfoKind) UnmarshalJSON(data []byte) error

type MemoryDeviceSizeChangeEvent

Emitted when the size of a memory device changes. Only emitted for memory devices that can actually change the size (e.g., virtio-mem due to guest action).

Note: this event is rate-limited.

Since: 5.1

Example: <- { "event": "MEMORY_DEVICE_SIZE_CHANGE",

"data": { "id": "vm0", "size": 1073741824},
"timestamp": { "seconds": 1588168529, "microseconds": 201316 } }
type MemoryDeviceSizeChangeEvent struct {
    Id      *string `json:"id,omitempty"` // device's ID
    Size    uint64  `json:"size"`         // the new size of memory that the device provides
    QomPath string  `json:"qom-path"`     // path to the device object in the QOM tree (since 6.2)
}

type MemoryFailureAction

Actions taken by QEMU in response to a hardware memory failure.

Since: 5.2

type MemoryFailureAction int32
const (
    MemoryFailureActionIgnore MemoryFailureAction = iota
    MemoryFailureActionInject                     // memory failure occurred in guest memory, the guest enabled MCE handling mechanism, and QEMU could inject the MCE into the guest successfully.
    MemoryFailureActionFatal                      // the failure is unrecoverable. This occurs for action-required failures if the recipient is the hypervisor; QEMU will exit.
    MemoryFailureActionReset                      // the failure is unrecoverable but confined to the guest. This occurs if the recipient is a guest guest which is not ready to handle memory failures.
)

func (MemoryFailureAction) MarshalJSON

func (s MemoryFailureAction) MarshalJSON() ([]byte, error)

func (*MemoryFailureAction) UnmarshalJSON

func (s *MemoryFailureAction) UnmarshalJSON(data []byte) error

type MemoryFailureEvent

Emitted when a memory failure occurs on host side.

Since: 5.2

Example: <- { "event": "MEMORY_FAILURE",

"data": { "recipient": "hypervisor",
          "action": "fatal",
          "flags": { 'action-required': false } }
type MemoryFailureEvent struct {
    Recipient MemoryFailureRecipient `json:"recipient"` // recipient is defined as @MemoryFailureRecipient.
    Action    MemoryFailureAction    `json:"action"`    // action that has been taken. action is defined as @MemoryFailureAction.
    Flags     MemoryFailureFlags     `json:"flags"`     // flags for MemoryFailureAction. action is defined as @MemoryFailureFlags.
}

type MemoryFailureFlags

Additional information on memory failures.

Since: 5.2

type MemoryFailureFlags struct {
    ActionRequired bool `json:"action-required"` // whether a memory failure event is action-required or action-optional (e.g. a failure during memory scrub).
    Recursive      bool `json:"recursive"`       // whether the failure occurred while the previous failure was still in progress.
}

type MemoryFailureRecipient

Hardware memory failure occurs, handled by recipient.

Since: 5.2

type MemoryFailureRecipient int32
const (
    MemoryFailureRecipientHypervisor MemoryFailureRecipient = iota
    MemoryFailureRecipientGuest                             // memory failure at guest memory,
)

func (MemoryFailureRecipient) MarshalJSON

func (s MemoryFailureRecipient) MarshalJSON() ([]byte, error)

func (*MemoryFailureRecipient) UnmarshalJSON

func (s *MemoryFailureRecipient) UnmarshalJSON(data []byte) error

type MemoryInfo

Actual memory information in bytes.

Since: 2.11

type MemoryInfo struct {
    BaseMemory    uint64  `json:"base-memory"`              // size of "base" memory specified with command line option -m.
    PluggedMemory *uint64 `json:"plugged-memory,omitempty"` // size of memory that can be hot-unplugged. This field is omitted if target doesn't support memory hotplug (i.e. CONFIG_MEM_DEVICE not defined at build time).
}

type MemsaveCommand

Save a portion of guest memory to a file.

Returns: Nothing on success

Since: 0.14

Notes: Errors were not reliably returned until 1.1

Example: -> { "execute": "memsave",

"arguments": { "val": 10,
               "size": 100,
               "filename": "/tmp/virtual-mem-dump" } }

<- { "return": {} }

type MemsaveCommand struct {
    Val      int64  `json:"val"`                 // the virtual address of the guest to start from
    Size     int64  `json:"size"`                // the size of memory region to save
    Filename string `json:"filename"`            // the file to save the memory to as binary data
    CpuIndex *int64 `json:"cpu-index,omitempty"` // the index of the virtual CPU to use for translating the virtual address (defaults to CPU 0)
}

type MigrateCancelCommand

Cancel the current executing migration process.

Returns: nothing on success

Notes: This command succeeds even if there is no migration process running.

Since: 0.14

Example: -> { "execute": "migrate_cancel" } <- { "return": {} }

type MigrateCancelCommand struct{}

type MigrateCommand

Migrates the current running guest to another Virtual Machine.

Returns: nothing on success

Since: 0.14

Notes: 1. The 'query-migrate' command should be used to check migration's progress

and final result (this information is provided by the 'status' member)

2. All boolean arguments default to false

3. The user Monitor's "detach" argument is invalid in QMP and should not

be used

Example: -> { "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } } <- { "return": {} }

type MigrateCommand struct {
    Uri    string `json:"uri"`              // the Uniform Resource Identifier of the destination VM
    Blk    *bool  `json:"blk,omitempty"`    // do block migration (full disk copy)
    Inc    *bool  `json:"inc,omitempty"`    // incremental disk copy migration
    Detach *bool  `json:"detach,omitempty"` // this argument exists only for compatibility reasons and is ignored by QEMU
    Resume *bool  `json:"resume,omitempty"` // resume one paused migration, default "off". (since 3.0)
}

type MigrateContinueCommand

Continue migration when it's in a paused state.

Returns: nothing on success

Since: 2.11

Example: -> { "execute": "migrate-continue" , "arguments":

{ "state": "pre-switchover" } }

<- { "return": {} }

type MigrateContinueCommand struct {
    State MigrationStatus `json:"state"` // The state the migration is currently expected to be in
}

type MigrateIncomingCommand

Start an incoming migration, the qemu must have been started with -incoming defer

Returns: nothing on success

Since: 2.3

Notes: 1. It's a bad idea to use a string for the uri, but it needs to stay

compatible with -incoming and the format of the uri is already exposed
above libvirt.

2. QEMU must be started with -incoming defer to allow migrate-incoming to

be used.

3. The uri format is the same as for -incoming

Example: -> { "execute": "migrate-incoming",

"arguments": { "uri": "tcp::4446" } }

<- { "return": {} }

type MigrateIncomingCommand struct {
    Uri string `json:"uri"` // The Uniform Resource Identifier identifying the source or address to listen on
}

type MigratePauseCommand

Pause a migration. Currently it only supports postcopy.

Returns: nothing.

Example: -> { "execute": "migrate-pause" } <- { "return": {} }

Since: 3.0

type MigratePauseCommand struct{}

type MigrateRecoverCommand

Provide a recovery migration stream URI.

Returns: nothing.

Example: -> { "execute": "migrate-recover",

"arguments": { "uri": "tcp:192.168.1.200:12345" } }

<- { "return": {} }

Since: 3.0

type MigrateRecoverCommand struct {
    Uri string `json:"uri"` // the URI to be used for the recovery of migration stream.
}

type MigrateSetCapabilitiesCommand

Enable/Disable the following migration capabilities (like xbzrle)

Since: 1.2

Example: -> { "execute": "migrate-set-capabilities" , "arguments":

{ "capabilities": [ { "capability": "xbzrle", "state": true } ] } }
type MigrateSetCapabilitiesCommand struct {
    Capabilities []MigrationCapabilityStatus `json:"capabilities"` // json array of capability modifications to make
}

type MigrateSetParameters

Since: 2.4

type MigrateSetParameters struct {
    AnnounceInitial          *uint64                    `json:"announce-initial,omitempty"`           // Initial delay (in milliseconds) before sending the first announce (Since 4.0)
    AnnounceMax              *uint64                    `json:"announce-max,omitempty"`               // Maximum delay (in milliseconds) between packets in the announcement (Since 4.0)
    AnnounceRounds           *uint64                    `json:"announce-rounds,omitempty"`            // Number of self-announce packets sent after migration (Since 4.0)
    AnnounceStep             *uint64                    `json:"announce-step,omitempty"`              // Increase in delay (in milliseconds) between subsequent packets in the announcement (Since 4.0)
    CompressLevel            *uint8                     `json:"compress-level,omitempty"`             // compression level
    CompressThreads          *uint8                     `json:"compress-threads,omitempty"`           // compression thread count
    CompressWaitThread       *bool                      `json:"compress-wait-thread,omitempty"`       // Controls behavior when all compression threads are currently busy. If true (default), wait for a free compression thread to become available; otherwise, send the page uncompressed. (Since 3.1)
    DecompressThreads        *uint8                     `json:"decompress-threads,omitempty"`         // decompression thread count
    ThrottleTriggerThreshold *uint8                     `json:"throttle-trigger-threshold,omitempty"` // The ratio of bytes_dirty_period and bytes_xfer_period to trigger throttling. It is expressed as percentage. The default value is 50. (Since 5.0)
    CpuThrottleInitial       *uint8                     `json:"cpu-throttle-initial,omitempty"`       // Initial percentage of time guest cpus are throttled when migration auto-converge is activated. The default value is 20. (Since 2.7)
    CpuThrottleIncrement     *uint8                     `json:"cpu-throttle-increment,omitempty"`     // throttle percentage increase each time auto-converge detects that migration is not making progress. The default value is 10. (Since 2.7)
    CpuThrottleTailslow      *bool                      `json:"cpu-throttle-tailslow,omitempty"`      // Make CPU throttling slower at tail stage At the tail stage of throttling, the Guest is very sensitive to CPU percentage while the @cpu-throttle -increment is excessive usually at tail stage. If this parameter is true, we will compute the ideal CPU percentage used by the Guest, which may exactly make the dirty rate match the dirty rate threshold. Then we will choose a smaller throttle increment between the one specified by @cpu-throttle-increment and the one generated by ideal CPU percentage. Therefore, it is compatible to traditional throttling, meanwhile the throttle increment won't be excessive at tail stage. The default value is false. (Since 5.1)
    TlsCreds                 *StrOrNull                 `json:"tls-creds,omitempty"`                  // ID of the 'tls-creds' object that provides credentials for establishing a TLS connection over the migration data channel. On the outgoing side of the migration, the credentials must be for a 'client' endpoint, while for the incoming side the credentials must be for a 'server' endpoint. Setting this to a non-empty string enables TLS for all migrations. An empty string means that QEMU will use plain text mode for migration, rather than TLS (Since 2.9) Previously (since 2.7), this was reported by omitting tls-creds instead.
    TlsHostname              *StrOrNull                 `json:"tls-hostname,omitempty"`               // hostname of the target host for the migration. This is required when using x509 based TLS credentials and the migration URI does not already include a hostname. For example if using fd: or exec: based migration, the hostname must be provided so that the server's x509 certificate identity can be validated. (Since 2.7) An empty string means that QEMU will use the hostname associated with the migration URI, if any. (Since 2.9) Previously (since 2.7), this was reported by omitting tls-hostname instead.
    TlsAuthz                 *StrOrNull                 `json:"tls-authz,omitempty"`
    MaxBandwidth             *uint64                    `json:"max-bandwidth,omitempty"`          // to set maximum speed for migration. maximum speed in bytes per second. (Since 2.8)
    DowntimeLimit            *uint64                    `json:"downtime-limit,omitempty"`         // set maximum tolerated downtime for migration. maximum downtime in milliseconds (Since 2.8)
    XCheckpointDelay         *uint32                    `json:"x-checkpoint-delay,omitempty"`     // the delay time between two COLO checkpoints. (Since 2.8)
    BlockIncremental         *bool                      `json:"block-incremental,omitempty"`      // Affects how much storage is migrated when the block migration capability is enabled. When false, the entire storage backing chain is migrated into a flattened image at the destination; when true, only the active qcow2 layer is migrated and the destination must already have access to the same backing chain as was used on the source. (since 2.10)
    MultifdChannels          *uint8                     `json:"multifd-channels,omitempty"`       // Number of channels used to migrate data in parallel. This is the same number that the number of sockets used for migration. The default value is 2 (since 4.0)
    XbzrleCacheSize          *uint64                    `json:"xbzrle-cache-size,omitempty"`      // cache size to be used by XBZRLE migration. It needs to be a multiple of the target page size and a power of 2 (Since 2.11)
    MaxPostcopyBandwidth     *uint64                    `json:"max-postcopy-bandwidth,omitempty"` // Background transfer bandwidth during postcopy. Defaults to 0 (unlimited). In bytes per second. (Since 3.0)
    MaxCpuThrottle           *uint8                     `json:"max-cpu-throttle,omitempty"`       // maximum cpu throttle percentage. The default value is 99. (Since 3.1)
    MultifdCompression       *MultiFDCompression        `json:"multifd-compression,omitempty"`    // Which compression method to use. Defaults to none. (Since 5.0)
    MultifdZlibLevel         *uint8                     `json:"multifd-zlib-level,omitempty"`     // Set the compression level to be used in live migration, the compression level is an integer between 0 and 9, where 0 means no compression, 1 means the best compression speed, and 9 means best compression ratio which will consume more CPU. Defaults to 1. (Since 5.0)
    MultifdZstdLevel         *uint8                     `json:"multifd-zstd-level,omitempty"`     // Set the compression level to be used in live migration, the compression level is an integer between 0 and 20, where 0 means no compression, 1 means the best compression speed, and 20 means best compression ratio which will consume more CPU. Defaults to 1. (Since 5.0)
    BlockBitmapMapping       []BitmapMigrationNodeAlias `json:"block-bitmap-mapping,omitempty"`   // Maps block nodes and bitmaps on them to aliases for the purpose of dirty bitmap migration. Such aliases may for example be the corresponding names on the opposite site. The mapping must be one-to-one, but not necessarily complete: On the source, unmapped bitmaps and all bitmaps on unmapped nodes will be ignored. On the destination, encountering an unmapped alias in the incoming migration stream will result in a report, and all further bitmap migration data will then be discarded. Note that the destination does not know about bitmaps it does not receive, so there is no limitation or requirement regarding the number of bitmaps received, or how they are named, or on which nodes they are placed. By default (when this parameter has never been set), bitmap names are mapped to themselves. Nodes are mapped to their block device name if there is one, and to their node name otherwise. (Since 5.2)
}

type MigrateSetParametersCommand

Set various migration parameters.

Since: 2.4

Example: -> { "execute": "migrate-set-parameters" ,

"arguments": { "compress-level": 1 } }
type MigrateSetParametersCommand struct {
    MigrateSetParameters
}

type MigrateStartPostcopyCommand

Followup to a migration command to switch the migration to postcopy mode. The postcopy-ram capability must be set on both source and destination before the original migration command.

Since: 2.5

Example: -> { "execute": "migrate-start-postcopy" } <- { "return": {} }

type MigrateStartPostcopyCommand struct{}

type MigrationCapability

Migration capabilities enumeration

Since: 1.2

type MigrationCapability int32
const (
    MigrationCapabilityXbzrle                MigrationCapability = iota
    MigrationCapabilityRdmaPinAll                                // Controls whether or not the entire VM memory footprint is mlock()'d on demand or all at once. Refer to docs/rdma.txt for usage. Disabled by default. (since 2.0)
    MigrationCapabilityAutoConverge                              // If enabled, QEMU will automatically throttle down the guest to speed up convergence of RAM migration. (since 1.6)
    MigrationCapabilityZeroBlocks                                // During storage migration encode blocks of zeroes efficiently. This essentially saves 1MB of zeroes per block on the wire. Enabling requires source and target VM to support this feature. To enable it is sufficient to enable the capability on the source VM. The feature is disabled by default. (since 1.6)
    MigrationCapabilityCompress                                  // Use multiple compression threads to accelerate live migration. This feature can help to reduce the migration traffic, by sending compressed pages. Please note that if compress and xbzrle are both on, compress only takes effect in the ram bulk stage, after that, it will be disabled and only xbzrle takes effect, this can help to minimize migration traffic. The feature is disabled by default. (since 2.4 )
    MigrationCapabilityEvents                                    // generate events for each migration state change (since 2.4 )
    MigrationCapabilityPostcopyRam                               // Start executing on the migration target before all of RAM has been migrated, pulling the remaining pages along as needed. The capacity must have the same setting on both source and target or migration will not even start. NOTE: If the migration fails during postcopy the VM will fail. (since 2.6)
    MigrationCapabilityXColo                                     // If enabled, migration will never end, and the state of the VM on the primary side will be migrated continuously to the VM on secondary side, this process is called COarse-Grain LOck Stepping (COLO) for Non-stop Service. (since 2.8)
    MigrationCapabilityReleaseRam                                // if enabled, qemu will free the migrated ram pages on the source during postcopy-ram migration. (since 2.9)
    MigrationCapabilityBlock                                     // If enabled, QEMU will also migrate the contents of all block devices. Default is disabled. A possible alternative uses mirror jobs to a builtin NBD server on the destination, which offers more flexibility. (Since 2.10)
    MigrationCapabilityReturnPath                                // If enabled, migration will use the return path even for precopy. (since 2.10)
    MigrationCapabilityPauseBeforeSwitchover                     // Pause outgoing migration before serialising device state and before disabling block IO (since 2.11)
    MigrationCapabilityMultifd                                   // Use more than one fd for migration (since 4.0)
    MigrationCapabilityDirtyBitmaps                              // If enabled, QEMU will migrate named dirty bitmaps. (since 2.12)
    MigrationCapabilityPostcopyBlocktime                         // Calculate downtime for postcopy live migration (since 3.0)
    MigrationCapabilityLateBlockActivate                         // If enabled, the destination will not activate block devices (and thus take locks) immediately at the end of migration. (since 3.0)
    MigrationCapabilityXIgnoreShared                             // If enabled, QEMU will not migrate shared memory (since 4.0)
    MigrationCapabilityValidateUuid                              // Send the UUID of the source to allow the destination to ensure it is the same. (since 4.2)
    MigrationCapabilityBackgroundSnapshot                        // If enabled, the migration stream will be a snapshot of the VM exactly at the point when the migration procedure starts. The VM RAM is saved with running VM. (since 6.0)
)

func (MigrationCapability) MarshalJSON

func (s MigrationCapability) MarshalJSON() ([]byte, error)

func (*MigrationCapability) UnmarshalJSON

func (s *MigrationCapability) UnmarshalJSON(data []byte) error

type MigrationCapabilityStatus

Migration capability information

Since: 1.2

type MigrationCapabilityStatus struct {
    Capability MigrationCapability `json:"capability"` // capability enum
    State      bool                `json:"state"`      // capability state bool
}

type MigrationEvent

Emitted when a migration event happens

Since: 2.4

Example: <- {"timestamp": {"seconds": 1432121972, "microseconds": 744001},

"event": "MIGRATION",
"data": {"status": "completed"} }
type MigrationEvent struct {
    Status MigrationStatus `json:"status"` // @MigrationStatus describing the current migration status.
}

type MigrationInfo

Information about current migration process.

Since: 0.14

type MigrationInfo struct {
    Status                *MigrationStatus  `json:"status,omitempty"`                  // @MigrationStatus describing the current migration status. If this field is not returned, no migration process has been initiated
    Ram                   *MigrationStats   `json:"ram,omitempty"`                     // @MigrationStats containing detailed migration status, only returned if status is 'active' or 'completed'(since 1.2)
    Disk                  *MigrationStats   `json:"disk,omitempty"`                    // @MigrationStats containing detailed disk migration status, only returned if status is 'active' and it is a block migration
    Vfio                  *VfioStats        `json:"vfio,omitempty"`                    // @VfioStats containing detailed VFIO devices migration statistics, only returned if VFIO device is present, migration is supported by all VFIO devices and status is 'active' or 'completed' (since 5.2)
    XbzrleCache           *XBZRLECacheStats `json:"xbzrle-cache,omitempty"`            // @XBZRLECacheStats containing detailed XBZRLE migration statistics, only returned if XBZRLE feature is on and status is 'active' or 'completed' (since 1.2)
    TotalTime             *int64            `json:"total-time,omitempty"`              // total amount of milliseconds since migration started. If migration has ended, it returns the total migration time. (since 1.2)
    ExpectedDowntime      *int64            `json:"expected-downtime,omitempty"`       // only present while migration is active expected downtime in milliseconds for the guest in last walk of the dirty bitmap. (since 1.3)
    Downtime              *int64            `json:"downtime,omitempty"`                // only present when migration finishes correctly total downtime in milliseconds for the guest. (since 1.3)
    SetupTime             *int64            `json:"setup-time,omitempty"`              // amount of setup time in milliseconds *before* the iterations begin but *after* the QMP command is issued. This is designed to provide an accounting of any activities (such as RDMA pinning) which may be expensive, but do not actually occur during the iterative migration rounds themselves. (since 1.6)
    CpuThrottlePercentage *int64            `json:"cpu-throttle-percentage,omitempty"` // percentage of time guest cpus are being throttled during auto-converge. This is only present when auto-converge has started throttling guest cpus. (Since 2.7)
    ErrorDesc             *string           `json:"error-desc,omitempty"`              // the human readable error description string, when @status is 'failed'. Clients should not attempt to parse the error strings. (Since 2.7)
    BlockedReasons        []string          `json:"blocked-reasons,omitempty"`         // A list of reasons an outgoing migration is blocked. Present and non-empty when migration is blocked. (since 6.0)
    PostcopyBlocktime     *uint32           `json:"postcopy-blocktime,omitempty"`      // total time when all vCPU were blocked during postcopy live migration. This is only present when the postcopy-blocktime migration capability is enabled. (Since 3.0)
    PostcopyVcpuBlocktime []uint32          `json:"postcopy-vcpu-blocktime,omitempty"` // list of the postcopy blocktime per vCPU. This is only present when the postcopy-blocktime migration capability is enabled. (Since 3.0)
    Compression           *CompressionStats `json:"compression,omitempty"`             // migration compression statistics, only returned if compression feature is on and status is 'active' or 'completed' (Since 3.1)
    SocketAddress         []SocketAddress   `json:"socket-address,omitempty"`          // Only used for tcp, to know what the real port is (Since 4.0)
}

type MigrationParameter

Migration parameters enumeration

Since: 2.4

type MigrationParameter int32
const (
    MigrationParameterAnnounceInitial          MigrationParameter = iota
    MigrationParameterAnnounceMax                                 // Maximum delay (in milliseconds) between packets in the announcement (Since 4.0)
    MigrationParameterAnnounceRounds                              // Number of self-announce packets sent after migration (Since 4.0)
    MigrationParameterAnnounceStep                                // Increase in delay (in milliseconds) between subsequent packets in the announcement (Since 4.0)
    MigrationParameterCompressLevel                               // Set the compression level to be used in live migration, the compression level is an integer between 0 and 9, where 0 means no compression, 1 means the best compression speed, and 9 means best compression ratio which will consume more CPU.
    MigrationParameterCompressThreads                             // Set compression thread count to be used in live migration, the compression thread count is an integer between 1 and 255.
    MigrationParameterDecompressThreads                           // Set decompression thread count to be used in live migration, the decompression thread count is an integer between 1 and 255. Usually, decompression is at least 4 times as fast as compression, so set the decompress-threads to the number about 1/4 of compress-threads is adequate.
    MigrationParameterCompressWaitThread                          // Controls behavior when all compression threads are currently busy. If true (default), wait for a free compression thread to become available; otherwise, send the page uncompressed. (Since 3.1)
    MigrationParameterThrottleTriggerThreshold                    // The ratio of bytes_dirty_period and bytes_xfer_period to trigger throttling. It is expressed as percentage. The default value is 50. (Since 5.0)
    MigrationParameterCpuThrottleInitial                          // Initial percentage of time guest cpus are throttled when migration auto-converge is activated. The default value is 20. (Since 2.7)
    MigrationParameterCpuThrottleIncrement                        // throttle percentage increase each time auto-converge detects that migration is not making progress. The default value is 10. (Since 2.7)
    MigrationParameterCpuThrottleTailslow                         // Make CPU throttling slower at tail stage At the tail stage of throttling, the Guest is very sensitive to CPU percentage while the @cpu-throttle -increment is excessive usually at tail stage. If this parameter is true, we will compute the ideal CPU percentage used by the Guest, which may exactly make the dirty rate match the dirty rate threshold. Then we will choose a smaller throttle increment between the one specified by @cpu-throttle-increment and the one generated by ideal CPU percentage. Therefore, it is compatible to traditional throttling, meanwhile the throttle increment won't be excessive at tail stage. The default value is false. (Since 5.1)
    MigrationParameterTlsCreds                                    // ID of the 'tls-creds' object that provides credentials for establishing a TLS connection over the migration data channel. On the outgoing side of the migration, the credentials must be for a 'client' endpoint, while for the incoming side the credentials must be for a 'server' endpoint. Setting this will enable TLS for all migrations. The default is unset, resulting in unsecured migration at the QEMU level. (Since 2.7)
    MigrationParameterTlsHostname                                 // hostname of the target host for the migration. This is required when using x509 based TLS credentials and the migration URI does not already include a hostname. For example if using fd: or exec: based migration, the hostname must be provided so that the server's x509 certificate identity can be validated. (Since 2.7)
    MigrationParameterTlsAuthz                                    // ID of the 'authz' object subclass that provides access control checking of the TLS x509 certificate distinguished name. This object is only resolved at time of use, so can be deleted and recreated on the fly while the migration server is active. If missing, it will default to denying access (Since 4.0)
    MigrationParameterMaxBandwidth                                // to set maximum speed for migration. maximum speed in bytes per second. (Since 2.8)
    MigrationParameterDowntimeLimit                               // set maximum tolerated downtime for migration. maximum downtime in milliseconds (Since 2.8)
    MigrationParameterXCheckpointDelay                            // The delay time (in ms) between two COLO checkpoints in periodic mode. (Since 2.8)
    MigrationParameterBlockIncremental                            // Affects how much storage is migrated when the block migration capability is enabled. When false, the entire storage backing chain is migrated into a flattened image at the destination; when true, only the active qcow2 layer is migrated and the destination must already have access to the same backing chain as was used on the source. (since 2.10)
    MigrationParameterMultifdChannels                             // Number of channels used to migrate data in parallel. This is the same number that the number of sockets used for migration. The default value is 2 (since 4.0)
    MigrationParameterXbzrleCacheSize                             // cache size to be used by XBZRLE migration. It needs to be a multiple of the target page size and a power of 2 (Since 2.11)
    MigrationParameterMaxPostcopyBandwidth                        // Background transfer bandwidth during postcopy. Defaults to 0 (unlimited). In bytes per second. (Since 3.0)
    MigrationParameterMaxCpuThrottle                              // maximum cpu throttle percentage. Defaults to 99. (Since 3.1)
    MigrationParameterMultifdCompression                          // Which compression method to use. Defaults to none. (Since 5.0)
    MigrationParameterMultifdZlibLevel                            // Set the compression level to be used in live migration, the compression level is an integer between 0 and 9, where 0 means no compression, 1 means the best compression speed, and 9 means best compression ratio which will consume more CPU. Defaults to 1. (Since 5.0)
    MigrationParameterMultifdZstdLevel                            // Set the compression level to be used in live migration, the compression level is an integer between 0 and 20, where 0 means no compression, 1 means the best compression speed, and 20 means best compression ratio which will consume more CPU. Defaults to 1. (Since 5.0)
    MigrationParameterBlockBitmapMapping                          // Maps block nodes and bitmaps on them to aliases for the purpose of dirty bitmap migration. Such aliases may for example be the corresponding names on the opposite site. The mapping must be one-to-one, but not necessarily complete: On the source, unmapped bitmaps and all bitmaps on unmapped nodes will be ignored. On the destination, encountering an unmapped alias in the incoming migration stream will result in a report, and all further bitmap migration data will then be discarded. Note that the destination does not know about bitmaps it does not receive, so there is no limitation or requirement regarding the number of bitmaps received, or how they are named, or on which nodes they are placed. By default (when this parameter has never been set), bitmap names are mapped to themselves. Nodes are mapped to their block device name if there is one, and to their node name otherwise. (Since 5.2)
)

func (MigrationParameter) MarshalJSON

func (s MigrationParameter) MarshalJSON() ([]byte, error)

func (*MigrationParameter) UnmarshalJSON

func (s *MigrationParameter) UnmarshalJSON(data []byte) error

type MigrationParameters

The optional members aren't actually optional.

Since: 2.4

type MigrationParameters struct {
    AnnounceInitial          *uint64                    `json:"announce-initial,omitempty"`           // Initial delay (in milliseconds) before sending the first announce (Since 4.0)
    AnnounceMax              *uint64                    `json:"announce-max,omitempty"`               // Maximum delay (in milliseconds) between packets in the announcement (Since 4.0)
    AnnounceRounds           *uint64                    `json:"announce-rounds,omitempty"`            // Number of self-announce packets sent after migration (Since 4.0)
    AnnounceStep             *uint64                    `json:"announce-step,omitempty"`              // Increase in delay (in milliseconds) between subsequent packets in the announcement (Since 4.0)
    CompressLevel            *uint8                     `json:"compress-level,omitempty"`             // compression level
    CompressThreads          *uint8                     `json:"compress-threads,omitempty"`           // compression thread count
    CompressWaitThread       *bool                      `json:"compress-wait-thread,omitempty"`       // Controls behavior when all compression threads are currently busy. If true (default), wait for a free compression thread to become available; otherwise, send the page uncompressed. (Since 3.1)
    DecompressThreads        *uint8                     `json:"decompress-threads,omitempty"`         // decompression thread count
    ThrottleTriggerThreshold *uint8                     `json:"throttle-trigger-threshold,omitempty"` // The ratio of bytes_dirty_period and bytes_xfer_period to trigger throttling. It is expressed as percentage. The default value is 50. (Since 5.0)
    CpuThrottleInitial       *uint8                     `json:"cpu-throttle-initial,omitempty"`       // Initial percentage of time guest cpus are throttled when migration auto-converge is activated. (Since 2.7)
    CpuThrottleIncrement     *uint8                     `json:"cpu-throttle-increment,omitempty"`     // throttle percentage increase each time auto-converge detects that migration is not making progress. (Since 2.7)
    CpuThrottleTailslow      *bool                      `json:"cpu-throttle-tailslow,omitempty"`      // Make CPU throttling slower at tail stage At the tail stage of throttling, the Guest is very sensitive to CPU percentage while the @cpu-throttle -increment is excessive usually at tail stage. If this parameter is true, we will compute the ideal CPU percentage used by the Guest, which may exactly make the dirty rate match the dirty rate threshold. Then we will choose a smaller throttle increment between the one specified by @cpu-throttle-increment and the one generated by ideal CPU percentage. Therefore, it is compatible to traditional throttling, meanwhile the throttle increment won't be excessive at tail stage. The default value is false. (Since 5.1)
    TlsCreds                 *string                    `json:"tls-creds,omitempty"`                  // ID of the 'tls-creds' object that provides credentials for establishing a TLS connection over the migration data channel. On the outgoing side of the migration, the credentials must be for a 'client' endpoint, while for the incoming side the credentials must be for a 'server' endpoint. An empty string means that QEMU will use plain text mode for migration, rather than TLS (Since 2.7) Note: 2.8 reports this by omitting tls-creds instead.
    TlsHostname              *string                    `json:"tls-hostname,omitempty"`               // hostname of the target host for the migration. This is required when using x509 based TLS credentials and the migration URI does not already include a hostname. For example if using fd: or exec: based migration, the hostname must be provided so that the server's x509 certificate identity can be validated. (Since 2.7) An empty string means that QEMU will use the hostname associated with the migration URI, if any. (Since 2.9) Note: 2.8 reports this by omitting tls-hostname instead.
    TlsAuthz                 *string                    `json:"tls-authz,omitempty"`                  // ID of the 'authz' object subclass that provides access control checking of the TLS x509 certificate distinguished name. (Since 4.0)
    MaxBandwidth             *uint64                    `json:"max-bandwidth,omitempty"`              // to set maximum speed for migration. maximum speed in bytes per second. (Since 2.8)
    DowntimeLimit            *uint64                    `json:"downtime-limit,omitempty"`             // set maximum tolerated downtime for migration. maximum downtime in milliseconds (Since 2.8)
    XCheckpointDelay         *uint32                    `json:"x-checkpoint-delay,omitempty"`         // the delay time between two COLO checkpoints. (Since 2.8)
    BlockIncremental         *bool                      `json:"block-incremental,omitempty"`          // Affects how much storage is migrated when the block migration capability is enabled. When false, the entire storage backing chain is migrated into a flattened image at the destination; when true, only the active qcow2 layer is migrated and the destination must already have access to the same backing chain as was used on the source. (since 2.10)
    MultifdChannels          *uint8                     `json:"multifd-channels,omitempty"`           // Number of channels used to migrate data in parallel. This is the same number that the number of sockets used for migration. The default value is 2 (since 4.0)
    XbzrleCacheSize          *uint64                    `json:"xbzrle-cache-size,omitempty"`          // cache size to be used by XBZRLE migration. It needs to be a multiple of the target page size and a power of 2 (Since 2.11)
    MaxPostcopyBandwidth     *uint64                    `json:"max-postcopy-bandwidth,omitempty"`     // Background transfer bandwidth during postcopy. Defaults to 0 (unlimited). In bytes per second. (Since 3.0)
    MaxCpuThrottle           *uint8                     `json:"max-cpu-throttle,omitempty"`           // maximum cpu throttle percentage. Defaults to 99. (Since 3.1)
    MultifdCompression       *MultiFDCompression        `json:"multifd-compression,omitempty"`        // Which compression method to use. Defaults to none. (Since 5.0)
    MultifdZlibLevel         *uint8                     `json:"multifd-zlib-level,omitempty"`         // Set the compression level to be used in live migration, the compression level is an integer between 0 and 9, where 0 means no compression, 1 means the best compression speed, and 9 means best compression ratio which will consume more CPU. Defaults to 1. (Since 5.0)
    MultifdZstdLevel         *uint8                     `json:"multifd-zstd-level,omitempty"`         // Set the compression level to be used in live migration, the compression level is an integer between 0 and 20, where 0 means no compression, 1 means the best compression speed, and 20 means best compression ratio which will consume more CPU. Defaults to 1. (Since 5.0)
    BlockBitmapMapping       []BitmapMigrationNodeAlias `json:"block-bitmap-mapping,omitempty"`       // Maps block nodes and bitmaps on them to aliases for the purpose of dirty bitmap migration. Such aliases may for example be the corresponding names on the opposite site. The mapping must be one-to-one, but not necessarily complete: On the source, unmapped bitmaps and all bitmaps on unmapped nodes will be ignored. On the destination, encountering an unmapped alias in the incoming migration stream will result in a report, and all further bitmap migration data will then be discarded. Note that the destination does not know about bitmaps it does not receive, so there is no limitation or requirement regarding the number of bitmaps received, or how they are named, or on which nodes they are placed. By default (when this parameter has never been set), bitmap names are mapped to themselves. Nodes are mapped to their block device name if there is one, and to their node name otherwise. (Since 5.2)
}

type MigrationPassEvent

Emitted from the source side of a migration at the start of each pass (when it syncs the dirty bitmap)

Since: 2.6

Example: { "timestamp": {"seconds": 1449669631, "microseconds": 239225},

"event": "MIGRATION_PASS", "data": {"pass": 2} }
type MigrationPassEvent struct {
    Pass int64 `json:"pass"` // An incrementing count (starting at 1 on the first pass)
}

type MigrationStats

Detailed migration status.

Since: 0.14

type MigrationStats struct {
    Transferred      int64   `json:"transferred"`       // amount of bytes already transferred to the target VM
    Remaining        int64   `json:"remaining"`         // amount of bytes remaining to be transferred to the target VM
    Total            int64   `json:"total"`             // total amount of bytes involved in the migration process
    Duplicate        int64   `json:"duplicate"`         // number of duplicate (zero) pages (since 1.2)
    Skipped          int64   `json:"skipped"`           // number of skipped zero pages (since 1.5)
    Normal           int64   `json:"normal"`            // number of normal pages (since 1.2)
    NormalBytes      int64   `json:"normal-bytes"`      // number of normal bytes sent (since 1.2)
    DirtyPagesRate   int64   `json:"dirty-pages-rate"`  // number of pages dirtied by second by the guest (since 1.3)
    Mbps             float64 `json:"mbps"`              // throughput in megabits/sec. (since 1.6)
    DirtySyncCount   int64   `json:"dirty-sync-count"`  // number of times that dirty ram was synchronized (since 2.1)
    PostcopyRequests int64   `json:"postcopy-requests"` // The number of page requests received from the destination (since 2.7)
    PageSize         int64   `json:"page-size"`         // The number of bytes per page for the various page-based statistics (since 2.10)
    MultifdBytes     uint64  `json:"multifd-bytes"`     // The number of bytes sent through multifd (since 3.0)
    PagesPerSecond   uint64  `json:"pages-per-second"`  // the number of memory pages transferred per second (Since 4.0)
    PrecopyBytes     uint64  `json:"precopy-bytes"`     // The number of bytes sent in the pre-copy phase (since 7.0).
    DowntimeBytes    uint64  `json:"downtime-bytes"`    // The number of bytes sent while the guest is paused (since 7.0).
    PostcopyBytes    uint64  `json:"postcopy-bytes"`    // The number of bytes sent during the post-copy phase (since 7.0).
}

type MigrationStatus

An enumeration of migration status.

Since: 2.3

type MigrationStatus int32
const (
    MigrationStatusNone            MigrationStatus = iota
    MigrationStatusSetup                           // migration process has been initiated.
    MigrationStatusCancelling                      // in the process of cancelling migration.
    MigrationStatusCancelled                       // cancelling migration is finished.
    MigrationStatusActive                          // in the process of doing migration.
    MigrationStatusPostcopyActive                  // like active, but now in postcopy mode. (since 2.5)
    MigrationStatusPostcopyPaused                  // during postcopy but paused. (since 3.0)
    MigrationStatusPostcopyRecover                 // trying to recover from a paused postcopy. (since 3.0)
    MigrationStatusCompleted                       // migration is finished.
    MigrationStatusFailed                          // some error occurred during migration process.
    MigrationStatusColo                            // VM is in the process of fault tolerance, VM can not get into this state unless colo capability is enabled for migration. (since 2.8)
    MigrationStatusPreSwitchover                   // Paused before device serialisation. (since 2.11)
    MigrationStatusDevice                          // During device serialisation when pause-before-switchover is enabled (since 2.11)
    MigrationStatusWaitUnplug                      // wait for device unplug request by guest OS to be completed. (since 4.2)
)

func (MigrationStatus) MarshalJSON

func (s MigrationStatus) MarshalJSON() ([]byte, error)

func (*MigrationStatus) UnmarshalJSON

func (s *MigrationStatus) UnmarshalJSON(data []byte) error

type MirrorCopyMode

An enumeration whose values tell the mirror block job when to trigger writes to the target.

Since: 3.0

type MirrorCopyMode int32
const (
    MirrorCopyModeBackground    MirrorCopyMode = iota
    MirrorCopyModeWriteBlocking                // when data is written to the source, write it (synchronously) to the target as well. In addition, data is copied in background just like in @background mode.
)

func (MirrorCopyMode) MarshalJSON

func (s MirrorCopyMode) MarshalJSON() ([]byte, error)

func (*MirrorCopyMode) UnmarshalJSON

func (s *MirrorCopyMode) UnmarshalJSON(data []byte) error

type MirrorSyncMode

An enumeration of possible behaviors for the initial synchronization phase of storage mirroring.

Since: 1.3

type MirrorSyncMode int32
const (
    MirrorSyncModeTop         MirrorSyncMode = iota
    MirrorSyncModeFull                       // copies data from all images to the destination
    MirrorSyncModeNone                       // only copy data written from now on
    MirrorSyncModeIncremental                // only copy data described by the dirty bitmap. (since: 2.4)
    MirrorSyncModeBitmap                     // only copy data described by the dirty bitmap. (since: 4.2) Behavior on completion is determined by the BitmapSyncMode.
)

func (MirrorSyncMode) MarshalJSON

func (s MirrorSyncMode) MarshalJSON() ([]byte, error)

func (*MirrorSyncMode) UnmarshalJSON

func (s *MirrorSyncMode) UnmarshalJSON(data []byte) error

type MonitorMode

An enumeration of monitor modes.

Since: 5.0

type MonitorMode int32
const (
    MonitorModeReadline MonitorMode = iota
    MonitorModeControl              // QMP monitor (JSON-based machine interface)
)

func (MonitorMode) MarshalJSON

func (s MonitorMode) MarshalJSON() ([]byte, error)

func (*MonitorMode) UnmarshalJSON

func (s *MonitorMode) UnmarshalJSON(data []byte) error

type MonitorOptions

Options to be used for adding a new monitor.

Since: 5.0

type MonitorOptions struct {
    Id      *string      `json:"id,omitempty"`     // Name of the monitor
    Mode    *MonitorMode `json:"mode,omitempty"`   // Selects the monitor mode (default: readline in the system emulator, control in qemu-storage-daemon)
    Pretty  *bool        `json:"pretty,omitempty"` // Enables pretty printing (QMP only)
    Chardev string       `json:"chardev"`          // Name of a character device to expose the monitor on
}

type MouseInfo

Information about a mouse device.

Since: 0.14

type MouseInfo struct {
    Name     string `json:"name"`     // the name of the mouse device
    Index    int64  `json:"index"`    // the index of the mouse device
    Current  bool   `json:"current"`  // true if this device is currently receiving mouse events
    Absolute bool   `json:"absolute"` // true if this device supports absolute coordinates as input
}

type MultiFDCompression

An enumeration of multifd compression methods.

Since: 5.0

type MultiFDCompression int32
const (
    MultiFDCompressionNone MultiFDCompression = iota
    MultiFDCompressionZlib                    // use zlib compression method.
    MultiFDCompressionZstd                    // use zstd compression method.
)

func (MultiFDCompression) MarshalJSON

func (s MultiFDCompression) MarshalJSON() ([]byte, error)

func (*MultiFDCompression) UnmarshalJSON

func (s *MultiFDCompression) UnmarshalJSON(data []byte) error

type NFSServer

Captures the address of the socket

Since: 2.9

type NFSServer struct {
    Type NFSTransport `json:"type"` // transport type used for NFS (only TCP supported)
    Host string       `json:"host"` // host address for NFS server
}

type NFSTransport

An enumeration of NFS transport types

Since: 2.9

type NFSTransport int32
const (
    NFSTransportInet NFSTransport = iota
)

func (NFSTransport) MarshalJSON

func (s NFSTransport) MarshalJSON() ([]byte, error)

func (*NFSTransport) UnmarshalJSON

func (s *NFSTransport) UnmarshalJSON(data []byte) error

type NameInfo

Guest name information.

Since: 0.14

type NameInfo struct {
    Name *string `json:"name,omitempty"` // The name of the guest
}

type NbdServerAddCommand

Export a block node to QEMU's embedded NBD server.

The export name will be used as the id for the resulting block export.

Returns: error if the server is not running, or export with the same name already exists.

Since: 1.3

type NbdServerAddCommand struct {
    NbdServerAddOptions
}

type NbdServerAddOptions

An NBD block export, per legacy nbd-server-add command.

Since: 5.0

type NbdServerAddOptions struct {
    // Base type for this struct
    BlockExportOptionsNbdBase
    Device   string  `json:"device"`             // The device name or node name of the node to be exported
    Writable *bool   `json:"writable,omitempty"` // Whether clients should be able to write to the device via the NBD connection (default false).
    Bitmap   *string `json:"bitmap,omitempty"`   // Also export a single dirty bitmap reachable from @device, so the NBD client can use NBD_OPT_SET_META_CONTEXT with the metadata context name "qemu:dirty-bitmap:BITMAP" to inspect the bitmap (since 4.0).
}

type NbdServerOptions

Keep this type consistent with the nbd-server-start arguments. The only intended difference is using SocketAddress instead of SocketAddressLegacy.

Since: 4.2

type NbdServerOptions struct {
    Addr           SocketAddress `json:"addr"`                      // Address on which to listen.
    TlsCreds       *string       `json:"tls-creds,omitempty"`       // ID of the TLS credentials object (since 2.6).
    TlsAuthz       *string       `json:"tls-authz,omitempty"`       // ID of the QAuthZ authorization object used to validate the client's x509 distinguished name. This object is is only resolved at time of use, so can be deleted and recreated on the fly while the NBD server is active. If missing, it will default to denying access (since 4.0).
    MaxConnections *uint32       `json:"max-connections,omitempty"` // The maximum number of connections to allow at the same time, 0 for unlimited. (since 5.2; default: 0)
}

type NbdServerRemoveCommand

Remove NBD export by name.

Returns: error if

- the server is not running
- export is not found
- mode is 'safe' and there are existing connections

Since: 2.12

type NbdServerRemoveCommand struct {
    Name string                 `json:"name"`           // Block export id.
    Mode *BlockExportRemoveMode `json:"mode,omitempty"` // Mode of command operation. See @BlockExportRemoveMode description. Default is 'safe'.
}

type NbdServerStartCommand

Start an NBD server listening on the given host and port. Block devices can then be exported using @nbd-server-add. The NBD server will present them as named exports; for example, another QEMU instance could refer to them as "nbd:HOST:PORT:exportname=NAME".

Keep this type consistent with the NbdServerOptions type. The only intended difference is using SocketAddressLegacy instead of SocketAddress.

Returns: error if the server is already running.

Since: 1.3

type NbdServerStartCommand struct {
    Addr           SocketAddressLegacy `json:"addr"`                      // Address on which to listen.
    TlsCreds       *string             `json:"tls-creds,omitempty"`       // ID of the TLS credentials object (since 2.6).
    TlsAuthz       *string             `json:"tls-authz,omitempty"`       // ID of the QAuthZ authorization object used to validate the client's x509 distinguished name. This object is is only resolved at time of use, so can be deleted and recreated on the fly while the NBD server is active. If missing, it will default to denying access (since 4.0).
    MaxConnections *uint32             `json:"max-connections,omitempty"` // The maximum number of connections to allow at the same time, 0 for unlimited. (since 5.2; default: 0)
}

type NbdServerStopCommand

Stop QEMU's embedded NBD server, and unregister all devices previously added via @nbd-server-add.

Since: 1.3

type NbdServerStopCommand struct{}

type NetClientDriver

Available netdev drivers.

Since: 2.7

@vhost-vdpa since 5.1

type NetClientDriver int32
const (
    NetClientDriverNone NetClientDriver = iota
    NetClientDriverNic
    NetClientDriverUser
    NetClientDriverTap
    NetClientDriverL2Tpv3
    NetClientDriverSocket
    NetClientDriverVde
    NetClientDriverBridge
    NetClientDriverHubport
    NetClientDriverNetmap
    NetClientDriverVhostUser
    NetClientDriverVhostVdpa
)

func (NetClientDriver) MarshalJSON

func (s NetClientDriver) MarshalJSON() ([]byte, error)

func (*NetClientDriver) UnmarshalJSON

func (s *NetClientDriver) UnmarshalJSON(data []byte) error

type NetFilterDirection

Indicates whether a netfilter is attached to a netdev's transmit queue or receive queue or both.

Since: 2.5

type NetFilterDirection int32
const (
    NetFilterDirectionAll NetFilterDirection = iota
    NetFilterDirectionRx                     // the filter is attached to the receive queue of the netdev, where it will receive packets sent to the netdev.
    NetFilterDirectionTx                     // the filter is attached to the transmit queue of the netdev, where it will receive packets sent by the netdev.
)

func (NetFilterDirection) MarshalJSON

func (s NetFilterDirection) MarshalJSON() ([]byte, error)

func (*NetFilterDirection) UnmarshalJSON

func (s *NetFilterDirection) UnmarshalJSON(data []byte) error

type NetLegacyNicOptions

Create a new Network Interface Card.

Since: 1.2

type NetLegacyNicOptions struct {
    Netdev  *string `json:"netdev,omitempty"`  // id of -netdev to connect to
    Macaddr *string `json:"macaddr,omitempty"` // MAC address
    Model   *string `json:"model,omitempty"`   // device model (e1000, rtl8139, virtio etc.)
    Addr    *string `json:"addr,omitempty"`    // PCI device address
    Vectors *uint32 `json:"vectors,omitempty"` // number of MSI-x vectors, 0 to disable MSI-X
}

type Netdev

Captures the configuration of a network device.

Since: 1.2

'l2tpv3' - since 2.1

type Netdev struct {
    // Base type for this struct
    NetdevBase
    // Value based on @type, possible types:
    // * NetLegacyNicOptions
    // * NetdevUserOptions
    // * NetdevTapOptions
    // * NetdevL2TPv3Options
    // * NetdevSocketOptions
    // * NetdevVdeOptions
    // * NetdevBridgeOptions
    // * NetdevHubPortOptions
    // * NetdevNetmapOptions
    // * NetdevVhostUserOptions
    // * NetdevVhostVDPAOptions
    Value Any
}

func (Netdev) MarshalJSON

func (s Netdev) MarshalJSON() ([]byte, error)

func (*Netdev) UnmarshalJSON

func (s *Netdev) UnmarshalJSON(data []byte) error

type NetdevAddCommand

Add a network backend.

Additional arguments depend on the type.

Since: 0.14

Returns: Nothing on success If @type is not a valid network backend, DeviceNotFound

Example: -> { "execute": "netdev_add",

"arguments": { "type": "user", "id": "netdev1",
               "dnssearch": "example.org" } }

<- { "return": {} }

type NetdevAddCommand struct {
    Netdev
}

type NetdevBase

Captures the configuration of a network device.

Since: 1.2

'l2tpv3' - since 2.1

type NetdevBase struct {
    Id   string          `json:"id"`   // identifier for monitor commands.
    Type NetClientDriver `json:"type"` // Specify the driver used for interpreting remaining arguments.
}

type NetdevBridgeOptions

Connect a host TAP network interface to a host bridge device.

Since: 1.2

type NetdevBridgeOptions struct {
    Br     *string `json:"br,omitempty"`     // bridge name
    Helper *string `json:"helper,omitempty"` // command to execute to configure bridge
}

type NetdevDelCommand

Remove a network backend.

Returns: Nothing on success If @id is not a valid network backend, DeviceNotFound

Since: 0.14

Example: -> { "execute": "netdev_del", "arguments": { "id": "netdev1" } } <- { "return": {} }

type NetdevDelCommand struct {
    Id string `json:"id"` // the name of the network backend to remove
}

type NetdevHubPortOptions

Connect two or more net clients through a software hub.

Since: 1.2

type NetdevHubPortOptions struct {
    Hubid  int32   `json:"hubid"`            // hub identifier number
    Netdev *string `json:"netdev,omitempty"` // used to connect hub to a netdev instead of a device (since 2.12)
}

type NetdevL2TPv3Options

Configure an Ethernet over L2TPv3 tunnel.

Since: 2.1

type NetdevL2TPv3Options struct {
    Src        string  `json:"src"`                  // source address
    Dst        string  `json:"dst"`                  // destination address
    Srcport    *string `json:"srcport,omitempty"`    // source port - mandatory for udp, optional for ip
    Dstport    *string `json:"dstport,omitempty"`    // destination port - mandatory for udp, optional for ip
    Ipv6       *bool   `json:"ipv6,omitempty"`       // force the use of ipv6
    Udp        *bool   `json:"udp,omitempty"`        // use the udp version of l2tpv3 encapsulation
    Cookie64   *bool   `json:"cookie64,omitempty"`   // use 64 bit coookies
    Counter    *bool   `json:"counter,omitempty"`    // have sequence counter
    Pincounter *bool   `json:"pincounter,omitempty"` // pin sequence counter to zero - workaround for buggy implementations or networks with packet reorder
    Txcookie   *uint64 `json:"txcookie,omitempty"`   // 32 or 64 bit transmit cookie
    Rxcookie   *uint64 `json:"rxcookie,omitempty"`   // 32 or 64 bit receive cookie
    Txsession  uint32  `json:"txsession"`            // 32 bit transmit session
    Rxsession  *uint32 `json:"rxsession,omitempty"`  // 32 bit receive session - if not specified set to the same value as transmit
    Offset     *uint32 `json:"offset,omitempty"`     // additional offset - allows the insertion of additional application-specific data before the packet payload
}

type NetdevNetmapOptions

Connect a client to a netmap-enabled NIC or to a VALE switch port

Since: 2.0

type NetdevNetmapOptions struct {
    Ifname  string  `json:"ifname"`            // Either the name of an existing network interface supported by netmap, or the name of a VALE port (created on the fly). A VALE port name is in the form 'valeXXX:YYY', where XXX and YYY are non-negative integers. XXX identifies a switch and YYY identifies a port of the switch. VALE ports having the same XXX are therefore connected to the same switch.
    Devname *string `json:"devname,omitempty"` // path of the netmap device (default: '/dev/netmap').
}

type NetdevSocketOptions

Socket netdevs are used to establish a network connection to another QEMU virtual machine via a TCP socket.

Since: 1.2

type NetdevSocketOptions struct {
    Fd        *string `json:"fd,omitempty"`        // file descriptor of an already opened socket
    Listen    *string `json:"listen,omitempty"`    // port number, and optional hostname, to listen on
    Connect   *string `json:"connect,omitempty"`   // port number, and optional hostname, to connect to
    Mcast     *string `json:"mcast,omitempty"`     // UDP multicast address and port number
    Localaddr *string `json:"localaddr,omitempty"` // source address and port for multicast and udp packets
    Udp       *string `json:"udp,omitempty"`       // UDP unicast address and port number
}

type NetdevTapOptions

Used to configure a host TAP network interface backend.

Since: 1.2

type NetdevTapOptions struct {
    Ifname     *string `json:"ifname,omitempty"`     // interface name
    Fd         *string `json:"fd,omitempty"`         // file descriptor of an already opened tap
    Fds        *string `json:"fds,omitempty"`        // multiple file descriptors of already opened multiqueue capable tap
    Script     *string `json:"script,omitempty"`     // script to initialize the interface
    Downscript *string `json:"downscript,omitempty"` // script to shut down the interface
    Br         *string `json:"br,omitempty"`         // bridge name (since 2.8)
    Helper     *string `json:"helper,omitempty"`     // command to execute to configure bridge
    Sndbuf     *uint64 `json:"sndbuf,omitempty"`     // send buffer limit. Understands [TGMKkb] suffixes.
    VnetHdr    *bool   `json:"vnet_hdr,omitempty"`   // enable the IFF_VNET_HDR flag on the tap interface
    Vhost      *bool   `json:"vhost,omitempty"`      // enable vhost-net network accelerator
    Vhostfd    *string `json:"vhostfd,omitempty"`    // file descriptor of an already opened vhost net device
    Vhostfds   *string `json:"vhostfds,omitempty"`   // file descriptors of multiple already opened vhost net devices
    Vhostforce *bool   `json:"vhostforce,omitempty"` // vhost on for non-MSIX virtio guests
    Queues     *uint32 `json:"queues,omitempty"`     // number of queues to be created for multiqueue capable tap
    PollUs     *uint32 `json:"poll-us,omitempty"`    // maximum number of microseconds that could be spent on busy polling for tap (since 2.7)
}

type NetdevUserOptions

Use the user mode network stack which requires no administrator privilege to run.

Since: 1.2

type NetdevUserOptions struct {
    Hostname       *string  `json:"hostname,omitempty"`         // client hostname reported by the builtin DHCP server
    Restrict       *bool    `json:"restrict,omitempty"`         // isolate the guest from the host
    Ipv4           *bool    `json:"ipv4,omitempty"`             // whether to support IPv4, default true for enabled (since 2.6)
    Ipv6           *bool    `json:"ipv6,omitempty"`             // whether to support IPv6, default true for enabled (since 2.6)
    Ip             *string  `json:"ip,omitempty"`               // legacy parameter, use net= instead
    Net            *string  `json:"net,omitempty"`              // IP network address that the guest will see, in the form addr[/netmask] The netmask is optional, and can be either in the form a.b.c.d or as a number of valid top-most bits. Default is 10.0.2.0/24.
    Host           *string  `json:"host,omitempty"`             // guest-visible address of the host
    Tftp           *string  `json:"tftp,omitempty"`             // root directory of the built-in TFTP server
    Bootfile       *string  `json:"bootfile,omitempty"`         // BOOTP filename, for use with tftp=
    Dhcpstart      *string  `json:"dhcpstart,omitempty"`        // the first of the 16 IPs the built-in DHCP server can assign
    Dns            *string  `json:"dns,omitempty"`              // guest-visible address of the virtual nameserver
    Dnssearch      []string `json:"dnssearch,omitempty"`        // list of DNS suffixes to search, passed as DHCP option to the guest
    Domainname     *string  `json:"domainname,omitempty"`       // guest-visible domain name of the virtual nameserver (since 3.0)
    Ipv6Prefix     *string  `json:"ipv6-prefix,omitempty"`      // IPv6 network prefix (default is fec0::) (since 2.6). The network prefix is given in the usual hexadecimal IPv6 address notation.
    Ipv6Prefixlen  *int64   `json:"ipv6-prefixlen,omitempty"`   // IPv6 network prefix length (default is 64) (since 2.6)
    Ipv6Host       *string  `json:"ipv6-host,omitempty"`        // guest-visible IPv6 address of the host (since 2.6)
    Ipv6Dns        *string  `json:"ipv6-dns,omitempty"`         // guest-visible IPv6 address of the virtual nameserver (since 2.6)
    Smb            *string  `json:"smb,omitempty"`              // root directory of the built-in SMB server
    Smbserver      *string  `json:"smbserver,omitempty"`        // IP address of the built-in SMB server
    Hostfwd        []string `json:"hostfwd,omitempty"`          // redirect incoming TCP or UDP host connections to guest endpoints
    Guestfwd       []string `json:"guestfwd,omitempty"`         // forward guest TCP connections
    TftpServerName *string  `json:"tftp-server-name,omitempty"` // RFC2132 "TFTP server name" string (Since 3.1)
}

type NetdevVdeOptions

Connect to a vde switch running on the host.

Since: 1.2

type NetdevVdeOptions struct {
    Sock  *string `json:"sock,omitempty"`  // socket path
    Port  *uint16 `json:"port,omitempty"`  // port number
    Group *string `json:"group,omitempty"` // group owner of socket
    Mode  *uint16 `json:"mode,omitempty"`  // permissions for socket
}

type NetdevVhostUserOptions

Vhost-user network backend

Since: 2.1

type NetdevVhostUserOptions struct {
    Chardev    string `json:"chardev"`              // name of a unix socket chardev
    Vhostforce *bool  `json:"vhostforce,omitempty"` // vhost on for non-MSIX virtio guests (default: false).
    Queues     *int64 `json:"queues,omitempty"`     // number of queues to be created for multiqueue vhost-user (default: 1) (Since 2.5)
}

type NetdevVhostVDPAOptions

Vhost-vdpa network backend

vDPA device is a device that uses a datapath which complies with the virtio specifications with a vendor specific control path.

Since: 5.1

type NetdevVhostVDPAOptions struct {
    Vhostdev *string `json:"vhostdev,omitempty"` // path of vhost-vdpa device (default:'/dev/vhost-vdpa-0')
    Queues   *int64  `json:"queues,omitempty"`   // number of queues to be created for multiqueue vhost-vdpa (default: 1)
}

type NetfilterInsert

Indicates where to insert a netfilter relative to a given other filter.

Since: 5.0

type NetfilterInsert int32
const (
    NetfilterInsertBefore NetfilterInsert = iota
    NetfilterInsertBehind                 // insert behind the specified filter
)

func (NetfilterInsert) MarshalJSON

func (s NetfilterInsert) MarshalJSON() ([]byte, error)

func (*NetfilterInsert) UnmarshalJSON

func (s *NetfilterInsert) UnmarshalJSON(data []byte) error

type NetfilterProperties

Properties for objects of classes derived from netfilter.

Since: 2.5

type NetfilterProperties struct {
    Netdev   string              `json:"netdev"`             // id of the network device backend to filter
    Queue    *NetFilterDirection `json:"queue,omitempty"`    // indicates which queue(s) to filter (default: all)
    Status   *string             `json:"status,omitempty"`   // indicates whether the filter is enabled ("on") or disabled ("off") (default: "on")
    Position *string             `json:"position,omitempty"` // specifies where the filter should be inserted in the filter list. "head" means the filter is inserted at the head of the filter list, before any existing filters. "tail" means the filter is inserted at the tail of the filter list, behind any existing filters (default). "id=<id>" means the filter is inserted before or behind the filter specified by <id>, depending on the @insert property. (default: "tail")
    Insert   *NetfilterInsert    `json:"insert,omitempty"`   // where to insert the filter relative to the filter given in @position. Ignored if @position is "head" or "tail". (default: behind)
}

type NetworkAddressFamily

The network address family

Since: 2.1

type NetworkAddressFamily int32
const (
    NetworkAddressFamilyIpv4    NetworkAddressFamily = iota
    NetworkAddressFamilyIpv6                         // IPV6 family
    NetworkAddressFamilyUnix                         // unix socket
    NetworkAddressFamilyVsock                        // vsock family (since 2.8)
    NetworkAddressFamilyUnknown                      // otherwise
)

func (NetworkAddressFamily) MarshalJSON

func (s NetworkAddressFamily) MarshalJSON() ([]byte, error)

func (*NetworkAddressFamily) UnmarshalJSON

func (s *NetworkAddressFamily) UnmarshalJSON(data []byte) error

type NewImageMode

An enumeration that tells QEMU how to set the backing file path in a new image file.

Since: 1.1

type NewImageMode int32
const (
    NewImageModeExisting      NewImageMode = iota
    NewImageModeAbsolutePaths              // QEMU should create a new image with absolute paths for the backing file. If there is no backing file available, the new image will not be backed either.
)

func (NewImageMode) MarshalJSON

func (s NewImageMode) MarshalJSON() ([]byte, error)

func (*NewImageMode) UnmarshalJSON

func (s *NewImageMode) UnmarshalJSON(data []byte) error

type NicRxFilterChangedEvent

Emitted once until the 'query-rx-filter' command is executed, the first event will always be emitted

Since: 1.6

Example: <- { "event": "NIC_RX_FILTER_CHANGED",

  "data": { "name": "vnet0",
            "path": "/machine/peripheral/vnet0/virtio-backend" },
  "timestamp": { "seconds": 1368697518, "microseconds": 326866 } }
}
type NicRxFilterChangedEvent struct {
    Name *string `json:"name,omitempty"` // net client name
    Path string  `json:"path"`           // device path
}

type NumaCpuOptions

Option "-numa cpu" overrides default cpu to node mapping. It accepts the same set of cpu properties as returned by query-hotpluggable-cpus[].props, where node-id could be used to override default node mapping.

Since: 2.10

type NumaCpuOptions struct {
    // Base type for this struct
    CpuInstanceProperties
}

type NumaDistOptions

Set the distance between 2 NUMA nodes.

Since: 2.10

type NumaDistOptions struct {
    Src uint16 `json:"src"` // source NUMA node.
    Dst uint16 `json:"dst"` // destination NUMA node.
    Val uint8  `json:"val"` // NUMA distance from source node to destination node. When a node is unreachable from another node, set the distance between them to 255.
}

type NumaHmatCacheOptions

Set the memory side cache information for a given memory domain.

For more information of @NumaHmatCacheOptions, see chapter 5.2.27.5: Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec.

Since: 5.0

type NumaHmatCacheOptions struct {
    NodeId        uint32                 `json:"node-id"`       // the memory proximity domain to which the memory belongs.
    Size          uint64                 `json:"size"`          // the size of memory side cache in bytes.
    Level         uint8                  `json:"level"`         // the cache level described in this structure.
    Associativity HmatCacheAssociativity `json:"associativity"` // the cache associativity, none/direct-mapped/complex(complex cache indexing).
    Policy        HmatCacheWritePolicy   `json:"policy"`        // the write policy, none/write-back/write-through.
    Line          uint16                 `json:"line"`          // the cache Line size in bytes.
}

type NumaHmatLBOptions

Set the system locality latency and bandwidth information between Initiator and Target proximity Domains.

For more information about @NumaHmatLBOptions, see chapter 5.2.27.4: Table 5-146 of ACPI 6.3 spec.

Since: 5.0

type NumaHmatLBOptions struct {
    Initiator uint16                `json:"initiator"`           // the Initiator Proximity Domain.
    Target    uint16                `json:"target"`              // the Target Proximity Domain.
    Hierarchy HmatLBMemoryHierarchy `json:"hierarchy"`           // the Memory Hierarchy. Indicates the performance of memory or side cache.
    DataType  HmatLBDataType        `json:"data-type"`           // presents the type of data, access/read/write latency or hit latency.
    Latency   *uint64               `json:"latency,omitempty"`   // the value of latency from @initiator to @target proximity domain, the latency unit is "ns(nanosecond)".
    Bandwidth *uint64               `json:"bandwidth,omitempty"` // the value of bandwidth between @initiator and @target proximity domain, the bandwidth unit is "Bytes per second".
}

type NumaNodeOptions

Create a guest NUMA node. (for OptsVisitor)

Since: 2.1

type NumaNodeOptions struct {
    Nodeid    *uint16  `json:"nodeid,omitempty"`    // NUMA node ID (increase by 1 from 0 if omitted)
    Cpus      []uint16 `json:"cpus,omitempty"`      // VCPUs belonging to this node (assign VCPUS round-robin if omitted)
    Mem       *uint64  `json:"mem,omitempty"`       // memory size of this node; mutually exclusive with @memdev. Equally divide total memory among nodes if both @mem and @memdev are omitted.
    Memdev    *string  `json:"memdev,omitempty"`    // memory backend object. If specified for one node, it must be specified for all nodes.
    Initiator *uint16  `json:"initiator,omitempty"` // defined in ACPI 6.3 Chapter 5.2.27.3 Table 5-145, points to the nodeid which has the memory controller responsible for this NUMA node. This field provides additional information as to the initiator node that is closest (as in directly attached) to this node, and therefore has the best performance (since 5.0)
}

type NumaOptions

A discriminated record of NUMA options. (for OptsVisitor)

Since: 2.1

type NumaOptions struct {
    // Base type for this struct
    NumaOptionsBase
    // Value based on @type, possible types:
    // * NumaNodeOptions
    // * NumaDistOptions
    // * NumaCpuOptions
    // * NumaHmatLBOptions
    // * NumaHmatCacheOptions
    Value Any
}

func (NumaOptions) MarshalJSON

func (s NumaOptions) MarshalJSON() ([]byte, error)

func (*NumaOptions) UnmarshalJSON

func (s *NumaOptions) UnmarshalJSON(data []byte) error

type NumaOptionsBase

A discriminated record of NUMA options. (for OptsVisitor)

Since: 2.1

type NumaOptionsBase struct {
    Type NumaOptionsType `json:"type"`
}

type NumaOptionsType

Since: 2.1

type NumaOptionsType int32
const (
    NumaOptionsTypeNode      NumaOptionsType = iota
    NumaOptionsTypeDist                      // NUMA distance configuration (since 2.10)
    NumaOptionsTypeCpu                       // property based CPU(s) to node mapping (Since: 2.10)
    NumaOptionsTypeHmatLb                    // memory latency and bandwidth information (Since: 5.0)
    NumaOptionsTypeHmatCache                 // memory side cache information (Since: 5.0)
)

func (NumaOptionsType) MarshalJSON

func (s NumaOptionsType) MarshalJSON() ([]byte, error)

func (*NumaOptionsType) UnmarshalJSON

func (s *NumaOptionsType) UnmarshalJSON(data []byte) error

type ObjectAddCommand

Create a QOM object.

Returns: Nothing on success Error if @qom-type is not a valid class name

Since: 2.0

Example: -> { "execute": "object-add",

"arguments": { "qom-type": "rng-random", "id": "rng1",
               "filename": "/dev/hwrng" } }

<- { "return": {} }

type ObjectAddCommand struct {
    ObjectOptions
}

type ObjectDelCommand

Remove a QOM object.

Returns: Nothing on success Error if @id is not a valid id for a QOM object

Since: 2.0

Example: -> { "execute": "object-del", "arguments": { "id": "rng1" } } <- { "return": {} }

type ObjectDelCommand struct {
    Id string `json:"id"` // the name of the QOM object to remove
}

type ObjectOptions

Describes the options of a user creatable QOM object.

Since: 6.0

type ObjectOptions struct {
    // Base type for this struct
    ObjectOptionsBase
    // Value based on @qom-type, possible types:
    // * AuthZListProperties
    // * AuthZListFileProperties
    // * AuthZPAMProperties
    // * AuthZSimpleProperties
    // * CanHostSocketcanProperties
    // * ColoCompareProperties
    // * CryptodevBackendProperties
    // * CryptodevBackendProperties
    // * CryptodevVhostUserProperties
    // * DBusVMStateProperties
    // * FilterBufferProperties
    // * FilterDumpProperties
    // * FilterMirrorProperties
    // * FilterRedirectorProperties
    // * NetfilterProperties
    // * FilterRewriterProperties
    // * InputBarrierProperties
    // * InputLinuxProperties
    // * IothreadProperties
    // * MemoryBackendEpcProperties
    // * MemoryBackendFileProperties
    // * MemoryBackendMemfdProperties
    // * MemoryBackendProperties
    // * PrManagerHelperProperties
    // * QtestProperties
    // * RngProperties
    // * RngEgdProperties
    // * RngRandomProperties
    // * SecretProperties
    // * SecretKeyringProperties
    // * SevGuestProperties
    // * ThrottleGroupProperties
    // * TlsCredsAnonProperties
    // * TlsCredsPskProperties
    // * TlsCredsX509Properties
    // * TlsCredsProperties
    // * RemoteObjectProperties
    Value Any
}

func (ObjectOptions) MarshalJSON

func (s ObjectOptions) MarshalJSON() ([]byte, error)

func (*ObjectOptions) UnmarshalJSON

func (s *ObjectOptions) UnmarshalJSON(data []byte) error

type ObjectOptionsBase

Describes the options of a user creatable QOM object.

Since: 6.0

type ObjectOptionsBase struct {
    QomType ObjectType `json:"qom-type"` // the class name for the object to be created
    Id      string     `json:"id"`       // the name of the new object
}

type ObjectPropertyInfo

Since: 1.2

type ObjectPropertyInfo struct {
    Name         string  `json:"name"`                    // the name of the property
    Type         string  `json:"type"`                    // the type of the property. This will typically come in one of four forms: 1) A primitive type such as 'u8', 'u16', 'bool', 'str', or 'double'. These types are mapped to the appropriate JSON type. 2) A child type in the form 'child<subtype>' where subtype is a qdev device type name. Child properties create the composition tree. 3) A link type in the form 'link<subtype>' where subtype is a qdev device type name. Link properties form the device model graph.
    Description  *string `json:"description,omitempty"`   // if specified, the description of the property.
    DefaultValue *Any    `json:"default-value,omitempty"` // the default value, if any (since 5.0)
}

type ObjectType

Since: 6.0

type ObjectType int32
const (
    ObjectTypeAuthzList ObjectType = iota
    ObjectTypeAuthzListfile
    ObjectTypeAuthzPam
    ObjectTypeAuthzSimple
    ObjectTypeCanBus
    ObjectTypeCanHostSocketcan
    ObjectTypeColoCompare
    ObjectTypeCryptodevBackend
    ObjectTypeCryptodevBackendBuiltin
    ObjectTypeCryptodevVhostUser
    ObjectTypeDbusVmstate
    ObjectTypeFilterBuffer
    ObjectTypeFilterDump
    ObjectTypeFilterMirror
    ObjectTypeFilterRedirector
    ObjectTypeFilterReplay
    ObjectTypeFilterRewriter
    ObjectTypeInputBarrier
    ObjectTypeInputLinux
    ObjectTypeIothread
    ObjectTypeMemoryBackendEpc
    ObjectTypeMemoryBackendFile
    ObjectTypeMemoryBackendMemfd
    ObjectTypeMemoryBackendRam
    ObjectTypePefGuest
    ObjectTypePrManagerHelper
    ObjectTypeQtest
    ObjectTypeRngBuiltin
    ObjectTypeRngEgd
    ObjectTypeRngRandom
    ObjectTypeSecret
    ObjectTypeSecret_Keyring
    ObjectTypeSevGuest
    ObjectTypeS390PvGuest
    ObjectTypeThrottleGroup
    ObjectTypeTlsCredsAnon
    ObjectTypeTlsCredsPsk
    ObjectTypeTlsCredsX509
    ObjectTypeTlsCipherSuites
    ObjectTypeXRemoteObject
)

func (ObjectType) MarshalJSON

func (s ObjectType) MarshalJSON() ([]byte, error)

func (*ObjectType) UnmarshalJSON

func (s *ObjectType) UnmarshalJSON(data []byte) error

type ObjectTypeInfo

This structure describes a search result from @qom-list-types

Since: 1.1

type ObjectTypeInfo struct {
    Name     string  `json:"name"`               // the type name found in the search
    Abstract *bool   `json:"abstract,omitempty"` // the type is abstract and can't be directly instantiated. Omitted if false. (since 2.10)
    Parent   *string `json:"parent,omitempty"`   // Name of parent type, if any (since 2.10)
}

type OffAutoPCIBAR

An enumeration of options for specifying a PCI BAR

Since: 2.12

type OffAutoPCIBAR int32
const (
    OffAutoPCIBAROff  OffAutoPCIBAR = iota
    OffAutoPCIBARAuto               // The PCI BAR for the feature is automatically selected
    OffAutoPCIBARBar0               // PCI BAR0 is used for the feature
    OffAutoPCIBARBar1               // PCI BAR1 is used for the feature
    OffAutoPCIBARBar2               // PCI BAR2 is used for the feature
    OffAutoPCIBARBar3               // PCI BAR3 is used for the feature
    OffAutoPCIBARBar4               // PCI BAR4 is used for the feature
    OffAutoPCIBARBar5               // PCI BAR5 is used for the feature
)

func (OffAutoPCIBAR) MarshalJSON

func (s OffAutoPCIBAR) MarshalJSON() ([]byte, error)

func (*OffAutoPCIBAR) UnmarshalJSON

func (s *OffAutoPCIBAR) UnmarshalJSON(data []byte) error

type OnOffAuto

An enumeration of three options: on, off, and auto

Since: 2.2

type OnOffAuto int32
const (
    OnOffAutoAuto OnOffAuto = iota
    OnOffAutoOn             // Enabled
    OnOffAutoOff            // Disabled
)

func (OnOffAuto) MarshalJSON

func (s OnOffAuto) MarshalJSON() ([]byte, error)

func (*OnOffAuto) UnmarshalJSON

func (s *OnOffAuto) UnmarshalJSON(data []byte) error

type OnOffSplit

An enumeration of three values: on, off, and split

Since: 2.6

type OnOffSplit int32
const (
    OnOffSplitOn    OnOffSplit = iota
    OnOffSplitOff              // Disabled
    OnOffSplitSplit            // Mixed
)

func (OnOffSplit) MarshalJSON

func (s OnOffSplit) MarshalJSON() ([]byte, error)

func (*OnOffSplit) UnmarshalJSON

func (s *OnOffSplit) UnmarshalJSON(data []byte) error

type PCDIMMDeviceInfo

PCDIMMDevice state information

Since: 2.1

type PCDIMMDeviceInfo struct {
    Id           *string `json:"id,omitempty"` // device's ID
    Addr         int64   `json:"addr"`         // physical address, where device is mapped
    Size         int64   `json:"size"`         // size of memory that the device provides
    Slot         int64   `json:"slot"`         // slot number at which device is plugged in
    Node         int64   `json:"node"`         // NUMA node number where device is plugged in
    Memdev       string  `json:"memdev"`       // memory backend linked with device
    Hotplugged   bool    `json:"hotplugged"`   // true if device was hotplugged
    Hotpluggable bool    `json:"hotpluggable"` // true if device if could be added/removed while machine is running
}

type PCDIMMDeviceInfoWrapper

Since: 2.1

type PCDIMMDeviceInfoWrapper struct {
    Data PCDIMMDeviceInfo `json:"data"`
}

type PCIELinkSpeed

An enumeration of PCIe link speeds in units of GT/s

Since: 4.0

type PCIELinkSpeed int32
const (
    PCIELinkSpeed2_5 PCIELinkSpeed = iota
    PCIELinkSpeed5                 // 5.0GT/s
    PCIELinkSpeed8                 // 8.0GT/s
    PCIELinkSpeed16                // 16.0GT/s
)

func (PCIELinkSpeed) MarshalJSON

func (s PCIELinkSpeed) MarshalJSON() ([]byte, error)

func (*PCIELinkSpeed) UnmarshalJSON

func (s *PCIELinkSpeed) UnmarshalJSON(data []byte) error

type PCIELinkWidth

An enumeration of PCIe link width

Since: 4.0

type PCIELinkWidth int32
const (
    PCIELinkWidth1  PCIELinkWidth = iota
    PCIELinkWidth2                // x2
    PCIELinkWidth4                // x4
    PCIELinkWidth8                // x8
    PCIELinkWidth12               // x12
    PCIELinkWidth16               // x16
    PCIELinkWidth32               // x32
)

func (PCIELinkWidth) MarshalJSON

func (s PCIELinkWidth) MarshalJSON() ([]byte, error)

func (*PCIELinkWidth) UnmarshalJSON

func (s *PCIELinkWidth) UnmarshalJSON(data []byte) error

type PRManagerInfo

Information about a persistent reservation manager

Since: 3.0

type PRManagerInfo struct {
    Id        string `json:"id"`        // the identifier of the persistent reservation manager
    Connected bool   `json:"connected"` // true if the persistent reservation manager is connected to the underlying storage or helper
}

type PanicAction

Since: 6.0

type PanicAction int32
const (
    PanicActionPause    PanicAction = iota
    PanicActionShutdown             // Shutdown the VM and exit, according to the shutdown action
    PanicActionNone                 // Continue VM execution
)

func (PanicAction) MarshalJSON

func (s PanicAction) MarshalJSON() ([]byte, error)

func (*PanicAction) UnmarshalJSON

func (s *PanicAction) UnmarshalJSON(data []byte) error

type PciBridgeInfo

Information about a PCI Bridge device

Since: 0.14

type PciBridgeInfo struct {
    Bus     PciBusInfo      `json:"bus"`               // information about the bus the device resides on
    Devices []PciDeviceInfo `json:"devices,omitempty"` // a list of @PciDeviceInfo for each device on this bridge
}

type PciBusInfo

Information about a bus of a PCI Bridge device

Since: 2.4

type PciBusInfo struct {
    Number            int64          `json:"number"`             // primary bus interface number. This should be the number of the bus the device resides on.
    Secondary         int64          `json:"secondary"`          // secondary bus interface number. This is the number of the main bus for the bridge
    Subordinate       int64          `json:"subordinate"`        // This is the highest number bus that resides below the bridge.
    IoRange           PciMemoryRange `json:"io_range"`           // The PIO range for all devices on this bridge
    MemoryRange       PciMemoryRange `json:"memory_range"`       // The MMIO range for all devices on this bridge
    PrefetchableRange PciMemoryRange `json:"prefetchable_range"` // The range of prefetchable MMIO for all devices on this bridge
}

type PciDeviceClass

Information about the Class of a PCI device

Since: 2.4

type PciDeviceClass struct {
    Desc  *string `json:"desc,omitempty"` // a string description of the device's class
    Class int64   `json:"class"`          // the class code of the device
}

type PciDeviceId

Information about the Id of a PCI device

Since: 2.4

type PciDeviceId struct {
    Device          int64  `json:"device"`                     // the PCI device id
    Vendor          int64  `json:"vendor"`                     // the PCI vendor id
    Subsystem       *int64 `json:"subsystem,omitempty"`        // the PCI subsystem id (since 3.1)
    SubsystemVendor *int64 `json:"subsystem-vendor,omitempty"` // the PCI subsystem vendor id (since 3.1)
}

type PciDeviceInfo

Information about a PCI device

Notes: the contents of @class_info.desc are not stable and should only be treated as informational.

Since: 0.14

type PciDeviceInfo struct {
    Bus       int64             `json:"bus"`                  // the bus number of the device
    Slot      int64             `json:"slot"`                 // the slot the device is located in
    Function  int64             `json:"function"`             // the function of the slot used by the device
    ClassInfo PciDeviceClass    `json:"class_info"`           // the class of the device
    Id        PciDeviceId       `json:"id"`                   // the PCI device id
    Irq       *int64            `json:"irq,omitempty"`        // if an IRQ is assigned to the device, the IRQ number
    IrqPin    int64             `json:"irq_pin"`              // the IRQ pin, zero means no IRQ (since 5.1)
    QdevId    string            `json:"qdev_id"`              // the device name of the PCI device
    PciBridge *PciBridgeInfo    `json:"pci_bridge,omitempty"` // if the device is a PCI bridge, the bridge information
    Regions   []PciMemoryRegion `json:"regions"`              // a list of the PCI I/O regions associated with the device
}

type PciInfo

Information about a PCI bus

Since: 0.14

type PciInfo struct {
    Bus     int64           `json:"bus"`     // the bus index
    Devices []PciDeviceInfo `json:"devices"` // a list of devices on this bus
}

type PciMemoryRange

A PCI device memory region

Since: 0.14

type PciMemoryRange struct {
    Base  int64 `json:"base"`  // the starting address (guest physical)
    Limit int64 `json:"limit"` // the ending address (guest physical)
}

type PciMemoryRegion

Information about a PCI device I/O region.

Since: 0.14

type PciMemoryRegion struct {
    Bar       int64  `json:"bar"`  // the index of the Base Address Register for this region
    Type      string `json:"type"` // - 'io' if the region is a PIO region - 'memory' if the region is a MMIO region
    Address   int64  `json:"address"`
    Size      int64  `json:"size"`                  // memory size
    Prefetch  *bool  `json:"prefetch,omitempty"`    // if @type is 'memory', true if the memory is prefetchable
    MemType64 *bool  `json:"mem_type_64,omitempty"` // if @type is 'memory', true if the BAR is 64-bit
}

type PmemsaveCommand

Save a portion of guest physical memory to a file.

Returns: Nothing on success

Since: 0.14

Notes: Errors were not reliably returned until 1.1

Example: -> { "execute": "pmemsave",

"arguments": { "val": 10,
               "size": 100,
               "filename": "/tmp/physical-mem-dump" } }

<- { "return": {} }

type PmemsaveCommand struct {
    Val      int64  `json:"val"`      // the physical address of the guest to start from
    Size     int64  `json:"size"`     // the size of memory region to save
    Filename string `json:"filename"` // the file to save the memory to as binary data
}

type PowerdownEvent

Emitted when the virtual machine is powered down through the power control system, such as via ACPI.

Since: 0.12

Example: <- { "event": "POWERDOWN",

"timestamp": { "seconds": 1267040730, "microseconds": 682951 } }
type PowerdownEvent struct{}

type PrManagerHelperProperties

Properties for pr-manager-helper objects.

Since: 2.11

type PrManagerHelperProperties struct {
    Path string `json:"path"` // the path to a Unix domain socket for connecting to the external helper
}

type PrManagerStatusChangedEvent

Emitted whenever the connected status of a persistent reservation manager changes.

Since: 3.0

Example: <- { "event": "PR_MANAGER_STATUS_CHANGED",

"data": { "id": "pr-helper0",
          "connected": true
},
"timestamp": { "seconds": 1519840375, "microseconds": 450486 } }
type PrManagerStatusChangedEvent struct {
    Id        string `json:"id"`        // The id of the PR manager object
    Connected bool   `json:"connected"` // true if the PR manager is connected to a backend
}

type PreallocMode

Preallocation mode of QEMU image file

Since: 2.2

type PreallocMode int32
const (
    PreallocModeOff      PreallocMode = iota
    PreallocModeMetadata              // preallocate only for metadata
    PreallocModeFalloc                // like @full preallocation but allocate disk space by posix_fallocate() rather than writing data.
    PreallocModeFull                  // preallocate all data by writing it to the device to ensure disk space is really available. This data may or may not be zero, depending on the image format and storage. @full preallocation also sets up metadata correctly.
)

func (PreallocMode) MarshalJSON

func (s PreallocMode) MarshalJSON() ([]byte, error)

func (*PreallocMode) UnmarshalJSON

func (s *PreallocMode) UnmarshalJSON(data []byte) error

type QAuthZListFormat

The authorization policy match format

Since: 4.0

type QAuthZListFormat int32
const (
    QAuthZListFormatExact QAuthZListFormat = iota
    QAuthZListFormatGlob                   // string with ? and * shell wildcard support
)

func (QAuthZListFormat) MarshalJSON

func (s QAuthZListFormat) MarshalJSON() ([]byte, error)

func (*QAuthZListFormat) UnmarshalJSON

func (s *QAuthZListFormat) UnmarshalJSON(data []byte) error

type QAuthZListPolicy

The authorization policy result

Since: 4.0

type QAuthZListPolicy int32
const (
    QAuthZListPolicyDeny  QAuthZListPolicy = iota
    QAuthZListPolicyAllow                  // allow access
)

func (QAuthZListPolicy) MarshalJSON

func (s QAuthZListPolicy) MarshalJSON() ([]byte, error)

func (*QAuthZListPolicy) UnmarshalJSON

func (s *QAuthZListPolicy) UnmarshalJSON(data []byte) error

type QAuthZListRule

A single authorization rule.

Since: 4.0

type QAuthZListRule struct {
    Match  string            `json:"match"`            // a string or glob to match against a user identity
    Policy QAuthZListPolicy  `json:"policy"`           // the result to return if @match evaluates to true
    Format *QAuthZListFormat `json:"format,omitempty"` // the format of the @match rule (default 'exact')
}

type QCryptoBlockAmendOptions

The options that are available for all encryption formats when amending encryption settings

Since: 5.1

type QCryptoBlockAmendOptions struct {
    // Base type for this struct
    QCryptoBlockOptionsBase
    // Value based on @format, possible types:
    // * QCryptoBlockAmendOptionsLUKS
    Value Any
}

func (QCryptoBlockAmendOptions) MarshalJSON

func (s QCryptoBlockAmendOptions) MarshalJSON() ([]byte, error)

func (*QCryptoBlockAmendOptions) UnmarshalJSON

func (s *QCryptoBlockAmendOptions) UnmarshalJSON(data []byte) error

type QCryptoBlockAmendOptionsLUKS

This struct defines the update parameters that activate/de-activate set of keyslots

None: Since 5.1

type QCryptoBlockAmendOptionsLUKS struct {
    State     QCryptoBlockLUKSKeyslotState `json:"state"`                // the desired state of the keyslots
    NewSecret *string                      `json:"new-secret,omitempty"` // The ID of a QCryptoSecret object providing the password to be written into added active keyslots
    OldSecret *string                      `json:"old-secret,omitempty"` // Optional (for deactivation only) If given will deactivate all keyslots that match password located in QCryptoSecret with this ID
    Keyslot   *int64                       `json:"keyslot,omitempty"`    // Optional. ID of the keyslot to activate/deactivate. For keyslot activation, keyslot should not be active already (this is unsafe to update an active keyslot), but possible if 'force' parameter is given. If keyslot is not given, first free keyslot will be written. For keyslot deactivation, this parameter specifies the exact keyslot to deactivate
    IterTime  *int64                       `json:"iter-time,omitempty"`  // Optional (for activation only) Number of milliseconds to spend in PBKDF passphrase processing for the newly activated keyslot. Currently defaults to 2000.
    Secret    *string                      `json:"secret,omitempty"`     // Optional. The ID of a QCryptoSecret object providing the password to use to retrieve current master key. Defaults to the same secret that was used to open the image
}

type QCryptoBlockCreateOptions

The options that are available for all encryption formats when initializing a new volume

Since: 2.6

type QCryptoBlockCreateOptions struct {
    // Base type for this struct
    QCryptoBlockOptionsBase
    // Value based on @format, possible types:
    // * QCryptoBlockOptionsQCow
    // * QCryptoBlockCreateOptionsLUKS
    Value Any
}

func (QCryptoBlockCreateOptions) MarshalJSON

func (s QCryptoBlockCreateOptions) MarshalJSON() ([]byte, error)

func (*QCryptoBlockCreateOptions) UnmarshalJSON

func (s *QCryptoBlockCreateOptions) UnmarshalJSON(data []byte) error

type QCryptoBlockCreateOptionsLUKS

The options that apply to LUKS encryption format initialization

Since: 2.6

type QCryptoBlockCreateOptionsLUKS struct {
    // Base type for this struct
    QCryptoBlockOptionsLUKS
    CipherAlg    *QCryptoCipherAlgorithm `json:"cipher-alg,omitempty"`     // the cipher algorithm for data encryption Currently defaults to 'aes-256'.
    CipherMode   *QCryptoCipherMode      `json:"cipher-mode,omitempty"`    // the cipher mode for data encryption Currently defaults to 'xts'
    IvgenAlg     *QCryptoIVGenAlgorithm  `json:"ivgen-alg,omitempty"`      // the initialization vector generator Currently defaults to 'plain64'
    IvgenHashAlg *QCryptoHashAlgorithm   `json:"ivgen-hash-alg,omitempty"` // the initialization vector generator hash Currently defaults to 'sha256'
    HashAlg      *QCryptoHashAlgorithm   `json:"hash-alg,omitempty"`       // the master key hash algorithm Currently defaults to 'sha256'
    IterTime     *int64                  `json:"iter-time,omitempty"`      // number of milliseconds to spend in PBKDF passphrase processing. Currently defaults to 2000. (since 2.8)
}

type QCryptoBlockFormat

The supported full disk encryption formats

Since: 2.6

type QCryptoBlockFormat int32
const (
    QCryptoBlockFormatQcow QCryptoBlockFormat = iota
    QCryptoBlockFormatLuks                    // LUKS encryption format. Recommended for new images
)

func (QCryptoBlockFormat) MarshalJSON

func (s QCryptoBlockFormat) MarshalJSON() ([]byte, error)

func (*QCryptoBlockFormat) UnmarshalJSON

func (s *QCryptoBlockFormat) UnmarshalJSON(data []byte) error

type QCryptoBlockInfo

Information about the block encryption options

Since: 2.7

type QCryptoBlockInfo struct {
    // Base type for this struct
    QCryptoBlockInfoBase
    // Value based on @format, possible types:
    // * QCryptoBlockInfoLUKS
    Value Any
}

func (QCryptoBlockInfo) MarshalJSON

func (s QCryptoBlockInfo) MarshalJSON() ([]byte, error)

func (*QCryptoBlockInfo) UnmarshalJSON

func (s *QCryptoBlockInfo) UnmarshalJSON(data []byte) error

type QCryptoBlockInfoBase

The common information that applies to all full disk encryption formats

Since: 2.7

type QCryptoBlockInfoBase struct {
    Format QCryptoBlockFormat `json:"format"` // the encryption format
}

type QCryptoBlockInfoLUKS

Information about the LUKS block encryption options

Since: 2.7

type QCryptoBlockInfoLUKS struct {
    CipherAlg      QCryptoCipherAlgorithm     `json:"cipher-alg"`               // the cipher algorithm for data encryption
    CipherMode     QCryptoCipherMode          `json:"cipher-mode"`              // the cipher mode for data encryption
    IvgenAlg       QCryptoIVGenAlgorithm      `json:"ivgen-alg"`                // the initialization vector generator
    IvgenHashAlg   *QCryptoHashAlgorithm      `json:"ivgen-hash-alg,omitempty"` // the initialization vector generator hash
    HashAlg        QCryptoHashAlgorithm       `json:"hash-alg"`                 // the master key hash algorithm
    PayloadOffset  int64                      `json:"payload-offset"`           // offset to the payload data in bytes
    MasterKeyIters int64                      `json:"master-key-iters"`         // number of PBKDF2 iterations for key material
    Uuid           string                     `json:"uuid"`                     // unique identifier for the volume
    Slots          []QCryptoBlockInfoLUKSSlot `json:"slots"`                    // information about each key slot
}

type QCryptoBlockInfoLUKSSlot

Information about the LUKS block encryption key slot options

Since: 2.7

type QCryptoBlockInfoLUKSSlot struct {
    Active    bool   `json:"active"`            // whether the key slot is currently in use
    Iters     *int64 `json:"iters,omitempty"`   // number of PBKDF2 iterations for key material
    Stripes   *int64 `json:"stripes,omitempty"` // number of stripes for splitting key material
    KeyOffset int64  `json:"key-offset"`        // offset to the key material in bytes
}

type QCryptoBlockLUKSKeyslotState

Defines state of keyslots that are affected by the update

Since: 5.1

type QCryptoBlockLUKSKeyslotState int32
const (
    QCryptoBlockLUKSKeyslotStateActive   QCryptoBlockLUKSKeyslotState = iota
    QCryptoBlockLUKSKeyslotStateInactive                              // The slots are erased (contain garbage) and marked as inactive
)

func (QCryptoBlockLUKSKeyslotState) MarshalJSON

func (s QCryptoBlockLUKSKeyslotState) MarshalJSON() ([]byte, error)

func (*QCryptoBlockLUKSKeyslotState) UnmarshalJSON

func (s *QCryptoBlockLUKSKeyslotState) UnmarshalJSON(data []byte) error

type QCryptoBlockOpenOptions

The options that are available for all encryption formats when opening an existing volume

Since: 2.6

type QCryptoBlockOpenOptions struct {
    // Base type for this struct
    QCryptoBlockOptionsBase
    // Value based on @format, possible types:
    // * QCryptoBlockOptionsQCow
    // * QCryptoBlockOptionsLUKS
    Value Any
}

func (QCryptoBlockOpenOptions) MarshalJSON

func (s QCryptoBlockOpenOptions) MarshalJSON() ([]byte, error)

func (*QCryptoBlockOpenOptions) UnmarshalJSON

func (s *QCryptoBlockOpenOptions) UnmarshalJSON(data []byte) error

type QCryptoBlockOptionsBase

The common options that apply to all full disk encryption formats

Since: 2.6

type QCryptoBlockOptionsBase struct {
    Format QCryptoBlockFormat `json:"format"` // the encryption format
}

type QCryptoBlockOptionsLUKS

The options that apply to LUKS encryption format

Since: 2.6

type QCryptoBlockOptionsLUKS struct {
    KeySecret *string `json:"key-secret,omitempty"` // the ID of a QCryptoSecret object providing the decryption key. Mandatory except when probing image for metadata only.
}

type QCryptoBlockOptionsQCow

The options that apply to QCow/QCow2 AES-CBC encryption format

Since: 2.6

type QCryptoBlockOptionsQCow struct {
    KeySecret *string `json:"key-secret,omitempty"` // the ID of a QCryptoSecret object providing the decryption key. Mandatory except when probing image for metadata only.
}

type QCryptoCipherAlgorithm

The supported algorithms for content encryption ciphers

Since: 2.6

type QCryptoCipherAlgorithm int32
const (
    QCryptoCipherAlgorithmAes128     QCryptoCipherAlgorithm = iota
    QCryptoCipherAlgorithmAes192                            // AES with 192 bit / 24 byte keys
    QCryptoCipherAlgorithmAes256                            // AES with 256 bit / 32 byte keys
    QCryptoCipherAlgorithmDes                               // DES with 56 bit / 8 byte keys. Do not use except in VNC. (since 6.1)
    QCryptoCipherAlgorithm3Des                              // 3DES(EDE) with 192 bit / 24 byte keys (since 2.9)
    QCryptoCipherAlgorithmCast5128                          // Cast5 with 128 bit / 16 byte keys
    QCryptoCipherAlgorithmSerpent128                        // Serpent with 128 bit / 16 byte keys
    QCryptoCipherAlgorithmSerpent192                        // Serpent with 192 bit / 24 byte keys
    QCryptoCipherAlgorithmSerpent256                        // Serpent with 256 bit / 32 byte keys
    QCryptoCipherAlgorithmTwofish128                        // Twofish with 128 bit / 16 byte keys
    QCryptoCipherAlgorithmTwofish192                        // Twofish with 192 bit / 24 byte keys
    QCryptoCipherAlgorithmTwofish256                        // Twofish with 256 bit / 32 byte keys
)

func (QCryptoCipherAlgorithm) MarshalJSON

func (s QCryptoCipherAlgorithm) MarshalJSON() ([]byte, error)

func (*QCryptoCipherAlgorithm) UnmarshalJSON

func (s *QCryptoCipherAlgorithm) UnmarshalJSON(data []byte) error

type QCryptoCipherMode

The supported modes for content encryption ciphers

Since: 2.6

type QCryptoCipherMode int32
const (
    QCryptoCipherModeEcb QCryptoCipherMode = iota
    QCryptoCipherModeCbc                   // Cipher Block Chaining
    QCryptoCipherModeXts                   // XEX with tweaked code book and ciphertext stealing
    QCryptoCipherModeCtr                   // Counter (Since 2.8)
)

func (QCryptoCipherMode) MarshalJSON

func (s QCryptoCipherMode) MarshalJSON() ([]byte, error)

func (*QCryptoCipherMode) UnmarshalJSON

func (s *QCryptoCipherMode) UnmarshalJSON(data []byte) error

type QCryptoHashAlgorithm

The supported algorithms for computing content digests

Since: 2.6

type QCryptoHashAlgorithm int32
const (
    QCryptoHashAlgorithmMd5       QCryptoHashAlgorithm = iota
    QCryptoHashAlgorithmSha1                           // SHA-1. Should not be used in any new code, legacy compat only
    QCryptoHashAlgorithmSha224                         // SHA-224. (since 2.7)
    QCryptoHashAlgorithmSha256                         // SHA-256. Current recommended strong hash.
    QCryptoHashAlgorithmSha384                         // SHA-384. (since 2.7)
    QCryptoHashAlgorithmSha512                         // SHA-512. (since 2.7)
    QCryptoHashAlgorithmRipemd160                      // RIPEMD-160. (since 2.7)
)

func (QCryptoHashAlgorithm) MarshalJSON

func (s QCryptoHashAlgorithm) MarshalJSON() ([]byte, error)

func (*QCryptoHashAlgorithm) UnmarshalJSON

func (s *QCryptoHashAlgorithm) UnmarshalJSON(data []byte) error

type QCryptoIVGenAlgorithm

The supported algorithms for generating initialization vectors for full disk encryption. The 'plain' generator should not be used for disks with sector numbers larger than 2^32, except where compatibility with pre-existing Linux dm-crypt volumes is required.

Since: 2.6

type QCryptoIVGenAlgorithm int32
const (
    QCryptoIVGenAlgorithmPlain   QCryptoIVGenAlgorithm = iota
    QCryptoIVGenAlgorithmPlain64                       // 64-bit sector number
    QCryptoIVGenAlgorithmEssiv                         // 64-bit sector number encrypted with a hash of the encryption key
)

func (QCryptoIVGenAlgorithm) MarshalJSON

func (s QCryptoIVGenAlgorithm) MarshalJSON() ([]byte, error)

func (*QCryptoIVGenAlgorithm) UnmarshalJSON

func (s *QCryptoIVGenAlgorithm) UnmarshalJSON(data []byte) error

type QCryptoSecretFormat

The data format that the secret is provided in

Since: 2.6

type QCryptoSecretFormat int32
const (
    QCryptoSecretFormatRaw    QCryptoSecretFormat = iota
    QCryptoSecretFormatBase64                     // arbitrary base64 encoded binary data
)

func (QCryptoSecretFormat) MarshalJSON

func (s QCryptoSecretFormat) MarshalJSON() ([]byte, error)

func (*QCryptoSecretFormat) UnmarshalJSON

func (s *QCryptoSecretFormat) UnmarshalJSON(data []byte) error

type QCryptoTLSCredsEndpoint

The type of network endpoint that will be using the credentials. Most types of credential require different setup / structures depending on whether they will be used in a server versus a client.

Since: 2.5

type QCryptoTLSCredsEndpoint int32
const (
    QCryptoTLSCredsEndpointClient QCryptoTLSCredsEndpoint = iota
    QCryptoTLSCredsEndpointServer                         // the network endpoint is acting as the server
)

func (QCryptoTLSCredsEndpoint) MarshalJSON

func (s QCryptoTLSCredsEndpoint) MarshalJSON() ([]byte, error)

func (*QCryptoTLSCredsEndpoint) UnmarshalJSON

func (s *QCryptoTLSCredsEndpoint) UnmarshalJSON(data []byte) error

type QKeyCode

An enumeration of key name.

This is used by the @send-key command.

None: 'sysrq' was mistakenly added to hack around the fact that the ps2 driver was not generating correct scancodes sequences when 'alt+print' was pressed. This flaw is now fixed and the 'sysrq' key serves no further purpose. Any further use of 'sysrq' will be transparently changed to 'print', so they are effectively synonyms.

Since: 1.3

type QKeyCode int32
const (
    QKeyCodeUnmapped QKeyCode = iota
    QKeyCodeShift
    QKeyCodeShift_R
    QKeyCodeAlt
    QKeyCodeAlt_R
    QKeyCodeCtrl
    QKeyCodeCtrl_R
    QKeyCodeMenu
    QKeyCodeEsc
    QKeyCode1
    QKeyCode2
    QKeyCode3
    QKeyCode4
    QKeyCode5
    QKeyCode6
    QKeyCode7
    QKeyCode8
    QKeyCode9
    QKeyCode0
    QKeyCodeMinus
    QKeyCodeEqual
    QKeyCodeBackspace
    QKeyCodeTab
    QKeyCodeQ
    QKeyCodeW
    QKeyCodeE
    QKeyCodeR
    QKeyCodeT
    QKeyCodeY
    QKeyCodeU
    QKeyCodeI
    QKeyCodeO
    QKeyCodeP
    QKeyCodeBracket_Left
    QKeyCodeBracket_Right
    QKeyCodeRet
    QKeyCodeA
    QKeyCodeS
    QKeyCodeD
    QKeyCodeF
    QKeyCodeG
    QKeyCodeH
    QKeyCodeJ
    QKeyCodeK
    QKeyCodeL
    QKeyCodeSemicolon
    QKeyCodeApostrophe
    QKeyCodeGrave_Accent
    QKeyCodeBackslash
    QKeyCodeZ
    QKeyCodeX
    QKeyCodeC
    QKeyCodeV
    QKeyCodeB
    QKeyCodeN
    QKeyCodeM
    QKeyCodeComma
    QKeyCodeDot
    QKeyCodeSlash
    QKeyCodeAsterisk
    QKeyCodeSpc
    QKeyCodeCaps_Lock
    QKeyCodeF1
    QKeyCodeF2
    QKeyCodeF3
    QKeyCodeF4
    QKeyCodeF5
    QKeyCodeF6
    QKeyCodeF7
    QKeyCodeF8
    QKeyCodeF9
    QKeyCodeF10
    QKeyCodeNum_Lock
    QKeyCodeScroll_Lock
    QKeyCodeKp_Divide
    QKeyCodeKp_Multiply
    QKeyCodeKp_Subtract
    QKeyCodeKp_Add
    QKeyCodeKp_Enter
    QKeyCodeKp_Decimal
    QKeyCodeSysrq
    QKeyCodeKp_0
    QKeyCodeKp_1
    QKeyCodeKp_2
    QKeyCodeKp_3
    QKeyCodeKp_4
    QKeyCodeKp_5
    QKeyCodeKp_6
    QKeyCodeKp_7
    QKeyCodeKp_8
    QKeyCodeKp_9
    QKeyCodeLess
    QKeyCodeF11
    QKeyCodeF12
    QKeyCodePrint
    QKeyCodeHome
    QKeyCodePgup
    QKeyCodePgdn
    QKeyCodeEnd
    QKeyCodeLeft
    QKeyCodeUp
    QKeyCodeDown
    QKeyCodeRight
    QKeyCodeInsert
    QKeyCodeDelete
    QKeyCodeStop
    QKeyCodeAgain
    QKeyCodeProps
    QKeyCodeUndo
    QKeyCodeFront
    QKeyCodeCopy
    QKeyCodeOpen
    QKeyCodePaste
    QKeyCodeFind
    QKeyCodeCut
    QKeyCodeLf
    QKeyCodeHelp
    QKeyCodeMeta_L
    QKeyCodeMeta_R
    QKeyCodeCompose
    QKeyCodePause            // since 2.0
    QKeyCodeRo               // since 2.4
    QKeyCodeHiragana         // since 2.9
    QKeyCodeHenkan           // since 2.9
    QKeyCodeYen              // since 2.9
    QKeyCodeMuhenkan         // since 2.12
    QKeyCodeKatakanahiragana // since 2.12
    QKeyCodeKp_Comma         // since 2.4
    QKeyCodeKp_Equals        // since 2.6
    QKeyCodePower            // since 2.6
    QKeyCodeSleep            // since 2.10
    QKeyCodeWake             // since 2.10
    QKeyCodeAudionext        // since 2.10
    QKeyCodeAudioprev        // since 2.10
    QKeyCodeAudiostop        // since 2.10
    QKeyCodeAudioplay        // since 2.10
    QKeyCodeAudiomute        // since 2.10
    QKeyCodeVolumeup         // since 2.10
    QKeyCodeVolumedown       // since 2.10
    QKeyCodeMediaselect      // since 2.10
    QKeyCodeMail             // since 2.10
    QKeyCodeCalculator       // since 2.10
    QKeyCodeComputer         // since 2.10
    QKeyCodeAc_Home          // since 2.10
    QKeyCodeAc_Back          // since 2.10
    QKeyCodeAc_Forward       // since 2.10
    QKeyCodeAc_Refresh       // since 2.10
    QKeyCodeAc_Bookmarks     // since 2.10
    QKeyCodeLang1            // since 6.1
    QKeyCodeLang2            // since 6.1
)

func (QKeyCode) MarshalJSON

func (s QKeyCode) MarshalJSON() ([]byte, error)

func (*QKeyCode) UnmarshalJSON

func (s *QKeyCode) UnmarshalJSON(data []byte) error

type QKeyCodeWrapper

Since: 1.3

type QKeyCodeWrapper struct {
    Data QKeyCode `json:"data"`
}

type QMPCapability

Enumeration of capabilities to be advertised during initial client connection, used for agreeing on particular QMP extension behaviors.

Since: 2.12

type QMPCapability int32
const (
    QMPCapabilityOob QMPCapability = iota
)

func (QMPCapability) MarshalJSON

func (s QMPCapability) MarshalJSON() ([]byte, error)

func (*QMPCapability) UnmarshalJSON

func (s *QMPCapability) UnmarshalJSON(data []byte) error

type QType

No documentation available

type QType int32
const (
    QTypeNone QType = iota
    QTypeQnull
    QTypeQnum
    QTypeQstring
    QTypeQdict
    QTypeQlist
    QTypeQbool
)

func (QType) MarshalJSON

func (s QType) MarshalJSON() ([]byte, error)

func (*QType) UnmarshalJSON

func (s *QType) UnmarshalJSON(data []byte) error

type QapiErrorClass

QEMU error classes

Since: 1.2

type QapiErrorClass int32
const (
    QapiErrorClassGenericerror    QapiErrorClass = iota
    QapiErrorClassCommandnotfound                // the requested command has not been found
    QapiErrorClassDevicenotactive                // a device has failed to be become active
    QapiErrorClassDevicenotfound                 // the requested device has not been found
    QapiErrorClassKvmmissingcap                  // the requested operation can't be fulfilled because a required KVM capability is missing
)

func (QapiErrorClass) MarshalJSON

func (s QapiErrorClass) MarshalJSON() ([]byte, error)

func (*QapiErrorClass) UnmarshalJSON

func (s *QapiErrorClass) UnmarshalJSON(data []byte) error

type Qcow2BitmapInfo

Qcow2 bitmap information.

Since: 4.0

type Qcow2BitmapInfo struct {
    Name        string                 `json:"name"`        // the name of the bitmap
    Granularity uint32                 `json:"granularity"` // granularity of the bitmap in bytes
    Flags       []Qcow2BitmapInfoFlags `json:"flags"`       // flags of the bitmap
}

type Qcow2BitmapInfoFlags

An enumeration of flags that a bitmap can report to the user.

Since: 4.0

type Qcow2BitmapInfoFlags int32
const (
    Qcow2BitmapInfoFlagsInUse Qcow2BitmapInfoFlags = iota
    Qcow2BitmapInfoFlagsAuto                       // The bitmap must reflect all changes of the virtual disk by any application that would write to this qcow2 file.
)

func (Qcow2BitmapInfoFlags) MarshalJSON

func (s Qcow2BitmapInfoFlags) MarshalJSON() ([]byte, error)

func (*Qcow2BitmapInfoFlags) UnmarshalJSON

func (s *Qcow2BitmapInfoFlags) UnmarshalJSON(data []byte) error

type Qcow2CompressionType

Compression type used in qcow2 image file

Since: 5.1

type Qcow2CompressionType int32
const (
    Qcow2CompressionTypeZlib Qcow2CompressionType = iota
    Qcow2CompressionTypeZstd                      // zstd compression, see <http://github.com/facebook/zstd>
)

func (Qcow2CompressionType) MarshalJSON

func (s Qcow2CompressionType) MarshalJSON() ([]byte, error)

func (*Qcow2CompressionType) UnmarshalJSON

func (s *Qcow2CompressionType) UnmarshalJSON(data []byte) error

type Qcow2OverlapCheckFlags

Structure of flags for each metadata structure. Setting a field to 'true' makes qemu guard that structure against unintended overwriting. The default value is chosen according to the template given.

Since: 2.9

type Qcow2OverlapCheckFlags struct {
    Template        *Qcow2OverlapCheckMode `json:"template,omitempty"` // Specifies a template mode which can be adjusted using the other flags, defaults to 'cached'
    MainHeader      *bool                  `json:"main-header,omitempty"`
    ActiveL1        *bool                  `json:"active-l1,omitempty"`
    ActiveL2        *bool                  `json:"active-l2,omitempty"`
    RefcountTable   *bool                  `json:"refcount-table,omitempty"`
    RefcountBlock   *bool                  `json:"refcount-block,omitempty"`
    SnapshotTable   *bool                  `json:"snapshot-table,omitempty"`
    InactiveL1      *bool                  `json:"inactive-l1,omitempty"`
    InactiveL2      *bool                  `json:"inactive-l2,omitempty"`
    BitmapDirectory *bool                  `json:"bitmap-directory,omitempty"` // since 3.0
}

type Qcow2OverlapCheckMode

General overlap check modes.

Since: 2.9

type Qcow2OverlapCheckMode int32
const (
    Qcow2OverlapCheckModeNone     Qcow2OverlapCheckMode = iota
    Qcow2OverlapCheckModeConstant                       // Perform only checks which can be done in constant time and without reading anything from disk
    Qcow2OverlapCheckModeCached                         // Perform only checks which can be done without reading anything from disk
    Qcow2OverlapCheckModeAll                            // Perform all available overlap checks
)

func (Qcow2OverlapCheckMode) MarshalJSON

func (s Qcow2OverlapCheckMode) MarshalJSON() ([]byte, error)

func (*Qcow2OverlapCheckMode) UnmarshalJSON

func (s *Qcow2OverlapCheckMode) UnmarshalJSON(data []byte) error

type Qcow2OverlapChecks

Specifies which metadata structures should be guarded against unintended overwriting.

Since: 2.9

type Qcow2OverlapChecks struct {
    // Options are:
    // * flags (Qcow2OverlapCheckFlags): set of flags for separate specification of each metadata structure type
    // * mode (Qcow2OverlapCheckMode): named mode which chooses a specific set of flags
    Value Any
}

func (Qcow2OverlapChecks) MarshalJSON

func (s Qcow2OverlapChecks) MarshalJSON() ([]byte, error)

func (*Qcow2OverlapChecks) UnmarshalJSON

func (s *Qcow2OverlapChecks) UnmarshalJSON(data []byte) error

type QmpCapabilitiesCommand

Enable QMP capabilities.

Arguments:

Example: -> { "execute": "qmp_capabilities",

"arguments": { "enable": [ "oob" ] } }

<- { "return": {} }

Notes: This command is valid exactly when first connecting: it must be issued before any other command will be accepted, and will fail once the monitor is accepting other commands. (see qemu docs/interop/qmp-spec.txt)

The QMP client needs to explicitly enable QMP capabilities, otherwise all the QMP capabilities will be turned off by default.

Since: 0.13

type QmpCapabilitiesCommand struct {
    Enable []QMPCapability `json:"enable,omitempty"` // An optional list of QMPCapability values to enable. The client must not enable any capability that is not mentioned in the QMP greeting message. If the field is not provided, it means no QMP capabilities will be enabled. (since 2.12)
}

type QomGetCommand

This command will get a property from a object model path and return the value.

Returns: The property value. The type depends on the property type. child<> and link<> properties are returned as #str pathnames. All integer property types (u8, u16, etc) are returned as #int.

Since: 1.2

Example: 1. Use absolute path

-> { "execute": "qom-get",

"arguments": { "path": "/machine/unattached/device[0]",
               "property": "hotplugged" } }

<- { "return": false }

2. Use partial path

-> { "execute": "qom-get",

"arguments": { "path": "unattached/sysbus",
               "property": "type" } }

<- { "return": "System" }

type QomGetCommand struct {
    Path     string `json:"path"`     // The path within the object model. There are two forms of supported paths--absolute and partial paths. Absolute paths are derived from the root object and can follow child<> or link<> properties. Since they can follow link<> properties, they can be arbitrarily long. Absolute paths look like absolute filenames and are prefixed with a leading slash. Partial paths look like relative filenames. They do not begin with a prefix. The matching rules for partial paths are subtle but designed to make specifying objects easy. At each level of the composition tree, the partial path is matched as an absolute path. The first match is not returned. At least two matches are searched for. A successful result is only returned if only one match is found. If more than one match is found, a flag is return to indicate that the match was ambiguous.
    Property string `json:"property"` // The property name to read
}

type QomListCommand

This command will list any properties of a object given a path in the object model.

Returns: a list of @ObjectPropertyInfo that describe the properties of the object.

Since: 1.2

Example: -> { "execute": "qom-list",

"arguments": { "path": "/chardevs" } }

<- { "return": [ { "name": "type", "type": "string" },

{ "name": "parallel0", "type": "child<chardev-vc>" },
{ "name": "serial0", "type": "child<chardev-vc>" },
{ "name": "mon0", "type": "child<chardev-stdio>" } ] }
type QomListCommand struct {
    Path string `json:"path"` // the path within the object model. See @qom-get for a description of this parameter.
}

type QomListPropertiesCommand

List properties associated with a QOM object.

Note: objects can create properties at runtime, for example to describe links between different devices and/or objects. These properties are not included in the output of this command.

Returns: a list of ObjectPropertyInfo describing object properties

Since: 2.12

type QomListPropertiesCommand struct {
    Typename string `json:"typename"` // the type name of an object
}

type QomListTypesCommand

This command will return a list of types given search parameters

Returns: a list of @ObjectTypeInfo or an empty list if no results are found

Since: 1.1

type QomListTypesCommand struct {
    Implements *string `json:"implements,omitempty"` // if specified, only return types that implement this type name
    Abstract   *bool   `json:"abstract,omitempty"`   // if true, include abstract types in the results
}

type QomSetCommand

This command will set a property from a object model path.

Since: 1.2

Example: -> { "execute": "qom-set",

"arguments": { "path": "/machine",
               "property": "graphics",
               "value": false } }

<- { "return": {} }

type QomSetCommand struct {
    Path     string `json:"path"`     // see @qom-get for a description of this parameter
    Property string `json:"property"` // the property name to set
    Value    Any    `json:"value"`    // a value who's type is appropriate for the property type. See @qom-get for a description of type mapping.
}

type QtestProperties

Properties for qtest objects.

Since: 6.0

type QtestProperties struct {
    Chardev string  `json:"chardev"`       // the chardev to be used to receive qtest commands on.
    Log     *string `json:"log,omitempty"` // the path to a log file
}

type QueryAcpiOspmStatusCommand

Return a list of ACPIOSTInfo for devices that support status reporting via ACPI _OST method.

Since: 2.1

Example: -> { "execute": "query-acpi-ospm-status" } <- { "return": [ { "device": "d1", "slot": "0", "slot-type": "DIMM", "source": 1, "status": 0},

              { "slot": "1", "slot-type": "DIMM", "source": 0, "status": 0},
              { "slot": "2", "slot-type": "DIMM", "source": 0, "status": 0},
              { "slot": "3", "slot-type": "DIMM", "source": 0, "status": 0}
]}
type QueryAcpiOspmStatusCommand struct{}

type QueryBalloonCommand

Return information about the balloon device.

Returns: - @BalloonInfo on success - If the balloon driver is enabled but not functional because the KVM

kernel module cannot support it, KvmMissingCap

- If no balloon device is present, DeviceNotActive

Since: 0.14

Example: -> { "execute": "query-balloon" } <- { "return": {

      "actual": 1073741824,
   }
}
type QueryBalloonCommand struct{}

type QueryBlockCommand

Get a list of BlockInfo for all virtual block devices.

Returns: a list of @BlockInfo describing each virtual block device. Filter nodes that were created implicitly are skipped over.

Since: 0.14

Example: -> { "execute": "query-block" } <- {

   "return":[
      {
         "io-status": "ok",
         "device":"ide0-hd0",
         "locked":false,
         "removable":false,
         "inserted":{
            "ro":false,
            "drv":"qcow2",
            "encrypted":false,
            "file":"disks/test.qcow2",
            "backing_file_depth":1,
            "bps":1000000,
            "bps_rd":0,
            "bps_wr":0,
            "iops":1000000,
            "iops_rd":0,
            "iops_wr":0,
            "bps_max": 8000000,
            "bps_rd_max": 0,
            "bps_wr_max": 0,
            "iops_max": 0,
            "iops_rd_max": 0,
            "iops_wr_max": 0,
            "iops_size": 0,
            "detect_zeroes": "on",
            "write_threshold": 0,
            "image":{
               "filename":"disks/test.qcow2",
               "format":"qcow2",
               "virtual-size":2048000,
               "backing_file":"base.qcow2",
               "full-backing-filename":"disks/base.qcow2",
               "backing-filename-format":"qcow2",
               "snapshots":[
                  {
                     "id": "1",
                     "name": "snapshot1",
                     "vm-state-size": 0,
                     "date-sec": 10000200,
                     "date-nsec": 12,
                     "vm-clock-sec": 206,
                     "vm-clock-nsec": 30
                  }
               ],
               "backing-image":{
                   "filename":"disks/base.qcow2",
                   "format":"qcow2",
                   "virtual-size":2048000
               }
            }
         },
         "qdev": "ide_disk",
         "type":"unknown"
      },
      {
         "io-status": "ok",
         "device":"ide1-cd0",
         "locked":false,
         "removable":true,
         "qdev": "/machine/unattached/device[23]",
         "tray_open": false,
         "type":"unknown"
      },
      {
         "device":"floppy0",
         "locked":false,
         "removable":true,
         "qdev": "/machine/unattached/device[20]",
         "type":"unknown"
      },
      {
         "device":"sd0",
         "locked":false,
         "removable":true,
         "type":"unknown"
      }
   ]
}
type QueryBlockCommand struct{}

type QueryBlockExportsCommand

Returns: A list of BlockExportInfo describing all block exports

Since: 5.2

type QueryBlockExportsCommand struct{}

type QueryBlockJobsCommand

Return information about long-running block device operations.

Returns: a list of @BlockJobInfo for each active block job

Since: 1.1

type QueryBlockJobsCommand struct{}

type QueryBlockstatsCommand

Query the @BlockStats for all virtual block devices.

Returns: A list of @BlockStats for each virtual block devices.

Since: 0.14

Example: -> { "execute": "query-blockstats" } <- {

   "return":[
      {
         "device":"ide0-hd0",
         "parent":{
            "stats":{
               "wr_highest_offset":3686448128,
               "wr_bytes":9786368,
               "wr_operations":751,
               "rd_bytes":122567168,
               "rd_operations":36772
               "wr_total_times_ns":313253456
               "rd_total_times_ns":3465673657
               "flush_total_times_ns":49653
               "flush_operations":61,
               "rd_merged":0,
               "wr_merged":0,
               "idle_time_ns":2953431879,
               "account_invalid":true,
               "account_failed":false
            }
         },
         "stats":{
            "wr_highest_offset":2821110784,
            "wr_bytes":9786368,
            "wr_operations":692,
            "rd_bytes":122739200,
            "rd_operations":36604
            "flush_operations":51,
            "wr_total_times_ns":313253456
            "rd_total_times_ns":3465673657
            "flush_total_times_ns":49653,
            "rd_merged":0,
            "wr_merged":0,
            "idle_time_ns":2953431879,
            "account_invalid":true,
            "account_failed":false
         },
         "qdev": "/machine/unattached/device[23]"
      },
      {
         "device":"ide1-cd0",
         "stats":{
            "wr_highest_offset":0,
            "wr_bytes":0,
            "wr_operations":0,
            "rd_bytes":0,
            "rd_operations":0
            "flush_operations":0,
            "wr_total_times_ns":0
            "rd_total_times_ns":0
            "flush_total_times_ns":0,
            "rd_merged":0,
            "wr_merged":0,
            "account_invalid":false,
            "account_failed":false
         },
         "qdev": "/machine/unattached/device[24]"
      },
      {
         "device":"floppy0",
         "stats":{
            "wr_highest_offset":0,
            "wr_bytes":0,
            "wr_operations":0,
            "rd_bytes":0,
            "rd_operations":0
            "flush_operations":0,
            "wr_total_times_ns":0
            "rd_total_times_ns":0
            "flush_total_times_ns":0,
            "rd_merged":0,
            "wr_merged":0,
            "account_invalid":false,
            "account_failed":false
         },
         "qdev": "/machine/unattached/device[16]"
      },
      {
         "device":"sd0",
         "stats":{
            "wr_highest_offset":0,
            "wr_bytes":0,
            "wr_operations":0,
            "rd_bytes":0,
            "rd_operations":0
            "flush_operations":0,
            "wr_total_times_ns":0
            "rd_total_times_ns":0
            "flush_total_times_ns":0,
            "rd_merged":0,
            "wr_merged":0,
            "account_invalid":false,
            "account_failed":false
         }
      }
   ]
}
type QueryBlockstatsCommand struct {
    QueryNodes *bool `json:"query-nodes,omitempty"` // If true, the command will query all the block nodes that have a node name, in a list which will include "parent" information, but not "backing". If false or omitted, the behavior is as before - query all the device backends, recursively including their "parent" and "backing". Filter nodes that were created implicitly are skipped over in this mode. (Since 2.3)
}

type QueryChardevBackendsCommand

Returns information about character device backends.

Returns: a list of @ChardevBackendInfo

Since: 2.0

Example: -> { "execute": "query-chardev-backends" } <- {

   "return":[
      {
         "name":"udp"
      },
      {
         "name":"tcp"
      },
      {
         "name":"unix"
      },
      {
         "name":"spiceport"
      }
   ]
}
type QueryChardevBackendsCommand struct{}

type QueryChardevCommand

Returns information about current character devices.

Returns: a list of @ChardevInfo

Since: 0.14

Example: -> { "execute": "query-chardev" } <- {

   "return": [
      {
         "label": "charchannel0",
         "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.agent,server=on",
         "frontend-open": false
      },
      {
         "label": "charmonitor",
         "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.monitor,server=on",
         "frontend-open": true
      },
      {
         "label": "charserial0",
         "filename": "pty:/dev/pts/2",
         "frontend-open": true
      }
   ]
}
type QueryChardevCommand struct{}

type QueryColoStatusCommand

Query COLO status while the vm is running.

Returns: A @COLOStatus object showing the status.

Example: -> { "execute": "query-colo-status" } <- { "return": { "mode": "primary", "reason": "request" } }

Since: 3.1

type QueryColoStatusCommand struct{}

type QueryCommandLineOptionsCommand

Query command line option schema.

Returns: list of @CommandLineOptionInfo for all options (or for the given @option). Returns an error if the given @option doesn't exist.

Since: 1.5

Example: -> { "execute": "query-command-line-options",

"arguments": { "option": "option-rom" } }

<- { "return": [

     {
         "parameters": [
             {
                 "name": "romfile",
                 "type": "string"
             },
             {
                 "name": "bootindex",
                 "type": "number"
             }
         ],
         "option": "option-rom"
     }
  ]
}
type QueryCommandLineOptionsCommand struct {
    Option *string `json:"option,omitempty"` // option name
}

type QueryCommandsCommand

Return a list of supported QMP commands by this server

Returns: A list of @CommandInfo for all supported commands

Since: 0.14

Example: -> { "execute": "query-commands" } <- {

  "return":[
     {
        "name":"query-balloon"
     },
     {
        "name":"system_powerdown"
     }
  ]
}

Note: This example has been shortened as the real response is too long.

type QueryCommandsCommand struct{}

type QueryCpuDefinitionsCommand

Return a list of supported virtual CPU definitions

Returns: a list of CpuDefInfo

Since: 1.2

type QueryCpuDefinitionsCommand struct{}

type QueryCpuModelBaselineCommand

Baseline two CPU models, creating a compatible third model. The created model will always be a static, migration-safe CPU model (see "static" CPU model expansion for details).

This interface can be used by tooling to create a compatible CPU model out two CPU models. The created CPU model will be identical to or a subset of both CPU models when comparing them. Therefore, the created CPU model is guaranteed to run where the given CPU models run.

The result returned by this command may be affected by:

* QEMU version: CPU models may look different depending on the QEMU version.

(Except for CPU models reported as "static" in query-cpu-definitions.)

* machine-type: CPU model may look different depending on the machine-type.

(Except for CPU models reported as "static" in query-cpu-definitions.)

* machine options (including accelerator): in some architectures, CPU models

may look different depending on machine and accelerator options. (Except for
CPU models reported as "static" in query-cpu-definitions.)

* "-cpu" arguments and global properties: arguments to the -cpu option and

global properties may affect expansion of CPU models. Using
query-cpu-model-expansion while using these is not advised.

Some architectures may not support baselining CPU models. s390x supports baselining CPU models.

Returns: a CpuModelBaselineInfo. Returns an error if baselining CPU models is not supported, if a model cannot be used, if a model contains an unknown cpu definition name, unknown properties or properties with wrong types.

Note: this command isn't specific to s390x, but is only implemented on this architecture currently.

Since: 2.8

type QueryCpuModelBaselineCommand struct {
    Modela CpuModelInfo `json:"modela"`
    Modelb CpuModelInfo `json:"modelb"`
}

type QueryCpuModelComparisonCommand

Compares two CPU models, returning how they compare in a specific configuration. The results indicates how both models compare regarding runnability. This result can be used by tooling to make decisions if a certain CPU model will run in a certain configuration or if a compatible CPU model has to be created by baselining.

Usually, a CPU model is compared against the maximum possible CPU model of a certain configuration (e.g. the "host" model for KVM). If that CPU model is identical or a subset, it will run in that configuration.

The result returned by this command may be affected by:

* QEMU version: CPU models may look different depending on the QEMU version.

(Except for CPU models reported as "static" in query-cpu-definitions.)

* machine-type: CPU model may look different depending on the machine-type.

(Except for CPU models reported as "static" in query-cpu-definitions.)

* machine options (including accelerator): in some architectures, CPU models

may look different depending on machine and accelerator options. (Except for
CPU models reported as "static" in query-cpu-definitions.)

* "-cpu" arguments and global properties: arguments to the -cpu option and

global properties may affect expansion of CPU models. Using
query-cpu-model-expansion while using these is not advised.

Some architectures may not support comparing CPU models. s390x supports comparing CPU models.

Returns: a CpuModelBaselineInfo. Returns an error if comparing CPU models is not supported, if a model cannot be used, if a model contains an unknown cpu definition name, unknown properties or properties with wrong types.

Note: this command isn't specific to s390x, but is only implemented on this architecture currently.

Since: 2.8

type QueryCpuModelComparisonCommand struct {
    Modela CpuModelInfo `json:"modela"`
    Modelb CpuModelInfo `json:"modelb"`
}

type QueryCpuModelExpansionCommand

Expands a given CPU model (or a combination of CPU model + additional options) to different granularities, allowing tooling to get an understanding what a specific CPU model looks like in QEMU under a certain configuration.

This interface can be used to query the "host" CPU model.

The data returned by this command may be affected by:

* QEMU version: CPU models may look different depending on the QEMU version.

(Except for CPU models reported as "static" in query-cpu-definitions.)

* machine-type: CPU model may look different depending on the machine-type.

(Except for CPU models reported as "static" in query-cpu-definitions.)

* machine options (including accelerator): in some architectures, CPU models

may look different depending on machine and accelerator options. (Except for
CPU models reported as "static" in query-cpu-definitions.)

* "-cpu" arguments and global properties: arguments to the -cpu option and

global properties may affect expansion of CPU models. Using
query-cpu-model-expansion while using these is not advised.

Some architectures may not support all expansion types. s390x supports "full" and "static". Arm only supports "full".

Returns: a CpuModelExpansionInfo. Returns an error if expanding CPU models is not supported, if the model cannot be expanded, if the model contains an unknown CPU definition name, unknown properties or properties with a wrong type. Also returns an error if an expansion type is not supported.

Since: 2.8

type QueryCpuModelExpansionCommand struct {
    Type  CpuModelExpansionType `json:"type"`
    Model CpuModelInfo          `json:"model"`
}

type QueryCpusFastCommand

Returns information about all virtual CPUs.

Returns: list of @CpuInfoFast

Since: 2.12

Example: -> { "execute": "query-cpus-fast" } <- { "return": [

    {
        "thread-id": 25627,
        "props": {
            "core-id": 0,
            "thread-id": 0,
            "socket-id": 0
        },
        "qom-path": "/machine/unattached/device[0]",
        "arch":"x86",
        "target":"x86_64",
        "cpu-index": 0
    },
    {
        "thread-id": 25628,
        "props": {
            "core-id": 0,
            "thread-id": 0,
            "socket-id": 1
        },
        "qom-path": "/machine/unattached/device[2]",
        "arch":"x86",
        "target":"x86_64",
        "cpu-index": 1
    }
]

}

type QueryCpusFastCommand struct{}

type QueryCurrentMachineCommand

Return information on the current virtual machine.

Returns: CurrentMachineParams

Since: 4.0

type QueryCurrentMachineCommand struct{}

type QueryDirtyRateCommand

query dirty page rate in units of MB/s for vm

Since: 5.2

type QueryDirtyRateCommand struct{}

type QueryDisplayOptionsCommand

Returns information about display configuration

Returns: @DisplayOptions

Since: 3.1

type QueryDisplayOptionsCommand struct{}

type QueryDumpCommand

Query latest dump status.

Returns: A @DumpStatus object showing the dump status.

Since: 2.6

Example: -> { "execute": "query-dump" } <- { "return": { "status": "active", "completed": 1024000,

"total": 2048000 } }
type QueryDumpCommand struct{}

type QueryDumpGuestMemoryCapabilityCommand

Returns the available formats for dump-guest-memory

Returns: A @DumpGuestMemoryCapability object listing available formats for dump-guest-memory

Since: 2.0

Example: -> { "execute": "query-dump-guest-memory-capability" } <- { "return": { "formats":

["elf", "kdump-zlib", "kdump-lzo", "kdump-snappy"] }
type QueryDumpGuestMemoryCapabilityCommand struct{}

type QueryFdsetsCommand

Return information describing all fd sets.

Returns: A list of @FdsetInfo

Since: 1.2

Note: The list of fd sets is shared by all monitor connections.

Example: -> { "execute": "query-fdsets" } <- { "return": [

    {
      "fds": [
        {
          "fd": 30,
          "opaque": "rdonly:/path/to/file"
        },
        {
          "fd": 24,
          "opaque": "rdwr:/path/to/file"
        }
      ],
      "fdset-id": 1
    },
    {
      "fds": [
        {
          "fd": 28
        },
        {
          "fd": 29
        }
      ],
      "fdset-id": 0
    }
  ]
}
type QueryFdsetsCommand struct{}

type QueryGicCapabilitiesCommand

This command is ARM-only. It will return a list of GICCapability objects that describe its capability bits.

Returns: a list of GICCapability objects.

Since: 2.6

Example: -> { "execute": "query-gic-capabilities" } <- { "return": [{ "version": 2, "emulated": true, "kernel": false },

{ "version": 3, "emulated": false, "kernel": true } ] }
type QueryGicCapabilitiesCommand struct{}

type QueryHotpluggableCpusCommand

Returns: a list of HotpluggableCPU objects.

Since: 2.7

Example: For pseries machine type started with -smp 2,cores=2,maxcpus=4 -cpu POWER8:

-> { "execute": "query-hotpluggable-cpus" } <- {"return": [

  { "props": { "core": 8 }, "type": "POWER8-spapr-cpu-core",
    "vcpus-count": 1 },
  { "props": { "core": 0 }, "type": "POWER8-spapr-cpu-core",
    "vcpus-count": 1, "qom-path": "/machine/unattached/device[0]"}
]}'

For pc machine type started with -smp 1,maxcpus=2:

-> { "execute": "query-hotpluggable-cpus" } <- {"return": [

  {
     "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
     "props": {"core-id": 0, "socket-id": 1, "thread-id": 0}
  },
  {
     "qom-path": "/machine/unattached/device[0]",
     "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
     "props": {"core-id": 0, "socket-id": 0, "thread-id": 0}
  }
]}

For s390x-virtio-ccw machine type started with -smp 1,maxcpus=2 -cpu qemu (Since: 2.11):

-> { "execute": "query-hotpluggable-cpus" } <- {"return": [

  {
     "type": "qemu-s390x-cpu", "vcpus-count": 1,
     "props": { "core-id": 1 }
  },
  {
     "qom-path": "/machine/unattached/device[0]",
     "type": "qemu-s390x-cpu", "vcpus-count": 1,
     "props": { "core-id": 0 }
  }
]}
type QueryHotpluggableCpusCommand struct{}

type QueryIothreadsCommand

Returns a list of information about each iothread.

Note: this list excludes the QEMU main loop thread, which is not declared using the -object iothread command-line option. It is always the main thread of the process.

Returns: a list of @IOThreadInfo for each iothread

Since: 2.0

Example: -> { "execute": "query-iothreads" } <- { "return": [

      {
         "id":"iothread0",
         "thread-id":3134
      },
      {
         "id":"iothread1",
         "thread-id":3135
      }
   ]
}
type QueryIothreadsCommand struct{}

type QueryJobsCommand

Return information about jobs.

Returns: a list with a @JobInfo for each active job

Since: 3.0

type QueryJobsCommand struct{}

type QueryKvmCommand

Returns information about KVM acceleration

Returns: @KvmInfo

Since: 0.14

Example: -> { "execute": "query-kvm" } <- { "return": { "enabled": true, "present": true } }

type QueryKvmCommand struct{}

type QueryMachinesCommand

Return a list of supported machines

Returns: a list of MachineInfo

Since: 1.2

type QueryMachinesCommand struct{}

type QueryMemdevCommand

Returns information for all memory backends.

Returns: a list of @Memdev.

Since: 2.1

Example: -> { "execute": "query-memdev" } <- { "return": [

    {
      "id": "mem1",
      "size": 536870912,
      "merge": false,
      "dump": true,
      "prealloc": false,
      "host-nodes": [0, 1],
      "policy": "bind"
    },
    {
      "size": 536870912,
      "merge": false,
      "dump": true,
      "prealloc": true,
      "host-nodes": [2, 3],
      "policy": "preferred"
    }
  ]
}
type QueryMemdevCommand struct{}

type QueryMemoryDevicesCommand

Lists available memory devices and their state

Since: 2.1

Example: -> { "execute": "query-memory-devices" } <- { "return": [ { "data":

     { "addr": 5368709120,
       "hotpluggable": true,
       "hotplugged": true,
       "id": "d1",
       "memdev": "/objects/memX",
       "node": 0,
       "size": 1073741824,
       "slot": 0},
  "type": "dimm"
} ] }
type QueryMemoryDevicesCommand struct{}

type QueryMemorySizeSummaryCommand

Return the amount of initially allocated and present hotpluggable (if enabled) memory in bytes.

Example: -> { "execute": "query-memory-size-summary" } <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } }

Since: 2.11

type QueryMemorySizeSummaryCommand struct{}

type QueryMiceCommand

Returns information about each active mouse device

Returns: a list of @MouseInfo for each device

Since: 0.14

Example: -> { "execute": "query-mice" } <- { "return": [

      {
         "name":"QEMU Microsoft Mouse",
         "index":0,
         "current":false,
         "absolute":false
      },
      {
         "name":"QEMU PS/2 Mouse",
         "index":1,
         "current":true,
         "absolute":true
      }
   ]
}
type QueryMiceCommand struct{}

type QueryMigrateCapabilitiesCommand

Returns information about the current migration capabilities status

Returns: @MigrationCapabilitiesStatus

Since: 1.2

Example: -> { "execute": "query-migrate-capabilities" } <- { "return": [

   {"state": false, "capability": "xbzrle"},
   {"state": false, "capability": "rdma-pin-all"},
   {"state": false, "capability": "auto-converge"},
   {"state": false, "capability": "zero-blocks"},
   {"state": false, "capability": "compress"},
   {"state": true, "capability": "events"},
   {"state": false, "capability": "postcopy-ram"},
   {"state": false, "capability": "x-colo"}
]}
type QueryMigrateCapabilitiesCommand struct{}

type QueryMigrateCommand

Returns information about current migration process. If migration is active there will be another json-object with RAM migration status and if block migration is active another one with block migration status.

Returns: @MigrationInfo

Since: 0.14

Example: 1. Before the first migration

-> { "execute": "query-migrate" } <- { "return": {} }

2. Migration is done and has succeeded

-> { "execute": "query-migrate" } <- { "return": {

     "status": "completed",
     "total-time":12345,
     "setup-time":12345,
     "downtime":12345,
     "ram":{
       "transferred":123,
       "remaining":123,
       "total":246,
       "duplicate":123,
       "normal":123,
       "normal-bytes":123456,
       "dirty-sync-count":15
     }
  }
}

3. Migration is done and has failed

-> { "execute": "query-migrate" } <- { "return": { "status": "failed" } }

4. Migration is being performed and is not a block migration:

-> { "execute": "query-migrate" } <- {

   "return":{
      "status":"active",
      "total-time":12345,
      "setup-time":12345,
      "expected-downtime":12345,
      "ram":{
         "transferred":123,
         "remaining":123,
         "total":246,
         "duplicate":123,
         "normal":123,
         "normal-bytes":123456,
         "dirty-sync-count":15
      }
   }
}

5. Migration is being performed and is a block migration:

-> { "execute": "query-migrate" } <- {

   "return":{
      "status":"active",
      "total-time":12345,
      "setup-time":12345,
      "expected-downtime":12345,
      "ram":{
         "total":1057024,
         "remaining":1053304,
         "transferred":3720,
         "duplicate":123,
         "normal":123,
         "normal-bytes":123456,
         "dirty-sync-count":15
      },
      "disk":{
         "total":20971520,
         "remaining":20880384,
         "transferred":91136
      }
   }
}

6. Migration is being performed and XBZRLE is active:

-> { "execute": "query-migrate" } <- {

   "return":{
      "status":"active",
      "total-time":12345,
      "setup-time":12345,
      "expected-downtime":12345,
      "ram":{
         "total":1057024,
         "remaining":1053304,
         "transferred":3720,
         "duplicate":10,
         "normal":3333,
         "normal-bytes":3412992,
         "dirty-sync-count":15
      },
      "xbzrle-cache":{
         "cache-size":67108864,
         "bytes":20971520,
         "pages":2444343,
         "cache-miss":2244,
         "cache-miss-rate":0.123,
         "encoding-rate":80.1,
         "overflow":34434
      }
   }
}
type QueryMigrateCommand struct{}

type QueryMigrateParametersCommand

Returns information about the current migration parameters

Returns: @MigrationParameters

Since: 2.4

Example: -> { "execute": "query-migrate-parameters" } <- { "return": {

      "decompress-threads": 2,
      "cpu-throttle-increment": 10,
      "compress-threads": 8,
      "compress-level": 1,
      "cpu-throttle-initial": 20,
      "max-bandwidth": 33554432,
      "downtime-limit": 300
   }
}
type QueryMigrateParametersCommand struct{}

type QueryNameCommand

Return the name information of a guest.

Returns: @NameInfo of the guest

Since: 0.14

Example: -> { "execute": "query-name" } <- { "return": { "name": "qemu-name" } }

type QueryNameCommand struct{}

type QueryNamedBlockNodesCommand

Get the named block driver list

Returns: the list of BlockDeviceInfo

Since: 2.0

Example: -> { "execute": "query-named-block-nodes" } <- { "return": [ { "ro":false,

"drv":"qcow2",
"encrypted":false,
"file":"disks/test.qcow2",
"node-name": "my-node",
"backing_file_depth":1,
"bps":1000000,
"bps_rd":0,
"bps_wr":0,
"iops":1000000,
"iops_rd":0,
"iops_wr":0,
"bps_max": 8000000,
"bps_rd_max": 0,
"bps_wr_max": 0,
"iops_max": 0,
"iops_rd_max": 0,
"iops_wr_max": 0,
"iops_size": 0,
"write_threshold": 0,
"image":{
   "filename":"disks/test.qcow2",
   "format":"qcow2",
   "virtual-size":2048000,
   "backing_file":"base.qcow2",
   "full-backing-filename":"disks/base.qcow2",
   "backing-filename-format":"qcow2",
   "snapshots":[
      {
         "id": "1",
         "name": "snapshot1",
         "vm-state-size": 0,
         "date-sec": 10000200,
         "date-nsec": 12,
         "vm-clock-sec": 206,
         "vm-clock-nsec": 30
      }
   ],
   "backing-image":{
       "filename":"disks/base.qcow2",
       "format":"qcow2",
       "virtual-size":2048000
   }
} } ] }
type QueryNamedBlockNodesCommand struct {
    Flat *bool `json:"flat,omitempty"` // Omit the nested data about backing image ("backing-image" key) if true. Default is false (Since 5.0)
}

type QueryPciCommand

Return information about the PCI bus topology of the guest.

Returns: a list of @PciInfo for each PCI bus. Each bus is represented by a json-object, which has a key with a json-array of all PCI devices attached to it. Each device is represented by a json-object.

Since: 0.14

Example: -> { "execute": "query-pci" } <- { "return": [

      {
         "bus": 0,
         "devices": [
            {
               "bus": 0,
               "qdev_id": "",
               "slot": 0,
               "class_info": {
                  "class": 1536,
                  "desc": "Host bridge"
               },
               "id": {
                  "device": 32902,
                  "vendor": 4663
               },
               "function": 0,
               "regions": [
               ]
            },
            {
               "bus": 0,
               "qdev_id": "",
               "slot": 1,
               "class_info": {
                  "class": 1537,
                  "desc": "ISA bridge"
               },
               "id": {
                  "device": 32902,
                  "vendor": 28672
               },
               "function": 0,
               "regions": [
               ]
            },
            {
               "bus": 0,
               "qdev_id": "",
               "slot": 1,
               "class_info": {
                  "class": 257,
                  "desc": "IDE controller"
               },
               "id": {
                  "device": 32902,
                  "vendor": 28688
               },
               "function": 1,
               "regions": [
                  {
                     "bar": 4,
                     "size": 16,
                     "address": 49152,
                     "type": "io"
                  }
               ]
            },
            {
               "bus": 0,
               "qdev_id": "",
               "slot": 2,
               "class_info": {
                  "class": 768,
                  "desc": "VGA controller"
               },
               "id": {
                  "device": 4115,
                  "vendor": 184
               },
               "function": 0,
               "regions": [
                  {
                     "prefetch": true,
                     "mem_type_64": false,
                     "bar": 0,
                     "size": 33554432,
                     "address": 4026531840,
                     "type": "memory"
                  },
                  {
                     "prefetch": false,
                     "mem_type_64": false,
                     "bar": 1,
                     "size": 4096,
                     "address": 4060086272,
                     "type": "memory"
                  },
                  {
                     "prefetch": false,
                     "mem_type_64": false,
                     "bar": 6,
                     "size": 65536,
                     "address": -1,
                     "type": "memory"
                  }
               ]
            },
            {
               "bus": 0,
               "qdev_id": "",
               "irq": 11,
               "slot": 4,
               "class_info": {
                  "class": 1280,
                  "desc": "RAM controller"
               },
               "id": {
                  "device": 6900,
                  "vendor": 4098
               },
               "function": 0,
               "regions": [
                  {
                     "bar": 0,
                     "size": 32,
                     "address": 49280,
                     "type": "io"
                  }
               ]
            }
         ]
      }
   ]
}

Note: This example has been shortened as the real response is too long.

type QueryPciCommand struct{}

type QueryPrManagersCommand

Returns a list of information about each persistent reservation manager.

Returns: a list of @PRManagerInfo for each persistent reservation manager

Since: 3.0

type QueryPrManagersCommand struct{}

type QueryQmpSchemaCommand

Command query-qmp-schema exposes the QMP wire ABI as an array of SchemaInfo. This lets QMP clients figure out what commands and events are available in this QEMU, and their parameters and results.

However, the SchemaInfo can't reflect all the rules and restrictions that apply to QMP. It's interface introspection (figuring out what's there), not interface specification. The specification is in the QAPI schema.

Furthermore, while we strive to keep the QMP wire format backwards-compatible across qemu versions, the introspection output is not guaranteed to have the same stability. For example, one version of qemu may list an object member as an optional non-variant, while another lists the same member only through the object's variants; or the type of a member may change from a generic string into a specific enum or from one specific type into an alternate that includes the original type alongside something else.

Returns: array of @SchemaInfo, where each element describes an entity in the ABI: command, event, type, ...

The order of the various SchemaInfo is unspecified; however, all names are guaranteed to be unique (no name will be duplicated with different meta-types).

Note: the QAPI schema is also used to help define *internal* interfaces, by defining QAPI types. These are not part of the QMP wire ABI, and therefore not returned by this command.

Since: 2.5

type QueryQmpSchemaCommand struct{}

type QueryReplayCommand

Retrieve the record/replay information. It includes current instruction count which may be used for @replay-break and @replay-seek commands.

Returns: record/replay information.

Since: 5.2

Example: -> { "execute": "query-replay" } <- { "return": { "mode": "play", "filename": "log.rr", "icount": 220414 } }

type QueryReplayCommand struct{}

type QueryRockerCommand

Return rocker switch information.

Returns: @Rocker information

Since: 2.4

Example: -> { "execute": "query-rocker", "arguments": { "name": "sw1" } } <- { "return": {"name": "sw1", "ports": 2, "id": 1327446905938}}

type QueryRockerCommand struct {
    Name string `json:"name"`
}

type QueryRockerOfDpaFlowsCommand

Return rocker OF-DPA flow information.

Returns: rocker OF-DPA flow information

Since: 2.4

Example: -> { "execute": "query-rocker-of-dpa-flows",

"arguments": { "name": "sw1" } }

<- { "return": [ {"key": {"in-pport": 0, "priority": 1, "tbl-id": 0},

               "hits": 138,
               "cookie": 0,
               "action": {"goto-tbl": 10},
               "mask": {"in-pport": 4294901760}
              },
              {...more...},
]}
type QueryRockerOfDpaFlowsCommand struct {
    Name  string  `json:"name"`             // switch name
    TblId *uint32 `json:"tbl-id,omitempty"` // flow table ID. If tbl-id is not specified, returns flow information for all tables.
}

type QueryRockerOfDpaGroupsCommand

Return rocker OF-DPA group information.

Returns: rocker OF-DPA group information

Since: 2.4

Example: -> { "execute": "query-rocker-of-dpa-groups",

"arguments": { "name": "sw1" } }

<- { "return": [ {"type": 0, "out-pport": 2,

               "pport": 2, "vlan-id": 3841,
               "pop-vlan": 1, "id": 251723778},
              {"type": 0, "out-pport": 0,
               "pport": 0, "vlan-id": 3841,
               "pop-vlan": 1, "id": 251723776},
              {"type": 0, "out-pport": 1,
               "pport": 1, "vlan-id": 3840,
               "pop-vlan": 1, "id": 251658241},
              {"type": 0, "out-pport": 0,
               "pport": 0, "vlan-id": 3840,
               "pop-vlan": 1, "id": 251658240}
]}
type QueryRockerOfDpaGroupsCommand struct {
    Name string `json:"name"`           // switch name
    Type *uint8 `json:"type,omitempty"` // group type. If type is not specified, returns group information for all group types.
}

type QueryRockerPortsCommand

Return rocker switch port information.

Returns: a list of @RockerPort information

Since: 2.4

Example: -> { "execute": "query-rocker-ports", "arguments": { "name": "sw1" } } <- { "return": [ {"duplex": "full", "enabled": true, "name": "sw1.1",

               "autoneg": "off", "link-up": true, "speed": 10000},
              {"duplex": "full", "enabled": true, "name": "sw1.2",
               "autoneg": "off", "link-up": true, "speed": 10000}
]}
type QueryRockerPortsCommand struct {
    Name string `json:"name"`
}

type QueryRxFilterCommand

Return rx-filter information for all NICs (or for the given NIC).

Returns: list of @RxFilterInfo for all NICs (or for the given NIC). Returns an error if the given @name doesn't exist, or given NIC doesn't support rx-filter querying, or given net client isn't a NIC.

Since: 1.6

Example: -> { "execute": "query-rx-filter", "arguments": { "name": "vnet0" } } <- { "return": [

     {
         "promiscuous": true,
         "name": "vnet0",
         "main-mac": "52:54:00:12:34:56",
         "unicast": "normal",
         "vlan": "normal",
         "vlan-table": [
             4,
             0
         ],
         "unicast-table": [
         ],
         "multicast": "normal",
         "multicast-overflow": false,
         "unicast-overflow": false,
         "multicast-table": [
             "01:00:5e:00:00:01",
             "33:33:00:00:00:01",
             "33:33:ff:12:34:56"
         ],
         "broadcast-allowed": false
     }
   ]
}
type QueryRxFilterCommand struct {
    Name *string `json:"name,omitempty"` // net client name
}

type QuerySevAttestationReportCommand

This command is used to get the SEV attestation report, and is supported on AMD X86 platforms only.

Returns: SevAttestationReport objects.

Since: 6.1

Example: -> { "execute" : "query-sev-attestation-report",

"arguments": { "mnonce": "aaaaaaa" } }

<- { "return" : { "data": "aaaaaaaabbbddddd"} }

type QuerySevAttestationReportCommand struct {
    Mnonce string `json:"mnonce"` // a random 16 bytes value encoded in base64 (it will be included in report)
}

type QuerySevCapabilitiesCommand

This command is used to get the SEV capabilities, and is supported on AMD X86 platforms only.

Returns: SevCapability objects.

Since: 2.12

Example: -> { "execute": "query-sev-capabilities" } <- { "return": { "pdh": "8CCDD8DDD", "cert-chain": "888CCCDDDEE",

"cbitpos": 47, "reduced-phys-bits": 5}}
type QuerySevCapabilitiesCommand struct{}

type QuerySevCommand

Returns information about SEV

Returns: @SevInfo

Since: 2.12

Example: -> { "execute": "query-sev" } <- { "return": { "enabled": true, "api-major" : 0, "api-minor" : 0,

"build-id" : 0, "policy" : 0, "state" : "running",
"handle" : 1 } }
type QuerySevCommand struct{}

type QuerySevLaunchMeasureCommand

Query the SEV guest launch information.

Returns: The @SevLaunchMeasureInfo for the guest

Since: 2.12

Example: -> { "execute": "query-sev-launch-measure" } <- { "return": { "data": "4l8LXeNlSPUDlXPJG5966/8%YZ" } }

type QuerySevLaunchMeasureCommand struct{}

type QuerySgxCapabilitiesCommand

Returns information from host SGX capabilities

Returns: @SGXInfo

Since: 6.2

Example: -> { "execute": "query-sgx-capabilities" } <- { "return": { "sgx": true, "sgx1" : true, "sgx2" : true,

"flc": true, "section-size" : 96468992,
"section" : [{"node": 0, "size": 67108864},
{"node": 1, "size": 29360128}]} }
type QuerySgxCapabilitiesCommand struct{}

type QuerySgxCommand

Returns information about SGX

Returns: @SGXInfo

Since: 6.2

Example: -> { "execute": "query-sgx" } <- { "return": { "sgx": true, "sgx1" : true, "sgx2" : true,

"flc": true,  "section-size" : 96468992,
"sections": [{"node": 0, "size": 67108864},
{"node": 1, "size": 29360128}]} }
type QuerySgxCommand struct{}

type QuerySpiceCommand

Returns information about the current SPICE server

Returns: @SpiceInfo

Since: 0.14

Example: -> { "execute": "query-spice" } <- { "return": {

      "enabled": true,
      "auth": "spice",
      "port": 5920,
      "tls-port": 5921,
      "host": "0.0.0.0",
      "channels": [
         {
            "port": "54924",
            "family": "ipv4",
            "channel-type": 1,
            "connection-id": 1804289383,
            "host": "127.0.0.1",
            "channel-id": 0,
            "tls": true
         },
         {
            "port": "36710",
            "family": "ipv4",
            "channel-type": 4,
            "connection-id": 1804289383,
            "host": "127.0.0.1",
            "channel-id": 0,
            "tls": false
         },
         [ ... more channels follow ... ]
      ]
   }
}
type QuerySpiceCommand struct{}

type QueryStatusCommand

Query the run status of all VCPUs

Returns: @StatusInfo reflecting all VCPUs

Since: 0.14

Example: -> { "execute": "query-status" } <- { "return": { "running": true,

"singlestep": false,
"status": "running" } }
type QueryStatusCommand struct{}

type QueryTargetCommand

Return information about the target for this QEMU

Returns: TargetInfo

Since: 1.2

type QueryTargetCommand struct{}

type QueryTpmCommand

Return information about the TPM device

Returns: @TPMInfo on success

Since: 1.5

Example: -> { "execute": "query-tpm" } <- { "return":

  [
    { "model": "tpm-tis",
      "options":
        { "type": "passthrough",
          "data":
            { "cancel-path": "/sys/class/misc/tpm0/device/cancel",
              "path": "/dev/tpm0"
            }
        },
      "id": "tpm0"
    }
  ]
}
type QueryTpmCommand struct{}

type QueryTpmModelsCommand

Return a list of supported TPM models

Returns: a list of TpmModel

Since: 1.5

Example: -> { "execute": "query-tpm-models" } <- { "return": [ "tpm-tis", "tpm-crb", "tpm-spapr" ] }

type QueryTpmModelsCommand struct{}

type QueryTpmTypesCommand

Return a list of supported TPM types

Returns: a list of TpmType

Since: 1.5

Example: -> { "execute": "query-tpm-types" } <- { "return": [ "passthrough", "emulator" ] }

type QueryTpmTypesCommand struct{}

type QueryUuidCommand

Query the guest UUID information.

Returns: The @UuidInfo for the guest

Since: 0.14

Example: -> { "execute": "query-uuid" } <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }

type QueryUuidCommand struct{}

type QueryVersionCommand

Returns the current version of QEMU.

Returns: A @VersionInfo object describing the current version of QEMU.

Since: 0.14

Example: -> { "execute": "query-version" } <- {

   "return":{
      "qemu":{
         "major":0,
         "minor":11,
         "micro":5
      },
      "package":""
   }
}
type QueryVersionCommand struct{}

type QueryVmGenerationIdCommand

Show Virtual Machine Generation ID

Since: 2.9

type QueryVmGenerationIdCommand struct{}

type QueryVncCommand

Returns information about the current VNC server

Returns: @VncInfo

Since: 0.14

Example: -> { "execute": "query-vnc" } <- { "return": {

      "enabled":true,
      "host":"0.0.0.0",
      "service":"50402",
      "auth":"vnc",
      "family":"ipv4",
      "clients":[
         {
            "host":"127.0.0.1",
            "service":"50401",
            "family":"ipv4"
         }
      ]
   }
}
type QueryVncCommand struct{}

type QueryVncServersCommand

Returns a list of vnc servers. The list can be empty.

Returns: a list of @VncInfo2

Since: 2.3

type QueryVncServersCommand struct{}

type QueryXenReplicationStatusCommand

Query replication status while the vm is running.

Returns: A @ReplicationResult object showing the status.

Example: -> { "execute": "query-xen-replication-status" } <- { "return": { "error": false } }

Since: 2.9

type QueryXenReplicationStatusCommand struct{}

type QueryYankCommand

Query yank instances. See @YankInstance for more information.

Returns: list of @YankInstance

Example: -> { "execute": "query-yank" } <- { "return": [

    { "type": "block-node",
      "node-name": "nbd0" }
] }

Since: 6.0

type QueryYankCommand struct{}

type QuitCommand

This command will cause the QEMU process to exit gracefully. While every attempt is made to send the QMP response before terminating, this is not guaranteed. When using this interface, a premature EOF would not be unexpected.

Since: 0.14

Example: -> { "execute": "quit" } <- { "return": {} }

type QuitCommand struct{}

type QuorumFailureEvent

Emitted by the Quorum block driver if it fails to establish a quorum

Note: This event is rate-limited.

Since: 2.0

Example: <- { "event": "QUORUM_FAILURE",

"data": { "reference": "usr1", "sector-num": 345435, "sectors-count": 5 },
"timestamp": { "seconds": 1344522075, "microseconds": 745528 } }
type QuorumFailureEvent struct {
    Reference    string `json:"reference"`     // device name if defined else node name
    SectorNum    int64  `json:"sector-num"`    // number of the first sector of the failed read operation
    SectorsCount int64  `json:"sectors-count"` // failed read operation sector count
}

type QuorumOpType

An enumeration of the quorum operation types

Since: 2.6

type QuorumOpType int32
const (
    QuorumOpTypeRead  QuorumOpType = iota
    QuorumOpTypeWrite              // write operation
    QuorumOpTypeFlush              // flush operation
)

func (QuorumOpType) MarshalJSON

func (s QuorumOpType) MarshalJSON() ([]byte, error)

func (*QuorumOpType) UnmarshalJSON

func (s *QuorumOpType) UnmarshalJSON(data []byte) error

type QuorumReadPattern

An enumeration of quorum read patterns.

Since: 2.9

type QuorumReadPattern int32
const (
    QuorumReadPatternQuorum QuorumReadPattern = iota
    QuorumReadPatternFifo                     // read only from the first child that has not failed
)

func (QuorumReadPattern) MarshalJSON

func (s QuorumReadPattern) MarshalJSON() ([]byte, error)

func (*QuorumReadPattern) UnmarshalJSON

func (s *QuorumReadPattern) UnmarshalJSON(data []byte) error

type QuorumReportBadEvent

Emitted to report a corruption of a Quorum file

Note: This event is rate-limited.

Since: 2.0

Example: 1. Read operation

{ "event": "QUORUM_REPORT_BAD",

"data": { "node-name": "node0", "sector-num": 345435, "sectors-count": 5,
          "type": "read" },
"timestamp": { "seconds": 1344522075, "microseconds": 745528 } }

2. Flush operation

{ "event": "QUORUM_REPORT_BAD",

"data": { "node-name": "node0", "sector-num": 0, "sectors-count": 2097120,
          "type": "flush", "error": "Broken pipe" },
"timestamp": { "seconds": 1456406829, "microseconds": 291763 } }
type QuorumReportBadEvent struct {
    Type         QuorumOpType `json:"type"`            // quorum operation type (Since 2.6)
    Error        *string      `json:"error,omitempty"` // error message. Only present on failure. This field contains a human-readable error message. There are no semantics other than that the block layer reported an error and clients should not try to interpret the error string.
    NodeName     string       `json:"node-name"`       // the graph node name of the block driver state
    SectorNum    int64        `json:"sector-num"`      // number of the first sector of the failed read operation
    SectorsCount int64        `json:"sectors-count"`   // failed read operation sector count
}

type RbdAuthMode

Since: 3.0

type RbdAuthMode int32
const (
    RbdAuthModeCephx RbdAuthMode = iota
    RbdAuthModeNone
)

func (RbdAuthMode) MarshalJSON

func (s RbdAuthMode) MarshalJSON() ([]byte, error)

func (*RbdAuthMode) UnmarshalJSON

func (s *RbdAuthMode) UnmarshalJSON(data []byte) error

type RbdEncryptionCreateOptions

Since: 6.1

type RbdEncryptionCreateOptions struct {
    // Base type for this struct
    RbdEncryptionCreateOptionsBase
    // Value based on @format, possible types:
    // * RbdEncryptionCreateOptionsLUKS
    // * RbdEncryptionCreateOptionsLUKS2
    Value Any
}

func (RbdEncryptionCreateOptions) MarshalJSON

func (s RbdEncryptionCreateOptions) MarshalJSON() ([]byte, error)

func (*RbdEncryptionCreateOptions) UnmarshalJSON

func (s *RbdEncryptionCreateOptions) UnmarshalJSON(data []byte) error

type RbdEncryptionCreateOptionsBase

Since: 6.1

type RbdEncryptionCreateOptionsBase struct {
    Format RbdImageEncryptionFormat `json:"format"`
}

type RbdEncryptionCreateOptionsLUKS

Since: 6.1

type RbdEncryptionCreateOptionsLUKS struct {
    // Base type for this struct
    RbdEncryptionCreateOptionsLUKSBase
}

type RbdEncryptionCreateOptionsLUKS2

Since: 6.1

type RbdEncryptionCreateOptionsLUKS2 struct {
    // Base type for this struct
    RbdEncryptionCreateOptionsLUKSBase
}

type RbdEncryptionCreateOptionsLUKSBase

Since: 6.1

type RbdEncryptionCreateOptionsLUKSBase struct {
    // Base type for this struct
    RbdEncryptionOptionsLUKSBase
    CipherAlg *QCryptoCipherAlgorithm `json:"cipher-alg,omitempty"` // The encryption algorithm
}

type RbdEncryptionOptions

Since: 6.1

type RbdEncryptionOptions struct {
    // Base type for this struct
    RbdEncryptionOptionsBase
    // Value based on @format, possible types:
    // * RbdEncryptionOptionsLUKS
    // * RbdEncryptionOptionsLUKS2
    Value Any
}

func (RbdEncryptionOptions) MarshalJSON

func (s RbdEncryptionOptions) MarshalJSON() ([]byte, error)

func (*RbdEncryptionOptions) UnmarshalJSON

func (s *RbdEncryptionOptions) UnmarshalJSON(data []byte) error

type RbdEncryptionOptionsBase

Since: 6.1

type RbdEncryptionOptionsBase struct {
    Format RbdImageEncryptionFormat `json:"format"`
}

type RbdEncryptionOptionsLUKS

Since: 6.1

type RbdEncryptionOptionsLUKS struct {
    // Base type for this struct
    RbdEncryptionOptionsLUKSBase
}

type RbdEncryptionOptionsLUKS2

Since: 6.1

type RbdEncryptionOptionsLUKS2 struct {
    // Base type for this struct
    RbdEncryptionOptionsLUKSBase
}

type RbdEncryptionOptionsLUKSBase

Since: 6.1

type RbdEncryptionOptionsLUKSBase struct {
    KeySecret string `json:"key-secret"` // ID of a QCryptoSecret object providing a passphrase for unlocking the encryption
}

type RbdImageEncryptionFormat

Since: 6.1

type RbdImageEncryptionFormat int32
const (
    RbdImageEncryptionFormatLuks RbdImageEncryptionFormat = iota
    RbdImageEncryptionFormatLuks2
)

func (RbdImageEncryptionFormat) MarshalJSON

func (s RbdImageEncryptionFormat) MarshalJSON() ([]byte, error)

func (*RbdImageEncryptionFormat) UnmarshalJSON

func (s *RbdImageEncryptionFormat) UnmarshalJSON(data []byte) error

type RdmaGidStatusChangedEvent

Emitted when guest driver adds/deletes GID to/from device

None: @interface-id : Interface ID

Since: 4.0

Example: <- {"timestamp": {"seconds": 1541579657, "microseconds": 986760},

"event": "RDMA_GID_STATUS_CHANGED",
"data":
    {"netdev": "bridge0",
    "interface-id": 15880512517475447892,
    "gid-status": true,
    "subnet-prefix": 33022}}
type RdmaGidStatusChangedEvent struct {
    Netdev       string `json:"netdev"`        // RoCE Network Device name
    GidStatus    bool   `json:"gid-status"`    // Add or delete indication
    SubnetPrefix uint64 `json:"subnet-prefix"` // Subnet Prefix
    InterfaceId  uint64 `json:"interface-id"`
}

type RebootAction

Possible QEMU actions upon guest reboot

Since: 6.0

type RebootAction int32
const (
    RebootActionReset    RebootAction = iota
    RebootActionShutdown              // Shutdown the VM and exit, according to the shutdown action
)

func (RebootAction) MarshalJSON

func (s RebootAction) MarshalJSON() ([]byte, error)

func (*RebootAction) UnmarshalJSON

func (s *RebootAction) UnmarshalJSON(data []byte) error

type RemoteObjectProperties

Properties for x-remote-object objects.

Since: 6.0

type RemoteObjectProperties struct {
    Fd    string `json:"fd"`    // file descriptor name previously passed via 'getfd' command
    Devid string `json:"devid"` // the id of the device to be associated with the file descriptor
}

type RemoveFdCommand

Remove a file descriptor from an fd set.

Returns: - Nothing on success - If @fdset-id or @fd is not found, FdNotFound

Since: 1.2

Notes: The list of fd sets is shared by all monitor connections.

If @fd is not specified, all file descriptors in @fdset-id will be removed.

Example: -> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } } <- { "return": {} }

type RemoveFdCommand struct {
    FdsetId int64  `json:"fdset-id"`     // The ID of the fd set that the file descriptor belongs to.
    Fd      *int64 `json:"fd,omitempty"` // The file descriptor that is to be removed.
}

type ReplayBreakCommand

Set replay breakpoint at instruction count @icount. Execution stops when the specified instruction is reached. There can be at most one breakpoint. When breakpoint is set, any prior one is removed. The breakpoint may be set only in replay mode and only "in the future", i.e. at instruction counts greater than the current one. The current instruction count can be observed with @query-replay.

Since: 5.2

Example: -> { "execute": "replay-break", "data": { "icount": 220414 } }

type ReplayBreakCommand struct {
    Icount int64 `json:"icount"` // instruction count to stop at
}

type ReplayDeleteBreakCommand

Remove replay breakpoint which was set with @replay-break. The command is ignored when there are no replay breakpoints.

Since: 5.2

Example: -> { "execute": "replay-delete-break" }

type ReplayDeleteBreakCommand struct{}

type ReplayInfo

Record/replay information.

Since: 5.2

type ReplayInfo struct {
    Mode     ReplayMode `json:"mode"`               // current mode.
    Filename *string    `json:"filename,omitempty"` // name of the record/replay log file. It is present only in record or replay modes, when the log is recorded or replayed.
    Icount   int64      `json:"icount"`             // current number of executed instructions.
}

type ReplayMode

Mode of the replay subsystem.

Since: 2.5

type ReplayMode int32
const (
    ReplayModeNone   ReplayMode = iota
    ReplayModeRecord            // record mode. All non-deterministic data is written into the replay log.
    ReplayModePlay              // replay mode. Non-deterministic data required for system execution is read from the log.
)

func (ReplayMode) MarshalJSON

func (s ReplayMode) MarshalJSON() ([]byte, error)

func (*ReplayMode) UnmarshalJSON

func (s *ReplayMode) UnmarshalJSON(data []byte) error

type ReplaySeekCommand

Automatically proceed to the instruction count @icount, when replaying the execution. The command automatically loads nearest snapshot and replays the execution to find the desired instruction. When there is no preceding snapshot or the execution is not replayed, then the command fails. icount for the reference may be obtained with @query-replay command.

Since: 5.2

Example: -> { "execute": "replay-seek", "data": { "icount": 220414 } }

type ReplaySeekCommand struct {
    Icount int64 `json:"icount"` // target instruction count
}

type ReplicationMode

An enumeration of replication modes.

Since: 2.9

type ReplicationMode int32
const (
    ReplicationModePrimary   ReplicationMode = iota
    ReplicationModeSecondary                 // Secondary mode, receive the vm's state from primary QEMU.
)

func (ReplicationMode) MarshalJSON

func (s ReplicationMode) MarshalJSON() ([]byte, error)

func (*ReplicationMode) UnmarshalJSON

func (s *ReplicationMode) UnmarshalJSON(data []byte) error

type ReplicationStatus

The result format for 'query-xen-replication-status'.

Since: 2.9

type ReplicationStatus struct {
    Error bool    `json:"error"`          // true if an error happened, false if replication is normal.
    Desc  *string `json:"desc,omitempty"` // the human readable error description string, when @error is 'true'.
}

type ResetEvent

Emitted when the virtual machine is reset

Since: 0.12

Example: <- { "event": "RESET", "data": { "guest": false },

"timestamp": { "seconds": 1267041653, "microseconds": 9518 } }
type ResetEvent struct {
    Guest  bool          `json:"guest"`  // If true, the reset was triggered by a guest request (such as a guest-initiated ACPI reboot request or other hardware-specific action) rather than a host request (such as the QMP command system_reset). (since 2.10)
    Reason ShutdownCause `json:"reason"` // The @ShutdownCause of the RESET. (since 4.0)
}

type ResumeEvent

Emitted when the virtual machine resumes execution

Since: 0.12

Example: <- { "event": "RESUME",

"timestamp": { "seconds": 1271770767, "microseconds": 582542 } }
type ResumeEvent struct{}

type RingbufReadCommand

Read from a ring buffer character device.

Returns: data read from the device

Since: 1.4

Example: -> { "execute": "ringbuf-read",

"arguments": { "device": "foo",
               "size": 1000,
               "format": "utf8" } }

<- { "return": "abcdefgh" }

type RingbufReadCommand struct {
    Device string      `json:"device"`           // the ring buffer character device name
    Size   int64       `json:"size"`             // how many bytes to read at most
    Format *DataFormat `json:"format,omitempty"` // data encoding (default 'utf8'). - base64: the data read is returned in base64 encoding. - utf8: the data read is interpreted as UTF-8. Bug: can screw up when the buffer contains invalid UTF-8 sequences, NUL characters, after the ring buffer lost data, and when reading stops because the size limit is reached. - The return value is always Unicode regardless of format, like any other string.
}

type RingbufWriteCommand

Write to a ring buffer character device.

Returns: Nothing on success

Since: 1.4

Example: -> { "execute": "ringbuf-write",

"arguments": { "device": "foo",
               "data": "abcdefgh",
               "format": "utf8" } }

<- { "return": {} }

type RingbufWriteCommand struct {
    Device string      `json:"device"`           // the ring buffer character device name
    Data   string      `json:"data"`             // data to write
    Format *DataFormat `json:"format,omitempty"` // data encoding (default 'utf8'). - base64: data must be base64 encoded text. Its binary decoding gets written. - utf8: data's UTF-8 encoding is written - data itself is always Unicode regardless of format, like any other string.
}

type RngEgdProperties

Properties for rng-egd objects.

Since: 1.3

type RngEgdProperties struct {
    // Base type for this struct
    RngProperties
    Chardev string `json:"chardev"` // the name of a character device backend that provides the connection to the RNG daemon
}

type RngProperties

Properties for objects of classes derived from rng.

Since: 1.3

type RngProperties struct {
    Opened *bool `json:"opened,omitempty"` // if true, the device is opened immediately when applying this option and will probably fail when processing the next option. Don't use; only provided for compatibility. (default: false)
}

type RngRandomProperties

Properties for rng-random objects.

Since: 1.3

type RngRandomProperties struct {
    // Base type for this struct
    RngProperties
    Filename *string `json:"filename,omitempty"` // the filename of the device on the host to obtain entropy from (default: "/dev/urandom")
}

type RockerOfDpaFlow

Rocker switch OF-DPA flow

Since: 2.4

type RockerOfDpaFlow struct {
    Cookie uint64                `json:"cookie"` // flow unique cookie ID
    Hits   uint64                `json:"hits"`   // count of matches (hits) on flow
    Key    RockerOfDpaFlowKey    `json:"key"`    // flow key
    Mask   RockerOfDpaFlowMask   `json:"mask"`   // flow mask
    Action RockerOfDpaFlowAction `json:"action"` // flow action
}

type RockerOfDpaFlowAction

Rocker switch OF-DPA flow action

Note: optional members may or may not appear in the flow action depending if they're relevant to the flow action.

Since: 2.4

type RockerOfDpaFlowAction struct {
    GotoTbl     *uint32 `json:"goto-tbl,omitempty"`     // next table ID
    GroupId     *uint32 `json:"group-id,omitempty"`     // group ID
    TunnelLport *uint32 `json:"tunnel-lport,omitempty"` // tunnel logical port ID
    VlanId      *uint16 `json:"vlan-id,omitempty"`      // VLAN ID
    NewVlanId   *uint16 `json:"new-vlan-id,omitempty"`  // new VLAN ID
    OutPport    *uint32 `json:"out-pport,omitempty"`    // physical output port
}

type RockerOfDpaFlowKey

Rocker switch OF-DPA flow key

Note: optional members may or may not appear in the flow key depending if they're relevant to the flow key.

Since: 2.4

type RockerOfDpaFlowKey struct {
    Priority uint32  `json:"priority"`            // key priority, 0 being lowest priority
    TblId    uint32  `json:"tbl-id"`              // flow table ID
    InPport  *uint32 `json:"in-pport,omitempty"`  // physical input port
    TunnelId *uint32 `json:"tunnel-id,omitempty"` // tunnel ID
    VlanId   *uint16 `json:"vlan-id,omitempty"`   // VLAN ID
    EthType  *uint16 `json:"eth-type,omitempty"`  // Ethernet header type
    EthSrc   *string `json:"eth-src,omitempty"`   // Ethernet header source MAC address
    EthDst   *string `json:"eth-dst,omitempty"`   // Ethernet header destination MAC address
    IpProto  *uint8  `json:"ip-proto,omitempty"`  // IP Header protocol field
    IpTos    *uint8  `json:"ip-tos,omitempty"`    // IP header TOS field
    IpDst    *string `json:"ip-dst,omitempty"`    // IP header destination address
}

type RockerOfDpaFlowMask

Rocker switch OF-DPA flow mask

Note: optional members may or may not appear in the flow mask depending if they're relevant to the flow mask.

Since: 2.4

type RockerOfDpaFlowMask struct {
    InPport  *uint32 `json:"in-pport,omitempty"`  // physical input port
    TunnelId *uint32 `json:"tunnel-id,omitempty"` // tunnel ID
    VlanId   *uint16 `json:"vlan-id,omitempty"`   // VLAN ID
    EthSrc   *string `json:"eth-src,omitempty"`   // Ethernet header source MAC address
    EthDst   *string `json:"eth-dst,omitempty"`   // Ethernet header destination MAC address
    IpProto  *uint8  `json:"ip-proto,omitempty"`  // IP Header protocol field
    IpTos    *uint8  `json:"ip-tos,omitempty"`    // IP header TOS field
}

type RockerOfDpaGroup

Rocker switch OF-DPA group

Note: optional members may or may not appear in the group depending if they're relevant to the group type.

Since: 2.4

type RockerOfDpaGroup struct {
    Id        uint32   `json:"id"`                    // group unique ID
    Type      uint8    `json:"type"`                  // group type
    VlanId    *uint16  `json:"vlan-id,omitempty"`     // VLAN ID
    Pport     *uint32  `json:"pport,omitempty"`       // physical port number
    Index     *uint32  `json:"index,omitempty"`       // group index, unique with group type
    OutPport  *uint32  `json:"out-pport,omitempty"`   // output physical port number
    GroupId   *uint32  `json:"group-id,omitempty"`    // next group ID
    SetVlanId *uint16  `json:"set-vlan-id,omitempty"` // VLAN ID to set
    PopVlan   *uint8   `json:"pop-vlan,omitempty"`    // pop VLAN headr from packet
    GroupIds  []uint32 `json:"group-ids,omitempty"`   // list of next group IDs
    SetEthSrc *string  `json:"set-eth-src,omitempty"` // set source MAC address in Ethernet header
    SetEthDst *string  `json:"set-eth-dst,omitempty"` // set destination MAC address in Ethernet header
    TtlCheck  *uint8   `json:"ttl-check,omitempty"`   // perform TTL check
}

type RockerPort

Rocker switch port information.

Since: 2.4

type RockerPort struct {
    Name    string            `json:"name"`    // port name
    Enabled bool              `json:"enabled"` // port is enabled for I/O
    LinkUp  bool              `json:"link-up"` // physical link is UP on port
    Speed   uint32            `json:"speed"`   // port link speed in Mbps
    Duplex  RockerPortDuplex  `json:"duplex"`  // port link duplex
    Autoneg RockerPortAutoneg `json:"autoneg"` // port link autoneg
}

type RockerPortAutoneg

An eumeration of port autoneg states.

Since: 2.4

type RockerPortAutoneg int32
const (
    RockerPortAutonegOff RockerPortAutoneg = iota
    RockerPortAutonegOn                    // autoneg is on
)

func (RockerPortAutoneg) MarshalJSON

func (s RockerPortAutoneg) MarshalJSON() ([]byte, error)

func (*RockerPortAutoneg) UnmarshalJSON

func (s *RockerPortAutoneg) UnmarshalJSON(data []byte) error

type RockerPortDuplex

An eumeration of port duplex states.

Since: 2.4

type RockerPortDuplex int32
const (
    RockerPortDuplexHalf RockerPortDuplex = iota
    RockerPortDuplexFull                  // full duplex
)

func (RockerPortDuplex) MarshalJSON

func (s RockerPortDuplex) MarshalJSON() ([]byte, error)

func (*RockerPortDuplex) UnmarshalJSON

func (s *RockerPortDuplex) UnmarshalJSON(data []byte) error

type RockerSwitch

Rocker switch information.

Since: 2.4

type RockerSwitch struct {
    Name  string `json:"name"`  // switch name
    Id    uint64 `json:"id"`    // switch ID
    Ports uint32 `json:"ports"` // number of front-panel ports
}

type RtcChangeEvent

Emitted when the guest changes the RTC time.

Note: This event is rate-limited. It is not guaranteed that the RTC in the system implements this event, or even that the system has an RTC at all.

Since: 0.13

Example: <- { "event": "RTC_CHANGE",

"data": { "offset": 78 },
"timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
type RtcChangeEvent struct {
    Offset  int64  `json:"offset"`   // offset in seconds between base RTC clock (as specified by -rtc base), and new RTC clock value
    QomPath string `json:"qom-path"` // path to the RTC object in the QOM tree
}

type RtcResetReinjectionCommand

This command will reset the RTC interrupt reinjection backlog. Can be used if another mechanism to synchronize guest time is in effect, for example QEMU guest agent's guest-set-time command.

Since: 2.1

Example: -> { "execute": "rtc-reset-reinjection" } <- { "return": {} }

type RtcResetReinjectionCommand struct{}

type RunState

An enumeration of VM run states.

type RunState int32
const (
    RunStateDebug         RunState = iota
    RunStateInmigrate              // guest is paused waiting for an incoming migration. Note that this state does not tell whether the machine will start at the end of the migration. This depends on the command-line -S option and any invocation of 'stop' or 'cont' that has happened since QEMU was started.
    RunStateInternalError          // An internal error that prevents further guest execution has occurred
    RunStateIoError                // the last IOP has failed and the device is configured to pause on I/O errors
    RunStatePaused                 // guest has been paused via the 'stop' command
    RunStatePostmigrate            // guest is paused following a successful 'migrate'
    RunStatePrelaunch              // QEMU was started with -S and guest has not started
    RunStateFinishMigrate          // guest is paused to finish the migration process
    RunStateRestoreVm              // guest is paused to restore VM state
    RunStateRunning                // guest is actively running
    RunStateSaveVm                 // guest is paused to save the VM state
    RunStateShutdown               // guest is shut down (and -no-shutdown is in use)
    RunStateSuspended              // guest is suspended (ACPI S3)
    RunStateWatchdog               // the watchdog action is configured to pause and has been triggered
    RunStateGuestPanicked          // guest has been panicked as a result of guest OS panic
    RunStateColo                   // guest is paused to save/restore VM state under colo checkpoint, VM can not get into this state unless colo capability is enabled for migration. (since 2.8)
)

func (RunState) MarshalJSON

func (s RunState) MarshalJSON() ([]byte, error)

func (*RunState) UnmarshalJSON

func (s *RunState) UnmarshalJSON(data []byte) error

type RxFilterInfo

Rx-filter information for a NIC.

Since: 1.6

type RxFilterInfo struct {
    Name              string   `json:"name"`               // net client name
    Promiscuous       bool     `json:"promiscuous"`        // whether promiscuous mode is enabled
    Multicast         RxState  `json:"multicast"`          // multicast receive state
    Unicast           RxState  `json:"unicast"`            // unicast receive state
    Vlan              RxState  `json:"vlan"`               // vlan receive state (Since 2.0)
    BroadcastAllowed  bool     `json:"broadcast-allowed"`  // whether to receive broadcast
    MulticastOverflow bool     `json:"multicast-overflow"` // multicast table is overflowed or not
    UnicastOverflow   bool     `json:"unicast-overflow"`   // unicast table is overflowed or not
    MainMac           string   `json:"main-mac"`           // the main macaddr string
    VlanTable         []int64  `json:"vlan-table"`         // a list of active vlan id
    UnicastTable      []string `json:"unicast-table"`      // a list of unicast macaddr string
    MulticastTable    []string `json:"multicast-table"`    // a list of multicast macaddr string
}

type RxState

Packets receiving state

Since: 1.6

type RxState int32
const (
    RxStateNormal RxState = iota
    RxStateNone           // don't receive any assigned packet
    RxStateAll            // receive all assigned packets
)

func (RxState) MarshalJSON

func (s RxState) MarshalJSON() ([]byte, error)

func (*RxState) UnmarshalJSON

func (s *RxState) UnmarshalJSON(data []byte) error

type S390CrashReason

Reason why the CPU is in a crashed state.

Since: 2.12

type S390CrashReason int32
const (
    S390CrashReasonUnknown      S390CrashReason = iota
    S390CrashReasonDisabledWait                 // the CPU has entered a disabled wait state
    S390CrashReasonExtintLoop                   // clock comparator or cpu timer interrupt with new PSW enabled for external interrupts
    S390CrashReasonPgmintLoop                   // program interrupt with BAD new PSW
    S390CrashReasonOpintLoop                    // operation exception interrupt with invalid code at the program interrupt new PSW
)

func (S390CrashReason) MarshalJSON

func (s S390CrashReason) MarshalJSON() ([]byte, error)

func (*S390CrashReason) UnmarshalJSON

func (s *S390CrashReason) UnmarshalJSON(data []byte) error

type SGXEPCSection

Information about intel SGX EPC section info

Since: 7.0

type SGXEPCSection struct {
    Node int64  `json:"node"` // the numa node
    Size uint64 `json:"size"` // the size of EPC section
}

type SGXInfo

Information about intel Safe Guard eXtension (SGX) support

Since: 6.2

type SGXInfo struct {
    Sgx         bool            `json:"sgx"`          // true if SGX is supported
    Sgx1        bool            `json:"sgx1"`         // true if SGX1 is supported
    Sgx2        bool            `json:"sgx2"`         // true if SGX2 is supported
    Flc         bool            `json:"flc"`          // true if FLC is supported
    SectionSize uint64          `json:"section-size"` // The EPC section size for guest Redundant with @sections. Just for backward compatibility.
    Sections    []SGXEPCSection `json:"sections"`     // The EPC sections info for guest (Since: 7.0)
}

type SMPConfiguration

Schema for CPU topology configuration. A missing value lets QEMU figure out a suitable value based on the ones that are provided.

Since: 6.1

type SMPConfiguration struct {
    Cpus     *int64 `json:"cpus,omitempty"`     // number of virtual CPUs in the virtual machine
    Sockets  *int64 `json:"sockets,omitempty"`  // number of sockets in the CPU topology
    Dies     *int64 `json:"dies,omitempty"`     // number of dies per socket in the CPU topology
    Clusters *int64 `json:"clusters,omitempty"` // number of clusters per die in the CPU topology (since 7.0)
    Cores    *int64 `json:"cores,omitempty"`    // number of cores per cluster in the CPU topology
    Threads  *int64 `json:"threads,omitempty"`  // number of threads per core in the CPU topology
    Maxcpus  *int64 `json:"maxcpus,omitempty"`  // maximum number of hotpluggable virtual CPUs in the virtual machine
}

type SchemaInfo

None: Additional members depend on the value of @meta-type.

Since: 2.5

type SchemaInfo struct {
    // Base type for this struct
    SchemaInfoBase
    // Value based on @meta-type, possible types:
    // * SchemaInfoBuiltin
    // * SchemaInfoEnum
    // * SchemaInfoArray
    // * SchemaInfoObject
    // * SchemaInfoAlternate
    // * SchemaInfoCommand
    // * SchemaInfoEvent
    Value Any
}

func (SchemaInfo) MarshalJSON

func (s SchemaInfo) MarshalJSON() ([]byte, error)

func (*SchemaInfo) UnmarshalJSON

func (s *SchemaInfo) UnmarshalJSON(data []byte) error

type SchemaInfoAlternate

Additional SchemaInfo members for meta-type 'alternate'.

None: On the wire, this can be any of the members.

Since: 2.5

type SchemaInfoAlternate struct {
    Members []SchemaInfoAlternateMember `json:"members"` // the alternate type's members, in no particular order. The members' wire encoding is distinct, see docs/devel/qapi-code-gen.txt section Alternate types.
}

type SchemaInfoAlternateMember

An alternate member.

Since: 2.5

type SchemaInfoAlternateMember struct {
    Type string `json:"type"` // the name of the member's type.
}

type SchemaInfoArray

Additional SchemaInfo members for meta-type 'array'.

None: Values of this type are JSON array on the wire.

Since: 2.5

type SchemaInfoArray struct {
    ElementType string `json:"element-type"` // the array type's element type.
}

type SchemaInfoBase

None: Additional members depend on the value of @meta-type.

Since: 2.5

type SchemaInfoBase struct {
    Name     string         `json:"name"`               // the entity's name, inherited from @base. The SchemaInfo is always referenced by this name. Commands and events have the name defined in the QAPI schema. Unlike command and event names, type names are not part of the wire ABI. Consequently, type names are meaningless strings here, although they are still guaranteed unique regardless of @meta-type.
    MetaType SchemaMetaType `json:"meta-type"`          // the entity's meta type, inherited from @base.
    Features []string       `json:"features,omitempty"` // names of features associated with the entity, in no particular order. (since 4.1 for object types, 4.2 for commands, 5.0 for the rest)
}

type SchemaInfoBuiltin

Additional SchemaInfo members for meta-type 'builtin'.

Since: 2.5

type SchemaInfoBuiltin struct {
    JsonType JSONType `json:"json-type"` // the JSON type used for this type on the wire.
}

type SchemaInfoCommand

Additional SchemaInfo members for meta-type 'command'.

Since: 2.5

type SchemaInfoCommand struct {
    ArgType  string `json:"arg-type"`            // the name of the object type that provides the command's parameters.
    RetType  string `json:"ret-type"`            // the name of the command's result type.
    AllowOob *bool  `json:"allow-oob,omitempty"` // whether the command allows out-of-band execution, defaults to false (Since: 2.12)
}

type SchemaInfoEnum

Additional SchemaInfo members for meta-type 'enum'.

None: Values of this type are JSON string on the wire.

Since: 2.5

type SchemaInfoEnum struct {
    Members []SchemaInfoEnumMember `json:"members"` // the enum type's members, in no particular order (since 6.2).
    Values  []string               `json:"values"`  // the enumeration type's member names, in no particular order. Redundant with @members. Just for backward compatibility.
}

type SchemaInfoEnumMember

An object member.

Since: 6.2

type SchemaInfoEnumMember struct {
    Name     string   `json:"name"`               // the member's name, as defined in the QAPI schema.
    Features []string `json:"features,omitempty"` // names of features associated with the member, in no particular order.
}

type SchemaInfoEvent

Additional SchemaInfo members for meta-type 'event'.

Since: 2.5

type SchemaInfoEvent struct {
    ArgType string `json:"arg-type"` // the name of the object type that provides the event's parameters.
}

type SchemaInfoObject

Additional SchemaInfo members for meta-type 'object'.

None: Values of this type are JSON object on the wire.

Since: 2.5

type SchemaInfoObject struct {
    Members  []SchemaInfoObjectMember  `json:"members"`            // the object type's (non-variant) members, in no particular order.
    Tag      *string                   `json:"tag,omitempty"`      // the name of the member serving as type tag. An element of @members with this name must exist.
    Variants []SchemaInfoObjectVariant `json:"variants,omitempty"` // variant members, i.e. additional members that depend on the type tag's value. Present exactly when @tag is present. The variants are in no particular order, and may even differ from the order of the values of the enum type of the @tag.
}

type SchemaInfoObjectMember

An object member.

Since: 2.5

type SchemaInfoObjectMember struct {
    Name     string   `json:"name"`               // the member's name, as defined in the QAPI schema.
    Type     string   `json:"type"`               // the name of the member's type.
    Default  *Any     `json:"default,omitempty"`  // default when used as command parameter. If absent, the parameter is mandatory. If present, the value must be null. The parameter is optional, and behavior when it's missing is not specified here. Future extension: if present and non-null, the parameter is optional, and defaults to this value.
    Features []string `json:"features,omitempty"` // names of features associated with the member, in no particular order. (since 5.0)
}

type SchemaInfoObjectVariant

The variant members for a value of the type tag.

Since: 2.5

type SchemaInfoObjectVariant struct {
    Case string `json:"case"` // a value of the type tag.
    Type string `json:"type"` // the name of the object type that provides the variant members when the type tag has value @case.
}

type SchemaMetaType

This is a @SchemaInfo's meta type, i.e. the kind of entity it describes.

Since: 2.5

type SchemaMetaType int32
const (
    SchemaMetaTypeBuiltin   SchemaMetaType = iota
    SchemaMetaTypeEnum                     // an enumeration type
    SchemaMetaTypeArray                    // an array type
    SchemaMetaTypeObject                   // an object type (struct or union)
    SchemaMetaTypeAlternate                // an alternate type
    SchemaMetaTypeCommand                  // a QMP command
    SchemaMetaTypeEvent                    // a QMP event
)

func (SchemaMetaType) MarshalJSON

func (s SchemaMetaType) MarshalJSON() ([]byte, error)

func (*SchemaMetaType) UnmarshalJSON

func (s *SchemaMetaType) UnmarshalJSON(data []byte) error

type ScreendumpCommand

Write a PPM of the VGA screen to a file.

Returns: Nothing on success

Since: 0.14

Example: -> { "execute": "screendump",

"arguments": { "filename": "/tmp/image" } }

<- { "return": {} }

type ScreendumpCommand struct {
    Filename string  `json:"filename"`         // the path of a new PPM file to store the image
    Device   *string `json:"device,omitempty"` // ID of the display device that should be dumped. If this parameter is missing, the primary display will be used. (Since 2.12)
    Head     *int64  `json:"head,omitempty"`   // head to use in case the device supports multiple heads. If this parameter is missing, head #0 will be used. Also note that the head can only be specified in conjunction with the device ID. (Since 2.12)
}

type SecretCommonProperties

Properties for objects of classes derived from secret-common.

Since: 2.6

type SecretCommonProperties struct {
    Loaded *bool                `json:"loaded,omitempty"` // if true, the secret is loaded immediately when applying this option and will probably fail when processing the next option. Don't use; only provided for compatibility. (default: false)
    Format *QCryptoSecretFormat `json:"format,omitempty"` // the data format that the secret is provided in (default: raw)
    Keyid  *string              `json:"keyid,omitempty"`  // the name of another secret that should be used to decrypt the provided data. If not present, the data is assumed to be unencrypted.
    Iv     *string              `json:"iv,omitempty"`     // the random initialization vector used for encryption of this particular secret. Should be a base64 encrypted string of the 16-byte IV. Mandatory if @keyid is given. Ignored if @keyid is absent.
}

type SecretKeyringProperties

Properties for secret_keyring objects.

Since: 5.1

type SecretKeyringProperties struct {
    // Base type for this struct
    SecretCommonProperties
    Serial int32 `json:"serial"` // serial number that identifies a key to get from the kernel
}

type SecretProperties

Properties for secret objects.

Either @data or @file must be provided, but not both.

Since: 2.6

type SecretProperties struct {
    // Base type for this struct
    SecretCommonProperties
    Data *string `json:"data,omitempty"` // the associated with the secret from
    File *string `json:"file,omitempty"` // the filename to load the data associated with the secret from
}

type SendKeyCommand

Send keys to guest.

Returns: - Nothing on success - If key is unknown or redundant, InvalidParameter

Since: 1.3

Example: -> { "execute": "send-key",

"arguments": { "keys": [ { "type": "qcode", "data": "ctrl" },
                         { "type": "qcode", "data": "alt" },
                         { "type": "qcode", "data": "delete" } ] } }

<- { "return": {} }

type SendKeyCommand struct {
    Keys     []KeyValue `json:"keys"`                // An array of @KeyValue elements. All @KeyValues in this array are simultaneously sent to the guest. A @KeyValue.number value is sent directly to the guest, while @KeyValue.qcode must be a valid @QKeyCode value
    HoldTime *int64     `json:"hold-time,omitempty"` // time to delay key up events, milliseconds. Defaults to 100
}

type SetActionCommand

Set the actions that will be taken by the emulator in response to guest events.

Returns: Nothing on success.

Since: 6.0

Example: -> { "execute": "set-action",

"arguments": { "reboot": "shutdown",
               "shutdown" : "pause",
               "panic": "pause",
               "watchdog": "inject-nmi" } }

<- { "return": {} }

type SetActionCommand struct {
    Reboot   *RebootAction   `json:"reboot,omitempty"`   // @RebootAction action taken on guest reboot.
    Shutdown *ShutdownAction `json:"shutdown,omitempty"` // @ShutdownAction action taken on guest shutdown.
    Panic    *PanicAction    `json:"panic,omitempty"`    // @PanicAction action taken on guest panic.
    Watchdog *WatchdogAction `json:"watchdog,omitempty"` // @WatchdogAction action taken when watchdog timer expires .
}

type SetLinkCommand

Sets the link status of a virtual network adapter.

Returns: Nothing on success If @name is not a valid network device, DeviceNotFound

Since: 0.14

Notes: Not all network adapters support setting link status. This command will succeed even if the network adapter does not support link status notification.

Example: -> { "execute": "set_link",

"arguments": { "name": "e1000.0", "up": false } }

<- { "return": {} }

type SetLinkCommand struct {
    Name string `json:"name"` // the device name of the virtual network adapter
    Up   bool   `json:"up"`   // true to set the link status to be up
}

type SetNumaNodeCommand

Runtime equivalent of '-numa' CLI option, available at preconfigure stage to configure numa mapping before initializing machine.

Since 3.0

type SetNumaNodeCommand struct {
    NumaOptions
}

type SetPasswordAction

An action to take on changing a password on a connection with active clients.

Since: 7.0

type SetPasswordAction int32
const (
    SetPasswordActionKeep       SetPasswordAction = iota
    SetPasswordActionFail                         // fail the command if clients are connected
    SetPasswordActionDisconnect                   // disconnect existing clients
)

func (SetPasswordAction) MarshalJSON

func (s SetPasswordAction) MarshalJSON() ([]byte, error)

func (*SetPasswordAction) UnmarshalJSON

func (s *SetPasswordAction) UnmarshalJSON(data []byte) error

type SetPasswordCommand

Set the password of a remote display server.

Returns: - Nothing on success - If Spice is not enabled, DeviceNotFound

Since: 0.14

Example: -> { "execute": "set_password", "arguments": { "protocol": "vnc",

"password": "secret" } }

<- { "return": {} }

type SetPasswordCommand struct {
    SetPasswordOptions
}

type SetPasswordOptions

Options for set_password.

Since: 7.0

type SetPasswordOptions struct {
    // Base type for this struct
    SetPasswordOptionsBase
    // Value based on @protocol, possible types:
    // * SetPasswordOptionsVnc
    Value Any
}

func (SetPasswordOptions) MarshalJSON

func (s SetPasswordOptions) MarshalJSON() ([]byte, error)

func (*SetPasswordOptions) UnmarshalJSON

func (s *SetPasswordOptions) UnmarshalJSON(data []byte) error

type SetPasswordOptionsBase

Options for set_password.

Since: 7.0

type SetPasswordOptionsBase struct {
    Protocol  DisplayProtocol    `json:"protocol"`            // - 'vnc' to modify the VNC server password - 'spice' to modify the Spice server password
    Password  string             `json:"password"`            // the new password
    Connected *SetPasswordAction `json:"connected,omitempty"` // How to handle existing clients when changing the password. If nothing is specified, defaults to 'keep'. For VNC, only 'keep' is currently implemented.
}

type SetPasswordOptionsVnc

Options for set_password specific to the VNC procotol.

Since: 7.0

type SetPasswordOptionsVnc struct {
    Display *string `json:"display,omitempty"` // The id of the display where the password should be changed. Defaults to the first.
}

type SevAttestationReport

The struct describes attestation report for a Secure Encrypted Virtualization feature.

Since: 6.1

type SevAttestationReport struct {
    Data string `json:"data"` // guest attestation report (base64 encoded)
}

type SevCapability

The struct describes capability for a Secure Encrypted Virtualization feature.

Since: 2.12

type SevCapability struct {
    Pdh             string `json:"pdh"`               // Platform Diffie-Hellman key (base64 encoded)
    CertChain       string `json:"cert-chain"`        // PDH certificate chain (base64 encoded)
    Cbitpos         int64  `json:"cbitpos"`           // C-bit location in page table entry
    ReducedPhysBits int64  `json:"reduced-phys-bits"` // Number of physical Address bit reduction when SEV is enabled
}

type SevGuestProperties

Properties for sev-guest objects.

Since: 2.12

type SevGuestProperties struct {
    SevDevice       *string `json:"sev-device,omitempty"`    // SEV device to use (default: "/dev/sev")
    DhCertFile      *string `json:"dh-cert-file,omitempty"`  // guest owners DH certificate (encoded with base64)
    SessionFile     *string `json:"session-file,omitempty"`  // guest owners session parameters (encoded with base64)
    Policy          *uint32 `json:"policy,omitempty"`        // SEV policy value (default: 0x1)
    Handle          *uint32 `json:"handle,omitempty"`        // SEV firmware handle (default: 0)
    Cbitpos         *uint32 `json:"cbitpos,omitempty"`       // C-bit location in page table entry (default: 0)
    ReducedPhysBits uint32  `json:"reduced-phys-bits"`       // number of bits in physical addresses that become unavailable when SEV is enabled
    KernelHashes    *bool   `json:"kernel-hashes,omitempty"` // if true, add hashes of kernel/initrd/cmdline to a designated guest firmware page for measured boot with -kernel (default: false) (since 6.2)
}

type SevInfo

Information about Secure Encrypted Virtualization (SEV) support

Since: 2.12

type SevInfo struct {
    Enabled  bool     `json:"enabled"`   // true if SEV is active
    ApiMajor uint8    `json:"api-major"` // SEV API major version
    ApiMinor uint8    `json:"api-minor"` // SEV API minor version
    BuildId  uint8    `json:"build-id"`  // SEV FW build id
    Policy   uint32   `json:"policy"`    // SEV policy value
    State    SevState `json:"state"`     // SEV guest state
    Handle   uint32   `json:"handle"`    // SEV firmware handle
}

type SevInjectLaunchSecretCommand

This command injects a secret blob into memory of SEV guest.

Since: 6.0

type SevInjectLaunchSecretCommand struct {
    PacketHeader string  `json:"packet-header"` // the launch secret packet header encoded in base64
    Secret       string  `json:"secret"`        // the launch secret data to be injected encoded in base64
    Gpa          *uint64 `json:"gpa,omitempty"` // the guest physical address where secret will be injected.
}

type SevLaunchMeasureInfo

SEV Guest Launch measurement information

Since: 2.12

type SevLaunchMeasureInfo struct {
    Data string `json:"data"` // the measurement value encoded in base64
}

type SevState

An enumeration of SEV state information used during @query-sev.

Since: 2.12

type SevState int32
const (
    SevStateUninit        SevState = iota
    SevStateLaunchUpdate           // The guest is currently being launched; plaintext data and register state is being imported.
    SevStateLaunchSecret           // The guest is currently being launched; ciphertext data is being imported.
    SevStateRunning                // The guest is fully launched or migrated in.
    SevStateSendUpdate             // The guest is currently being migrated out to another machine.
    SevStateReceiveUpdate          // The guest is currently being migrated from another machine.
)

func (SevState) MarshalJSON

func (s SevState) MarshalJSON() ([]byte, error)

func (*SevState) UnmarshalJSON

func (s *SevState) UnmarshalJSON(data []byte) error

type SgxEPC

Sgx EPC cmdline information

Since: 6.2

type SgxEPC struct {
    Memdev string `json:"memdev"` // memory backend linked with device
    Node   int64  `json:"node"`   // the numa node (Since: 7.0)
}

type SgxEPCDeviceInfo

Sgx EPC state information

Since: 6.2

type SgxEPCDeviceInfo struct {
    Id      *string `json:"id,omitempty"` // device's ID
    Memaddr uint64  `json:"memaddr"`      // physical address in memory, where device is mapped
    Size    uint64  `json:"size"`         // size of memory that the device provides
    Node    int64   `json:"node"`         // the numa node (Since: 7.0)
    Memdev  string  `json:"memdev"`       // memory backend linked with device
}

type SgxEPCDeviceInfoWrapper

Since: 6.2

type SgxEPCDeviceInfoWrapper struct {
    Data SgxEPCDeviceInfo `json:"data"`
}

type SgxEPCProperties

SGX properties of machine types.

Since: 6.2

type SgxEPCProperties struct {
    SgxEpc []SgxEPC `json:"sgx-epc"` // list of ids of memory-backend-epc objects.
}

type ShutdownAction

Possible QEMU actions upon guest shutdown

Since: 6.0

type ShutdownAction int32
const (
    ShutdownActionPoweroff ShutdownAction = iota
    ShutdownActionPause                   // pause the VM#
)

func (ShutdownAction) MarshalJSON

func (s ShutdownAction) MarshalJSON() ([]byte, error)

func (*ShutdownAction) UnmarshalJSON

func (s *ShutdownAction) UnmarshalJSON(data []byte) error

type ShutdownCause

An enumeration of reasons for a Shutdown.

type ShutdownCause int32
const (
    ShutdownCauseNone               ShutdownCause = iota
    ShutdownCauseHostError                        // An error prevents further use of guest
    ShutdownCauseHostQmpQuit                      // Reaction to the QMP command 'quit'
    ShutdownCauseHostQmpSystemReset               // Reaction to the QMP command 'system_reset'
    ShutdownCauseHostSignal                       // Reaction to a signal, such as SIGINT
    ShutdownCauseHostUi                           // Reaction to a UI event, like window close
    ShutdownCauseGuestShutdown                    // Guest shutdown/suspend request, via ACPI or other hardware-specific means
    ShutdownCauseGuestReset                       // Guest reset request, and command line turns that into a shutdown
    ShutdownCauseGuestPanic                       // Guest panicked, and command line turns that into a shutdown
    ShutdownCauseSubsystemReset                   // Partial guest reset that does not trigger QMP events and ignores --no-reboot. This is useful for sanitizing hypercalls on s390 that are used during kexec/kdump/boot
)

func (ShutdownCause) MarshalJSON

func (s ShutdownCause) MarshalJSON() ([]byte, error)

func (*ShutdownCause) UnmarshalJSON

func (s *ShutdownCause) UnmarshalJSON(data []byte) error

type ShutdownEvent

Emitted when the virtual machine has shut down, indicating that qemu is about to exit.

Note: If the command-line option "-no-shutdown" has been specified, qemu will not exit, and a STOP event will eventually follow the SHUTDOWN event

Since: 0.12

Example: <- { "event": "SHUTDOWN", "data": { "guest": true },

"timestamp": { "seconds": 1267040730, "microseconds": 682951 } }
type ShutdownEvent struct {
    Guest  bool          `json:"guest"`  // If true, the shutdown was triggered by a guest request (such as a guest-initiated ACPI shutdown request or other hardware-specific action) rather than a host request (such as sending qemu a SIGINT). (since 2.10)
    Reason ShutdownCause `json:"reason"` // The @ShutdownCause which resulted in the SHUTDOWN. (since 4.0)
}

type SmbiosEntryPointType

Since: 7.0

type SmbiosEntryPointType int32
const (
    SmbiosEntryPointType32 SmbiosEntryPointType = iota
    SmbiosEntryPointType64                      // SMBIOS version 3.0 (64-bit) Entry Point
)

func (SmbiosEntryPointType) MarshalJSON

func (s SmbiosEntryPointType) MarshalJSON() ([]byte, error)

func (*SmbiosEntryPointType) UnmarshalJSON

func (s *SmbiosEntryPointType) UnmarshalJSON(data []byte) error

type SnapshotDeleteCommand

Delete a VM snapshot

None: Applications should not assume that the snapshot delete is complete when this command returns. The job commands / events must be used to determine completion and to fetch details of any errors that arise.

Returns: nothing

Example: -> { "execute": "snapshot-delete",

  "arguments": {
     "job-id": "snapdelete0",
     "tag": "my-snap",
     "devices": ["disk0", "disk1"]
  }
}

<- { "return": { } } <- {"event": "JOB_STATUS_CHANGE",

"data": {"status": "created", "id": "snapdelete0"}}

<- {"event": "JOB_STATUS_CHANGE",

"data": {"status": "running", "id": "snapdelete0"}}

<- {"event": "JOB_STATUS_CHANGE",

"data": {"status": "waiting", "id": "snapdelete0"}}

<- {"event": "JOB_STATUS_CHANGE",

"data": {"status": "pending", "id": "snapdelete0"}}

<- {"event": "JOB_STATUS_CHANGE",

"data": {"status": "concluded", "id": "snapdelete0"}}

-> {"execute": "query-jobs"} <- {"return": [{"current-progress": 1,

"status": "concluded",
"total-progress": 1,
"type": "snapshot-delete",
"id": "snapdelete0"}]}

Since: 6.0

type SnapshotDeleteCommand struct {
    JobId   string   `json:"job-id"`  // identifier for the newly created job
    Tag     string   `json:"tag"`     // name of the snapshot to delete.
    Devices []string `json:"devices"` // list of block device node names to delete a snapshot from
}

type SnapshotInfo

Since: 1.3

type SnapshotInfo struct {
    Id          string `json:"id"`               // unique snapshot id
    Name        string `json:"name"`             // user chosen name
    VmStateSize int64  `json:"vm-state-size"`    // size of the VM state
    DateSec     int64  `json:"date-sec"`         // UTC date of the snapshot in seconds
    DateNsec    int64  `json:"date-nsec"`        // fractional part in nano seconds to be used with date-sec
    VmClockSec  int64  `json:"vm-clock-sec"`     // VM clock relative to boot in seconds
    VmClockNsec int64  `json:"vm-clock-nsec"`    // fractional part in nano seconds to be used with vm-clock-sec
    Icount      *int64 `json:"icount,omitempty"` // Current instruction count. Appears when execution record/replay is enabled. Used for "time-traveling" to match the moment in the recorded execution with the snapshots. This counter may be obtained through @query-replay command (since 5.2)
}

type SnapshotLoadCommand

Load a VM snapshot

None: Applications should not assume that the snapshot load is complete when this command returns. The job commands / events must be used to determine completion and to fetch details of any errors that arise.

Note that execution of the guest CPUs will be stopped during the time it takes to load the snapshot.

It is strongly recommended that @devices contain all writable block device nodes that can have changed since the original @snapshot-save command execution.

Returns: nothing

Example: -> { "execute": "snapshot-load",

  "arguments": {
     "job-id": "snapload0",
     "tag": "my-snap",
     "vmstate": "disk0",
     "devices": ["disk0", "disk1"]
  }
}

<- { "return": { } } <- {"event": "JOB_STATUS_CHANGE",

"data": {"status": "created", "id": "snapload0"}}

<- {"event": "JOB_STATUS_CHANGE",

"data": {"status": "running", "id": "snapload0"}}

<- {"event": "STOP"} <- {"event": "RESUME"} <- {"event": "JOB_STATUS_CHANGE",

"data": {"status": "waiting", "id": "snapload0"}}

<- {"event": "JOB_STATUS_CHANGE",

"data": {"status": "pending", "id": "snapload0"}}

<- {"event": "JOB_STATUS_CHANGE",

"data": {"status": "concluded", "id": "snapload0"}}

-> {"execute": "query-jobs"} <- {"return": [{"current-progress": 1,

"status": "concluded",
"total-progress": 1,
"type": "snapshot-load",
"id": "snapload0"}]}

Since: 6.0

type SnapshotLoadCommand struct {
    JobId   string   `json:"job-id"`  // identifier for the newly created job
    Tag     string   `json:"tag"`     // name of the snapshot to load.
    Vmstate string   `json:"vmstate"` // block device node name to load vmstate from
    Devices []string `json:"devices"` // list of block device node names to load a snapshot from
}

type SnapshotSaveCommand

Save a VM snapshot

None: Applications should not assume that the snapshot save is complete when this command returns. The job commands / events must be used to determine completion and to fetch details of any errors that arise.

Note that execution of the guest CPUs may be stopped during the time it takes to save the snapshot. A future version of QEMU may ensure CPUs are executing continuously.

It is strongly recommended that @devices contain all writable block device nodes if a consistent snapshot is required.

If @tag already exists, an error will be reported

Returns: nothing

Example: -> { "execute": "snapshot-save",

  "arguments": {
     "job-id": "snapsave0",
     "tag": "my-snap",
     "vmstate": "disk0",
     "devices": ["disk0", "disk1"]
  }
}

<- { "return": { } } <- {"event": "JOB_STATUS_CHANGE",

"data": {"status": "created", "id": "snapsave0"}}

<- {"event": "JOB_STATUS_CHANGE",

"data": {"status": "running", "id": "snapsave0"}}

<- {"event": "STOP"} <- {"event": "RESUME"} <- {"event": "JOB_STATUS_CHANGE",

"data": {"status": "waiting", "id": "snapsave0"}}

<- {"event": "JOB_STATUS_CHANGE",

"data": {"status": "pending", "id": "snapsave0"}}

<- {"event": "JOB_STATUS_CHANGE",

"data": {"status": "concluded", "id": "snapsave0"}}

-> {"execute": "query-jobs"} <- {"return": [{"current-progress": 1,

"status": "concluded",
"total-progress": 1,
"type": "snapshot-save",
"id": "snapsave0"}]}

Since: 6.0

type SnapshotSaveCommand struct {
    JobId   string   `json:"job-id"`  // identifier for the newly created job
    Tag     string   `json:"tag"`     // name of the snapshot to create
    Vmstate string   `json:"vmstate"` // block device node name to save vmstate to
    Devices []string `json:"devices"` // list of block device node names to save a snapshot to
}

type SocketAddress

Captures the address of a socket, which could also be a named file descriptor

Since: 2.9

type SocketAddress struct {
    // Base type for this struct
    SocketAddressBase
    // Value based on @type, possible types:
    // * InetSocketAddress
    // * UnixSocketAddress
    // * VsockSocketAddress
    // * String
    Value Any
}

func (SocketAddress) MarshalJSON

func (s SocketAddress) MarshalJSON() ([]byte, error)

func (*SocketAddress) UnmarshalJSON

func (s *SocketAddress) UnmarshalJSON(data []byte) error

type SocketAddressBase

Captures the address of a socket, which could also be a named file descriptor

Since: 2.9

type SocketAddressBase struct {
    Type SocketAddressType `json:"type"` // Transport type
}

type SocketAddressLegacy

Captures the address of a socket, which could also be a named file descriptor

Note: This type is deprecated in favor of SocketAddress. The difference between SocketAddressLegacy and SocketAddress is that the latter is has fewer {} on the wire.

Since: 1.3

type SocketAddressLegacy struct {
    // Base type for this struct
    SocketAddressLegacyBase
    // Value based on @type, possible types:
    // * InetSocketAddressWrapper
    // * UnixSocketAddressWrapper
    // * VsockSocketAddressWrapper
    // * StringWrapper
    Value Any
}

func (SocketAddressLegacy) MarshalJSON

func (s SocketAddressLegacy) MarshalJSON() ([]byte, error)

func (*SocketAddressLegacy) UnmarshalJSON

func (s *SocketAddressLegacy) UnmarshalJSON(data []byte) error

type SocketAddressLegacyBase

Captures the address of a socket, which could also be a named file descriptor

Note: This type is deprecated in favor of SocketAddress. The difference between SocketAddressLegacy and SocketAddress is that the latter is has fewer {} on the wire.

Since: 1.3

type SocketAddressLegacyBase struct {
    Type SocketAddressType `json:"type"`
}

type SocketAddressType

Available SocketAddress types

Since: 2.9

type SocketAddressType int32
const (
    SocketAddressTypeInet  SocketAddressType = iota
    SocketAddressTypeUnix                    // Unix domain socket
    SocketAddressTypeVsock                   // VMCI address
    SocketAddressTypeFd                      // decimal is for file descriptor number, otherwise a file descriptor name. Named file descriptors are permitted in monitor commands, in combination with the 'getfd' command. Decimal file descriptors are permitted at startup or other contexts where no monitor context is active.
)

func (SocketAddressType) MarshalJSON

func (s SocketAddressType) MarshalJSON() ([]byte, error)

func (*SocketAddressType) UnmarshalJSON

func (s *SocketAddressType) UnmarshalJSON(data []byte) error

type SpiceBasicInfo

The basic information for SPICE network connection

Since: 2.1

type SpiceBasicInfo struct {
    Host   string               `json:"host"`   // IP address
    Port   string               `json:"port"`   // port number
    Family NetworkAddressFamily `json:"family"` // address family
}

type SpiceChannel

Information about a SPICE client channel.

Since: 0.14

type SpiceChannel struct {
    // Base type for this struct
    SpiceBasicInfo
    ConnectionId int64 `json:"connection-id"` // SPICE connection id number. All channels with the same id belong to the same SPICE session.
    ChannelType  int64 `json:"channel-type"`  // SPICE channel type number. "1" is the main control channel, filter for this one if you want to track spice sessions only
    ChannelId    int64 `json:"channel-id"`    // SPICE channel ID number. Usually "0", might be different when multiple channels of the same type exist, such as multiple display channels in a multihead setup
    Tls          bool  `json:"tls"`           // true if the channel is encrypted, false otherwise.
}

type SpiceConnectedEvent

Emitted when a SPICE client establishes a connection

Since: 0.14

Example: <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},

  "event": "SPICE_CONNECTED",
  "data": {
    "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
    "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
}}
type SpiceConnectedEvent struct {
    Server SpiceBasicInfo `json:"server"` // server information
    Client SpiceBasicInfo `json:"client"` // client information
}

type SpiceDisconnectedEvent

Emitted when the SPICE connection is closed

Since: 0.14

Example: <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},

  "event": "SPICE_DISCONNECTED",
  "data": {
    "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
    "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
}}
type SpiceDisconnectedEvent struct {
    Server SpiceBasicInfo `json:"server"` // server information
    Client SpiceBasicInfo `json:"client"` // client information
}

type SpiceInfo

Information about the SPICE session.

Since: 0.14

type SpiceInfo struct {
    Enabled         bool                `json:"enabled"`                    // true if the SPICE server is enabled, false otherwise
    Migrated        bool                `json:"migrated"`                   // true if the last guest migration completed and spice migration had completed as well. false otherwise. (since 1.4)
    Host            *string             `json:"host,omitempty"`             // The hostname the SPICE server is bound to. This depends on the name resolution on the host and may be an IP address.
    Port            *int64              `json:"port,omitempty"`             // The SPICE server's port number.
    TlsPort         *int64              `json:"tls-port,omitempty"`         // The SPICE server's TLS port number.
    Auth            *string             `json:"auth,omitempty"`             // the current authentication type used by the server - 'none' if no authentication is being used - 'spice' uses SASL or direct TLS authentication, depending on command line options
    CompiledVersion *string             `json:"compiled-version,omitempty"` // SPICE server version.
    MouseMode       SpiceQueryMouseMode `json:"mouse-mode"`                 // The mode in which the mouse cursor is displayed currently. Can be determined by the client or the server, or unknown if spice server doesn't provide this information. (since: 1.1)
    Channels        []SpiceChannel      `json:"channels,omitempty"`         // a list of @SpiceChannel for each active spice channel
}

type SpiceInitializedEvent

Emitted after initial handshake and authentication takes place (if any) and the SPICE channel is up and running

Since: 0.14

Example: <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},

  "event": "SPICE_INITIALIZED",
  "data": {"server": {"auth": "spice", "port": "5921",
                      "family": "ipv4", "host": "127.0.0.1"},
           "client": {"port": "49004", "family": "ipv4", "channel-type": 3,
                      "connection-id": 1804289383, "host": "127.0.0.1",
                      "channel-id": 0, "tls": true}
}}
type SpiceInitializedEvent struct {
    Server SpiceServerInfo `json:"server"` // server information
    Client SpiceChannel    `json:"client"` // client information
}

type SpiceMigrateCompletedEvent

Emitted when SPICE migration has completed

Since: 1.3

Example: <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},

"event": "SPICE_MIGRATE_COMPLETED" }
type SpiceMigrateCompletedEvent struct{}

type SpiceQueryMouseMode

An enumeration of Spice mouse states.

Note: spice/enums.h has a SpiceMouseMode already, hence the name.

Since: 1.1

type SpiceQueryMouseMode int32
const (
    SpiceQueryMouseModeClient  SpiceQueryMouseMode = iota
    SpiceQueryMouseModeServer                      // Mouse cursor position is determined by the server.
    SpiceQueryMouseModeUnknown                     // No information is available about mouse mode used by the spice server.
)

func (SpiceQueryMouseMode) MarshalJSON

func (s SpiceQueryMouseMode) MarshalJSON() ([]byte, error)

func (*SpiceQueryMouseMode) UnmarshalJSON

func (s *SpiceQueryMouseMode) UnmarshalJSON(data []byte) error

type SpiceServerInfo

Information about a SPICE server

Since: 2.1

type SpiceServerInfo struct {
    // Base type for this struct
    SpiceBasicInfo
    Auth *string `json:"auth,omitempty"` // authentication method
}

type SshHostKeyCheck

Since: 2.12

type SshHostKeyCheck struct {
    // Base type for this struct
    SshHostKeyCheckBase
    // Value based on @mode, possible types:
    // * SshHostKeyHash
    Value Any
}

func (SshHostKeyCheck) MarshalJSON

func (s SshHostKeyCheck) MarshalJSON() ([]byte, error)

func (*SshHostKeyCheck) UnmarshalJSON

func (s *SshHostKeyCheck) UnmarshalJSON(data []byte) error

type SshHostKeyCheckBase

Since: 2.12

type SshHostKeyCheckBase struct {
    Mode SshHostKeyCheckMode `json:"mode"`
}

type SshHostKeyCheckHashType

Since: 2.12

type SshHostKeyCheckHashType int32
const (
    SshHostKeyCheckHashTypeMd5    SshHostKeyCheckHashType = iota
    SshHostKeyCheckHashTypeSha1                           // The given hash is an sha1 hash
    SshHostKeyCheckHashTypeSha256                         // The given hash is an sha256 hash
)

func (SshHostKeyCheckHashType) MarshalJSON

func (s SshHostKeyCheckHashType) MarshalJSON() ([]byte, error)

func (*SshHostKeyCheckHashType) UnmarshalJSON

func (s *SshHostKeyCheckHashType) UnmarshalJSON(data []byte) error

type SshHostKeyCheckMode

Since: 2.12

type SshHostKeyCheckMode int32
const (
    SshHostKeyCheckModeNone        SshHostKeyCheckMode = iota
    SshHostKeyCheckModeHash                            // Compare the host key with a given hash
    SshHostKeyCheckModeKnown_Hosts                     // Check the host key against the known_hosts file
)

func (SshHostKeyCheckMode) MarshalJSON

func (s SshHostKeyCheckMode) MarshalJSON() ([]byte, error)

func (*SshHostKeyCheckMode) UnmarshalJSON

func (s *SshHostKeyCheckMode) UnmarshalJSON(data []byte) error

type SshHostKeyHash

Since: 2.12

type SshHostKeyHash struct {
    Type SshHostKeyCheckHashType `json:"type"` // The hash algorithm used for the hash
    Hash string                  `json:"hash"` // The expected hash value
}

type StatusInfo

Information about VCPU run state

Since: 0.14

Notes: @singlestep is enabled through the GDB stub

type StatusInfo struct {
    Running    bool     `json:"running"`    // true if all VCPUs are runnable, false if not runnable
    Singlestep bool     `json:"singlestep"` // true if VCPUs are in single-step mode
    Status     RunState `json:"status"`     // the virtual machine @RunState
}

type StopCommand

Stop all guest VCPU execution.

Since: 0.14

Notes: This function will succeed even if the guest is already in the stopped state. In "inmigrate" state, it will ensure that the guest remains paused once migration finishes, as if the -S option was passed on the command line.

Example: -> { "execute": "stop" } <- { "return": {} }

type StopCommand struct{}

type StopEvent

Emitted when the virtual machine is stopped

Since: 0.12

Example: <- { "event": "STOP",

"timestamp": { "seconds": 1267041730, "microseconds": 281295 } }
type StopEvent struct{}

type StrOrNull

This is a string value or the explicit lack of a string (null pointer in C). Intended for cases when 'optional absent' already has a different meaning.

Since: 2.10

type StrOrNull struct {
    // Options are:
    // * s (string): the string value
    // * n (nil): no string value
    Value Any
}

func (StrOrNull) MarshalJSON

func (s StrOrNull) MarshalJSON() ([]byte, error)

func (*StrOrNull) UnmarshalJSON

func (s *StrOrNull) UnmarshalJSON(data []byte) error

type String

A fat type wrapping 'str', to be embedded in lists.

Since: 1.2

type String struct {
    Str string `json:"str"`
}

type StringWrapper

Since: 1.3

type StringWrapper struct {
    Data string `json:"data"`
}

type SuspendDiskEvent

Emitted when guest enters a hardware suspension state with data saved on disk, for example, S4 state, which is sometimes called hibernate state

Note: QEMU shuts down (similar to event @SHUTDOWN) when entering this state

Since: 1.2

Example: <- { "event": "SUSPEND_DISK",

"timestamp": { "seconds": 1344456160, "microseconds": 309119 } }
type SuspendDiskEvent struct{}

type SuspendEvent

Emitted when guest enters a hardware suspension state, for example, S3 state, which is sometimes called standby state

Since: 1.1

Example: <- { "event": "SUSPEND",

"timestamp": { "seconds": 1344456160, "microseconds": 309119 } }
type SuspendEvent struct{}

type SysEmuTarget

The comprehensive enumeration of QEMU system emulation ("softmmu") targets. Run "./configure --help" in the project root directory, and look for the \*-softmmu targets near the "--target-list" option. The individual target constants are not documented here, for the time being.

Notes: The resulting QMP strings can be appended to the "qemu-system-" prefix to produce the corresponding QEMU executable name. This is true even for "qemu-system-x86_64".

Since: 3.0

type SysEmuTarget int32
const (
    SysEmuTargetAarch64 SysEmuTarget = iota
    SysEmuTargetAlpha
    SysEmuTargetArm
    SysEmuTargetAvr // since 5.1
    SysEmuTargetCris
    SysEmuTargetHppa
    SysEmuTargetI386
    SysEmuTargetM68K
    SysEmuTargetMicroblaze
    SysEmuTargetMicroblazeel
    SysEmuTargetMips
    SysEmuTargetMips64
    SysEmuTargetMips64El
    SysEmuTargetMipsel
    SysEmuTargetNios2
    SysEmuTargetOr1K
    SysEmuTargetPpc
    SysEmuTargetPpc64
    SysEmuTargetRiscv32
    SysEmuTargetRiscv64
    SysEmuTargetRx // since 5.0
    SysEmuTargetS390X
    SysEmuTargetSh4
    SysEmuTargetSh4Eb
    SysEmuTargetSparc
    SysEmuTargetSparc64
    SysEmuTargetTricore
    SysEmuTargetX86_64
    SysEmuTargetXtensa
    SysEmuTargetXtensaeb
)

func (SysEmuTarget) MarshalJSON

func (s SysEmuTarget) MarshalJSON() ([]byte, error)

func (*SysEmuTarget) UnmarshalJSON

func (s *SysEmuTarget) UnmarshalJSON(data []byte) error

type SystemPowerdownCommand

Requests that a guest perform a powerdown operation.

Since: 0.14

Notes: A guest may or may not respond to this command. This command returning does not indicate that a guest has accepted the request or that it has shut down. Many guests will respond to this command by prompting the user in some way.

Example: -> { "execute": "system_powerdown" } <- { "return": {} }

type SystemPowerdownCommand struct{}

type SystemResetCommand

Performs a hard reset of a guest.

Since: 0.14

Example: -> { "execute": "system_reset" } <- { "return": {} }

type SystemResetCommand struct{}

type SystemWakeupCommand

Wake up guest from suspend. If the guest has wake-up from suspend support enabled (wakeup-suspend-support flag from query-current-machine), wake-up guest from suspend if the guest is in SUSPENDED state. Return an error otherwise.

Since: 1.1

Returns: nothing.

Note: prior to 4.0, this command does nothing in case the guest isn't suspended.

Example: -> { "execute": "system_wakeup" } <- { "return": {} }

type SystemWakeupCommand struct{}

type TPMEmulatorOptions

Information about the TPM emulator type

Since: 2.11

type TPMEmulatorOptions struct {
    Chardev string `json:"chardev"` // Name of a unix socket chardev
}

type TPMEmulatorOptionsWrapper

Since: 2.11

type TPMEmulatorOptionsWrapper struct {
    Data TPMEmulatorOptions `json:"data"`
}

type TPMInfo

Information about the TPM

Since: 1.5

type TPMInfo struct {
    Id      string         `json:"id"`      // The Id of the TPM
    Model   TpmModel       `json:"model"`   // The TPM frontend model
    Options TpmTypeOptions `json:"options"` // The TPM (backend) type configuration options
}

type TPMPassthroughOptions

Information about the TPM passthrough type

Since: 1.5

type TPMPassthroughOptions struct {
    Path       *string `json:"path,omitempty"`        // string describing the path used for accessing the TPM device
    CancelPath *string `json:"cancel-path,omitempty"` // string showing the TPM's sysfs cancel file for cancellation of TPM commands while they are executing
}

type TPMPassthroughOptionsWrapper

Since: 1.5

type TPMPassthroughOptionsWrapper struct {
    Data TPMPassthroughOptions `json:"data"`
}

type TargetInfo

Information describing the QEMU target.

Since: 1.2

type TargetInfo struct {
    Arch SysEmuTarget `json:"arch"` // the target architecture
}

type ThrottleGroupProperties

Properties for throttle-group objects.

Since: 2.11

type ThrottleGroupProperties struct {
    Limits              *ThrottleLimits `json:"limits,omitempty"` // limits to apply for this throttle group
    XIopsTotal          *int64          `json:"x-iops-total,omitempty"`
    XIopsTotalMax       *int64          `json:"x-iops-total-max,omitempty"`
    XIopsTotalMaxLength *int64          `json:"x-iops-total-max-length,omitempty"`
    XIopsRead           *int64          `json:"x-iops-read,omitempty"`
    XIopsReadMax        *int64          `json:"x-iops-read-max,omitempty"`
    XIopsReadMaxLength  *int64          `json:"x-iops-read-max-length,omitempty"`
    XIopsWrite          *int64          `json:"x-iops-write,omitempty"`
    XIopsWriteMax       *int64          `json:"x-iops-write-max,omitempty"`
    XIopsWriteMaxLength *int64          `json:"x-iops-write-max-length,omitempty"`
    XBpsTotal           *int64          `json:"x-bps-total,omitempty"`
    XBpsTotalMax        *int64          `json:"x-bps-total-max,omitempty"`
    XBpsTotalMaxLength  *int64          `json:"x-bps-total-max-length,omitempty"`
    XBpsRead            *int64          `json:"x-bps-read,omitempty"`
    XBpsReadMax         *int64          `json:"x-bps-read-max,omitempty"`
    XBpsReadMaxLength   *int64          `json:"x-bps-read-max-length,omitempty"`
    XBpsWrite           *int64          `json:"x-bps-write,omitempty"`
    XBpsWriteMax        *int64          `json:"x-bps-write-max,omitempty"`
    XBpsWriteMaxLength  *int64          `json:"x-bps-write-max-length,omitempty"`
    XIopsSize           *int64          `json:"x-iops-size,omitempty"`
}

type ThrottleLimits

Limit parameters for throttling. Since some limit combinations are illegal, limits should always be set in one transaction. All fields are optional. When setting limits, if a field is missing the current value is not changed.

Since: 2.11

type ThrottleLimits struct {
    IopsTotal          *int64 `json:"iops-total,omitempty"`            // limit total I/O operations per second
    IopsTotalMax       *int64 `json:"iops-total-max,omitempty"`        // I/O operations burst
    IopsTotalMaxLength *int64 `json:"iops-total-max-length,omitempty"` // length of the iops-total-max burst period, in seconds It must only be set if @iops-total-max is set as well.
    IopsRead           *int64 `json:"iops-read,omitempty"`             // limit read operations per second
    IopsReadMax        *int64 `json:"iops-read-max,omitempty"`         // I/O operations read burst
    IopsReadMaxLength  *int64 `json:"iops-read-max-length,omitempty"`  // length of the iops-read-max burst period, in seconds It must only be set if @iops-read-max is set as well.
    IopsWrite          *int64 `json:"iops-write,omitempty"`            // limit write operations per second
    IopsWriteMax       *int64 `json:"iops-write-max,omitempty"`        // I/O operations write burst
    IopsWriteMaxLength *int64 `json:"iops-write-max-length,omitempty"` // length of the iops-write-max burst period, in seconds It must only be set if @iops-write-max is set as well.
    BpsTotal           *int64 `json:"bps-total,omitempty"`             // limit total bytes per second
    BpsTotalMax        *int64 `json:"bps-total-max,omitempty"`         // total bytes burst
    BpsTotalMaxLength  *int64 `json:"bps-total-max-length,omitempty"`  // length of the bps-total-max burst period, in seconds. It must only be set if @bps-total-max is set as well.
    BpsRead            *int64 `json:"bps-read,omitempty"`              // limit read bytes per second
    BpsReadMax         *int64 `json:"bps-read-max,omitempty"`          // total bytes read burst
    BpsReadMaxLength   *int64 `json:"bps-read-max-length,omitempty"`   // length of the bps-read-max burst period, in seconds It must only be set if @bps-read-max is set as well.
    BpsWrite           *int64 `json:"bps-write,omitempty"`             // limit write bytes per second
    BpsWriteMax        *int64 `json:"bps-write-max,omitempty"`         // total bytes write burst
    BpsWriteMaxLength  *int64 `json:"bps-write-max-length,omitempty"`  // length of the bps-write-max burst period, in seconds It must only be set if @bps-write-max is set as well.
    IopsSize           *int64 `json:"iops-size,omitempty"`             // when limiting by iops max size of an I/O in bytes
}

type TlsCredsAnonProperties

Properties for tls-creds-anon objects.

Since: 2.5

type TlsCredsAnonProperties struct {
    // Base type for this struct
    TlsCredsProperties
    Loaded *bool `json:"loaded,omitempty"` // if true, the credentials are loaded immediately when applying this option and will ignore options that are processed later. Don't use; only provided for compatibility. (default: false)
}

type TlsCredsProperties

Properties for objects of classes derived from tls-creds.

Since: 2.5

type TlsCredsProperties struct {
    VerifyPeer *bool                    `json:"verify-peer,omitempty"` // if true the peer credentials will be verified once the handshake is completed. This is a no-op for anonymous credentials. (default: true)
    Dir        *string                  `json:"dir,omitempty"`         // the path of the directory that contains the credential files
    Endpoint   *QCryptoTLSCredsEndpoint `json:"endpoint,omitempty"`    // whether the QEMU network backend that uses the credentials will be acting as a client or as a server (default: client)
    Priority   *string                  `json:"priority,omitempty"`    // a gnutls priority string as described at https://gnutls.org/manual/html_node/Priority-Strings.html
}

type TlsCredsPskProperties

Properties for tls-creds-psk objects.

Since: 3.0

type TlsCredsPskProperties struct {
    // Base type for this struct
    TlsCredsProperties
    Loaded   *bool   `json:"loaded,omitempty"`   // if true, the credentials are loaded immediately when applying this option and will ignore options that are processed later. Don't use; only provided for compatibility. (default: false)
    Username *string `json:"username,omitempty"` // the username which will be sent to the server. For clients only. If absent, "qemu" is sent and the property will read back as an empty string.
}

type TlsCredsX509Properties

Properties for tls-creds-x509 objects.

Since: 2.5

type TlsCredsX509Properties struct {
    // Base type for this struct
    TlsCredsProperties
    Loaded      *bool   `json:"loaded,omitempty"`       // if true, the credentials are loaded immediately when applying this option and will ignore options that are processed later. Don't use; only provided for compatibility. (default: false)
    SanityCheck *bool   `json:"sanity-check,omitempty"` // if true, perform some sanity checks before using the credentials (default: true)
    Passwordid  *string `json:"passwordid,omitempty"`   // For the server-key.pem and client-key.pem files which contain sensitive private keys, it is possible to use an encrypted version by providing the @passwordid parameter. This provides the ID of a previously created secret object containing the password for decryption.
}

type TpmModel

An enumeration of TPM models

Since: 1.5

type TpmModel int32
const (
    TpmModelTpmTis   TpmModel = iota
    TpmModelTpmCrb            // TPM CRB model (since 2.12)
    TpmModelTpmSpapr          // TPM SPAPR model (since 5.0)
)

func (TpmModel) MarshalJSON

func (s TpmModel) MarshalJSON() ([]byte, error)

func (*TpmModel) UnmarshalJSON

func (s *TpmModel) UnmarshalJSON(data []byte) error

type TpmType

An enumeration of TPM types

Since: 1.5

type TpmType int32
const (
    TpmTypePassthrough TpmType = iota
    TpmTypeEmulator            // Software Emulator TPM type Since: 2.11
)

func (TpmType) MarshalJSON

func (s TpmType) MarshalJSON() ([]byte, error)

func (*TpmType) UnmarshalJSON

func (s *TpmType) UnmarshalJSON(data []byte) error

type TpmTypeOptions

A union referencing different TPM backend types' configuration options

Since: 1.5

type TpmTypeOptions struct {
    // Base type for this struct
    TpmTypeOptionsBase
    // Value based on @type, possible types:
    // * TPMPassthroughOptionsWrapper
    // * TPMEmulatorOptionsWrapper
    Value Any
}

func (TpmTypeOptions) MarshalJSON

func (s TpmTypeOptions) MarshalJSON() ([]byte, error)

func (*TpmTypeOptions) UnmarshalJSON

func (s *TpmTypeOptions) UnmarshalJSON(data []byte) error

type TpmTypeOptionsBase

A union referencing different TPM backend types' configuration options

Since: 1.5

type TpmTypeOptionsBase struct {
    Type TpmType `json:"type"` // - 'passthrough' The configuration options for the TPM passthrough type - 'emulator' The configuration options for TPM emulator backend type
}

type TraceEventGetStateCommand

Query the state of events.

Returns: a list of @TraceEventInfo for the matching events

An event is returned if:

- its name matches the @name pattern, and - if @vcpu is given, the event has the "vcpu" property.

Therefore, if @vcpu is given, the operation will only match per-vCPU events, returning their state on the specified vCPU. Special case: if @name is an exact match, @vcpu is given and the event does not have the "vcpu" property, an error is returned.

Since: 2.2

Example: -> { "execute": "trace-event-get-state",

"arguments": { "name": "qemu_memalign" } }

<- { "return": [ { "name": "qemu_memalign", "state": "disabled" } ] }

type TraceEventGetStateCommand struct {
    Name string `json:"name"`           // Event name pattern (case-sensitive glob).
    Vcpu *int64 `json:"vcpu,omitempty"` // The vCPU to query (any by default; since 2.7).
}

type TraceEventInfo

Information of a tracing event.

None: An event is per-vCPU if it has the "vcpu" property in the "trace-events" files.

Since: 2.2

type TraceEventInfo struct {
    Name  string          `json:"name"`  // Event name.
    State TraceEventState `json:"state"` // Tracing state.
    Vcpu  bool            `json:"vcpu"`  // Whether this is a per-vCPU event (since 2.7).
}

type TraceEventSetStateCommand

Set the dynamic tracing state of events.

None: An event's state is modified if: - its name matches the @name pattern, and - if @vcpu is given, the event has the "vcpu" property.

Therefore, if @vcpu is given, the operation will only match per-vCPU events, setting their state on the specified vCPU. Special case: if @name is an exact match, @vcpu is given and the event does not have the "vcpu" property, an error is returned.

Since: 2.2

Example: -> { "execute": "trace-event-set-state",

"arguments": { "name": "qemu_memalign", "enable": true } }

<- { "return": {} }

type TraceEventSetStateCommand struct {
    Name              string `json:"name"`                         // Event name pattern (case-sensitive glob).
    Enable            bool   `json:"enable"`                       // Whether to enable tracing.
    IgnoreUnavailable *bool  `json:"ignore-unavailable,omitempty"` // Do not match unavailable events with @name.
    Vcpu              *int64 `json:"vcpu,omitempty"`               // The vCPU to act upon (all by default; since 2.7).
}

type TraceEventState

State of a tracing event.

Since: 2.2

type TraceEventState int32
const (
    TraceEventStateUnavailable TraceEventState = iota
    TraceEventStateDisabled                    // The event is dynamically disabled.
    TraceEventStateEnabled                     // The event is dynamically enabled.
)

func (TraceEventState) MarshalJSON

func (s TraceEventState) MarshalJSON() ([]byte, error)

func (*TraceEventState) UnmarshalJSON

func (s *TraceEventState) UnmarshalJSON(data []byte) error

type TransactionAction

A discriminated record of operations that can be performed with @transaction.

Since: 1.1

type TransactionAction struct {
    // Base type for this struct
    TransactionActionBase
    // Value based on @type, possible types:
    // * AbortWrapper
    // * BlockDirtyBitmapAddWrapper
    // * BlockDirtyBitmapWrapper
    // * BlockDirtyBitmapWrapper
    // * BlockDirtyBitmapWrapper
    // * BlockDirtyBitmapWrapper
    // * BlockDirtyBitmapMergeWrapper
    // * BlockdevBackupWrapper
    // * BlockdevSnapshotWrapper
    // * BlockdevSnapshotInternalWrapper
    // * BlockdevSnapshotSyncWrapper
    // * DriveBackupWrapper
    Value Any
}

func (TransactionAction) MarshalJSON

func (s TransactionAction) MarshalJSON() ([]byte, error)

func (*TransactionAction) UnmarshalJSON

func (s *TransactionAction) UnmarshalJSON(data []byte) error

type TransactionActionBase

A discriminated record of operations that can be performed with @transaction.

Since: 1.1

type TransactionActionBase struct {
    Type TransactionActionKind `json:"type"`
}

type TransactionActionKind

Since: 1.1

type TransactionActionKind int32
const (
    TransactionActionKindAbort                        TransactionActionKind = iota
    TransactionActionKindBlockDirtyBitmapAdd                                // Since 2.5
    TransactionActionKindBlockDirtyBitmapRemove                             // Since 4.2
    TransactionActionKindBlockDirtyBitmapClear                              // Since 2.5
    TransactionActionKindBlockDirtyBitmapEnable                             // Since 4.0
    TransactionActionKindBlockDirtyBitmapDisable                            // Since 4.0
    TransactionActionKindBlockDirtyBitmapMerge                              // Since 4.0
    TransactionActionKindBlockdevBackup                                     // Since 2.3
    TransactionActionKindBlockdevSnapshot                                   // Since 2.5
    TransactionActionKindBlockdevSnapshotInternalSync                       // Since 1.7
    TransactionActionKindBlockdevSnapshotSync                               // since 1.1
    TransactionActionKindDriveBackup                                        // Since 1.6
)

func (TransactionActionKind) MarshalJSON

func (s TransactionActionKind) MarshalJSON() ([]byte, error)

func (*TransactionActionKind) UnmarshalJSON

func (s *TransactionActionKind) UnmarshalJSON(data []byte) error

type TransactionCommand

Executes a number of transactionable QMP commands atomically. If any operation fails, then the entire set of actions will be abandoned and the appropriate error returned.

For external snapshots, the dictionary contains the device, the file to use for the new snapshot, and the format. The default format, if not specified, is qcow2.

Each new snapshot defaults to being created by QEMU (wiping any contents if the file already exists), but it is also possible to reuse an externally-created file. In the latter case, you should ensure that the new image file has the same contents as the current one; QEMU cannot perform any meaningful check. Typically this is achieved by using the current image file as the backing file for the new image.

On failure, the original disks pre-snapshot attempt will be used.

For internal snapshots, the dictionary contains the device and the snapshot's name. If an internal snapshot matching name already exists, the request will be rejected. Only some image formats support it, for example, qcow2, and rbd,

On failure, qemu will try delete the newly created internal snapshot in the transaction. When an I/O error occurs during deletion, the user needs to fix it later with qemu-img or other command.

Returns: nothing on success

Errors depend on the operations of the transaction

Note: The transaction aborts on the first failure. Therefore, there will be information on only one failed operation returned in an error condition, and subsequent actions will not have been attempted.

Since: 1.1

Example: -> { "execute": "transaction",

"arguments": { "actions": [
    { "type": "blockdev-snapshot-sync", "data" : { "device": "ide-hd0",
                                "snapshot-file": "/some/place/my-image",
                                "format": "qcow2" } },
    { "type": "blockdev-snapshot-sync", "data" : { "node-name": "myfile",
                                "snapshot-file": "/some/place/my-image2",
                                "snapshot-node-name": "node3432",
                                "mode": "existing",
                                "format": "qcow2" } },
    { "type": "blockdev-snapshot-sync", "data" : { "device": "ide-hd1",
                                "snapshot-file": "/some/place/my-image2",
                                "mode": "existing",
                                "format": "qcow2" } },
    { "type": "blockdev-snapshot-internal-sync", "data" : {
                                "device": "ide-hd2",
                                "name": "snapshot0" } } ] } }

<- { "return": {} }

type TransactionCommand struct {
    Actions    []TransactionAction    `json:"actions"`              // List of @TransactionAction; information needed for the respective operations.
    Properties *TransactionProperties `json:"properties,omitempty"` // structure of additional options to control the execution of the transaction. See @TransactionProperties for additional detail.
}

type TransactionProperties

Optional arguments to modify the behavior of a Transaction.

Since: 2.5

type TransactionProperties struct {
    CompletionMode *ActionCompletionMode `json:"completion-mode,omitempty"` // Controls how jobs launched asynchronously by Actions will complete or fail as a group. See @ActionCompletionMode for details.
}

type UnixSocketAddress

Captures a socket address in the local ("Unix socket") namespace.

Since: 1.3

type UnixSocketAddress struct {
    Path     string `json:"path"`               // filesystem path to use
    Abstract *bool  `json:"abstract,omitempty"` // if true, this is a Linux abstract socket address. @path will be prefixed by a null byte, and optionally padded with null bytes. Defaults to false. (Since 5.1)
    Tight    *bool  `json:"tight,omitempty"`    // if false, pad an abstract socket address with enough null bytes to make it fill struct sockaddr_un member sun_path. Defaults to true. (Since 5.1)
}

type UnixSocketAddressWrapper

Since: 1.3

type UnixSocketAddressWrapper struct {
    Data UnixSocketAddress `json:"data"`
}

type UnplugPrimaryEvent

Emitted from source side of a migration when migration state is WAIT_UNPLUG. Device was unplugged by guest operating system. Device resources in QEMU are kept on standby to be able to re-plug it in case of migration failure.

Since: 4.2

Example: {"event": "UNPLUG_PRIMARY", "data": {"device-id": "hostdev0"} }

type UnplugPrimaryEvent struct {
    DeviceId string `json:"device-id"` // QEMU device id of the unplugged device
}

type UuidInfo

Guest UUID information (Universally Unique Identifier).

Since: 0.14

Notes: If no UUID was specified for the guest, a null UUID is returned.

type UuidInfo struct {
    Uuid string `json:"UUID"` // the UUID of the guest
}

type VersionInfo

A description of QEMU's version.

Since: 0.14

type VersionInfo struct {
    Qemu    VersionTriple `json:"qemu"`    // The version of QEMU. By current convention, a micro version of 50 signifies a development branch. A micro version greater than or equal to 90 signifies a release candidate for the next minor version. A micro version of less than 50 signifies a stable release.
    Package string        `json:"package"` // QEMU will always set this field to an empty string. Downstream versions of QEMU should set this to a non-empty string. The exact format depends on the downstream however it highly recommended that a unique name is used.
}

type VersionTriple

A three-part version number.

Since: 2.4

type VersionTriple struct {
    Major int64 `json:"major"` // The major version number.
    Minor int64 `json:"minor"` // The minor version number.
    Micro int64 `json:"micro"` // The micro version number.
}

type VfioStats

Detailed VFIO devices migration statistics

Since: 5.2

type VfioStats struct {
    Transferred int64 `json:"transferred"` // amount of bytes transferred to the target VM by VFIO devices
}

type VirtioMEMDeviceInfo

VirtioMEMDevice state information

Since: 5.1

type VirtioMEMDeviceInfo struct {
    Id            *string `json:"id,omitempty"`   // device's ID
    Memaddr       uint64  `json:"memaddr"`        // physical address in memory, where device is mapped
    RequestedSize uint64  `json:"requested-size"` // the user requested size of the device
    Size          uint64  `json:"size"`           // the (current) size of memory that the device provides
    MaxSize       uint64  `json:"max-size"`       // the maximum size of memory that the device can provide
    BlockSize     uint64  `json:"block-size"`     // the block size of memory that the device provides
    Node          int64   `json:"node"`           // NUMA node number where device is assigned to
    Memdev        string  `json:"memdev"`         // memory backend linked with the region
}

type VirtioMEMDeviceInfoWrapper

Since: 2.1

type VirtioMEMDeviceInfoWrapper struct {
    Data VirtioMEMDeviceInfo `json:"data"`
}

type VirtioPMEMDeviceInfo

VirtioPMEM state information

Since: 4.1

type VirtioPMEMDeviceInfo struct {
    Id      *string `json:"id,omitempty"` // device's ID
    Memaddr uint64  `json:"memaddr"`      // physical address in memory, where device is mapped
    Size    uint64  `json:"size"`         // size of memory that the device provides
    Memdev  string  `json:"memdev"`       // memory backend linked with device
}

type VirtioPMEMDeviceInfoWrapper

Since: 2.1

type VirtioPMEMDeviceInfoWrapper struct {
    Data VirtioPMEMDeviceInfo `json:"data"`
}

type VncBasicInfo

The basic information for vnc network connection

Since: 2.1

type VncBasicInfo struct {
    Host      string               `json:"host"`      // IP address
    Service   string               `json:"service"`   // The service name of the vnc port. This may depend on the host system's service database so symbolic names should not be relied on.
    Family    NetworkAddressFamily `json:"family"`    // address family
    Websocket bool                 `json:"websocket"` // true in case the socket is a websocket (since 2.3).
}

type VncClientInfo

Information about a connected VNC client.

Since: 0.14

type VncClientInfo struct {
    // Base type for this struct
    VncBasicInfo
    X509Dname    *string `json:"x509_dname,omitempty"`    // If x509 authentication is in use, the Distinguished Name of the client.
    SaslUsername *string `json:"sasl_username,omitempty"` // If SASL authentication is in use, the SASL username used for authentication.
}

type VncConnectedEvent

Emitted when a VNC client establishes a connection

Note: This event is emitted before any authentication takes place, thus the authentication ID is not provided

Since: 0.13

Example: <- { "event": "VNC_CONNECTED",

"data": {
      "server": { "auth": "sasl", "family": "ipv4",
                  "service": "5901", "host": "0.0.0.0" },
      "client": { "family": "ipv4", "service": "58425",
                  "host": "127.0.0.1" } },
"timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
type VncConnectedEvent struct {
    Server VncServerInfo `json:"server"` // server information
    Client VncBasicInfo  `json:"client"` // client information
}

type VncDisconnectedEvent

Emitted when the connection is closed

Since: 0.13

Example: <- { "event": "VNC_DISCONNECTED",

"data": {
      "server": { "auth": "sasl", "family": "ipv4",
                  "service": "5901", "host": "0.0.0.0" },
      "client": { "family": "ipv4", "service": "58425",
                  "host": "127.0.0.1", "sasl_username": "luiz" } },
"timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
type VncDisconnectedEvent struct {
    Server VncServerInfo `json:"server"` // server information
    Client VncClientInfo `json:"client"` // client information
}

type VncInfo

Information about the VNC session.

Since: 0.14

type VncInfo struct {
    Enabled bool                  `json:"enabled"`           // true if the VNC server is enabled, false otherwise
    Host    *string               `json:"host,omitempty"`    // The hostname the VNC server is bound to. This depends on the name resolution on the host and may be an IP address.
    Family  *NetworkAddressFamily `json:"family,omitempty"`  // - 'ipv6' if the host is listening for IPv6 connections - 'ipv4' if the host is listening for IPv4 connections - 'unix' if the host is listening on a unix domain socket - 'unknown' otherwise
    Service *string               `json:"service,omitempty"` // The service name of the server's port. This may depends on the host system's service database so symbolic names should not be relied on.
    Auth    *string               `json:"auth,omitempty"`    // the current authentication type used by the server - 'none' if no authentication is being used - 'vnc' if VNC authentication is being used - 'vencrypt+plain' if VEncrypt is used with plain text authentication - 'vencrypt+tls+none' if VEncrypt is used with TLS and no authentication - 'vencrypt+tls+vnc' if VEncrypt is used with TLS and VNC authentication - 'vencrypt+tls+plain' if VEncrypt is used with TLS and plain text auth - 'vencrypt+x509+none' if VEncrypt is used with x509 and no auth - 'vencrypt+x509+vnc' if VEncrypt is used with x509 and VNC auth - 'vencrypt+x509+plain' if VEncrypt is used with x509 and plain text auth - 'vencrypt+tls+sasl' if VEncrypt is used with TLS and SASL auth - 'vencrypt+x509+sasl' if VEncrypt is used with x509 and SASL auth
    Clients []VncClientInfo       `json:"clients,omitempty"` // a list of @VncClientInfo of all currently connected clients
}

type VncInfo2

Information about a vnc server

Since: 2.3

type VncInfo2 struct {
    Id       string              `json:"id"`                 // vnc server name.
    Server   []VncServerInfo2    `json:"server"`             // A list of @VncBasincInfo describing all listening sockets. The list can be empty (in case the vnc server is disabled). It also may have multiple entries: normal + websocket, possibly also ipv4 + ipv6 in the future.
    Clients  []VncClientInfo     `json:"clients"`            // A list of @VncClientInfo of all currently connected clients. The list can be empty, for obvious reasons.
    Auth     VncPrimaryAuth      `json:"auth"`               // The current authentication type used by the non-websockets servers
    Vencrypt *VncVencryptSubAuth `json:"vencrypt,omitempty"` // The vencrypt authentication type used by the servers, only specified in case auth == vencrypt.
    Display  *string             `json:"display,omitempty"`  // The display device the vnc server is linked to.
}

type VncInitializedEvent

Emitted after authentication takes place (if any) and the VNC session is made active

Since: 0.13

Example: <- { "event": "VNC_INITIALIZED",

"data": {
     "server": { "auth": "sasl", "family": "ipv4",
                 "service": "5901", "host": "0.0.0.0"},
     "client": { "family": "ipv4", "service": "46089",
                 "host": "127.0.0.1", "sasl_username": "luiz" } },
"timestamp": { "seconds": 1263475302, "microseconds": 150772 } }
type VncInitializedEvent struct {
    Server VncServerInfo `json:"server"` // server information
    Client VncClientInfo `json:"client"` // client information
}

type VncPrimaryAuth

vnc primary authentication method.

Since: 2.3

type VncPrimaryAuth int32
const (
    VncPrimaryAuthNone VncPrimaryAuth = iota
    VncPrimaryAuthVnc
    VncPrimaryAuthRa2
    VncPrimaryAuthRa2Ne
    VncPrimaryAuthTight
    VncPrimaryAuthUltra
    VncPrimaryAuthTls
    VncPrimaryAuthVencrypt
    VncPrimaryAuthSasl
)

func (VncPrimaryAuth) MarshalJSON

func (s VncPrimaryAuth) MarshalJSON() ([]byte, error)

func (*VncPrimaryAuth) UnmarshalJSON

func (s *VncPrimaryAuth) UnmarshalJSON(data []byte) error

type VncServerInfo

The network connection information for server

Since: 2.1

type VncServerInfo struct {
    // Base type for this struct
    VncBasicInfo
    Auth *string `json:"auth,omitempty"` // authentication method used for the plain (non-websocket) VNC server
}

type VncServerInfo2

The network connection information for server

Since: 2.9

type VncServerInfo2 struct {
    // Base type for this struct
    VncBasicInfo
    Auth     VncPrimaryAuth      `json:"auth"`               // The current authentication type used by the servers
    Vencrypt *VncVencryptSubAuth `json:"vencrypt,omitempty"` // The vencrypt sub authentication type used by the servers, only specified in case auth == vencrypt.
}

type VncVencryptSubAuth

vnc sub authentication method with vencrypt.

Since: 2.3

type VncVencryptSubAuth int32
const (
    VncVencryptSubAuthPlain VncVencryptSubAuth = iota
    VncVencryptSubAuthTlsNone
    VncVencryptSubAuthX509None
    VncVencryptSubAuthTlsVnc
    VncVencryptSubAuthX509Vnc
    VncVencryptSubAuthTlsPlain
    VncVencryptSubAuthX509Plain
    VncVencryptSubAuthTlsSasl
    VncVencryptSubAuthX509Sasl
)

func (VncVencryptSubAuth) MarshalJSON

func (s VncVencryptSubAuth) MarshalJSON() ([]byte, error)

func (*VncVencryptSubAuth) UnmarshalJSON

func (s *VncVencryptSubAuth) UnmarshalJSON(data []byte) error

type VserportChangeEvent

Emitted when the guest opens or closes a virtio-serial port.

Note: This event is rate-limited.

Since: 2.1

Example: <- { "event": "VSERPORT_CHANGE",

"data": { "id": "channel0", "open": true },
"timestamp": { "seconds": 1401385907, "microseconds": 422329 } }
type VserportChangeEvent struct {
    Id   string `json:"id"`   // device identifier of the virtio-serial port
    Open bool   `json:"open"` // true if the guest has opened the virtio-serial port
}

type VsockSocketAddress

Captures a socket address in the vsock namespace.

Note: string types are used to allow for possible future hostname or service resolution support.

Since: 2.8

type VsockSocketAddress struct {
    Cid  string `json:"cid"`  // unique host identifier
    Port string `json:"port"` // port
}

type VsockSocketAddressWrapper

Since: 2.8

type VsockSocketAddressWrapper struct {
    Data VsockSocketAddress `json:"data"`
}

type WakeupEvent

Emitted when the guest has woken up from suspend state and is running

Since: 1.1

Example: <- { "event": "WAKEUP",

"timestamp": { "seconds": 1344522075, "microseconds": 745528 } }
type WakeupEvent struct{}

type WatchdogAction

An enumeration of the actions taken when the watchdog device's timer is expired

Since: 2.1

type WatchdogAction int32
const (
    WatchdogActionReset     WatchdogAction = iota
    WatchdogActionShutdown                 // system shutdown, note that it is similar to @powerdown, which tries to set to system status and notify guest
    WatchdogActionPoweroff                 // system poweroff, the emulator program exits
    WatchdogActionPause                    // system pauses, similar to @stop
    WatchdogActionDebug                    // system enters debug state
    WatchdogActionNone                     // nothing is done
    WatchdogActionInjectNmi                // a non-maskable interrupt is injected into the first VCPU (all VCPUS on x86) (since 2.4)
)

func (WatchdogAction) MarshalJSON

func (s WatchdogAction) MarshalJSON() ([]byte, error)

func (*WatchdogAction) UnmarshalJSON

func (s *WatchdogAction) UnmarshalJSON(data []byte) error

type WatchdogEvent

Emitted when the watchdog device's timer is expired

Note: If action is "reset", "shutdown", or "pause" the WATCHDOG event is followed respectively by the RESET, SHUTDOWN, or STOP events

Note: This event is rate-limited.

Since: 0.13

Example: <- { "event": "WATCHDOG",

"data": { "action": "reset" },
"timestamp": { "seconds": 1267061043, "microseconds": 959568 } }
type WatchdogEvent struct {
    Action WatchdogAction `json:"action"` // action that has been taken
}

type WatchdogSetActionCommand

Set watchdog action

Since: 2.11

type WatchdogSetActionCommand struct {
    Action WatchdogAction `json:"action"`
}

type X86CPUFeatureWordInfo

Information about a X86 CPU feature word

Since: 1.5

type X86CPUFeatureWordInfo struct {
    CpuidInputEax int64            `json:"cpuid-input-eax"`           // Input EAX value for CPUID instruction for that feature word
    CpuidInputEcx *int64           `json:"cpuid-input-ecx,omitempty"` // Input ECX value for CPUID instruction for that feature word
    CpuidRegister X86CPURegister32 `json:"cpuid-register"`            // Output register containing the feature bits
    Features      int64            `json:"features"`                  // value of output register, containing the feature bits
}

type X86CPURegister32

A X86 32-bit register

Since: 1.5

type X86CPURegister32 int32
const (
    X86CPURegister32Eax X86CPURegister32 = iota
    X86CPURegister32Ebx
    X86CPURegister32Ecx
    X86CPURegister32Edx
    X86CPURegister32Esp
    X86CPURegister32Ebp
    X86CPURegister32Esi
    X86CPURegister32Edi
)

func (X86CPURegister32) MarshalJSON

func (s X86CPURegister32) MarshalJSON() ([]byte, error)

func (*X86CPURegister32) UnmarshalJSON

func (s *X86CPURegister32) UnmarshalJSON(data []byte) error

type XBZRLECacheStats

Detailed XBZRLE migration cache statistics

Since: 1.2

type XBZRLECacheStats struct {
    CacheSize     uint64  `json:"cache-size"`      // XBZRLE cache size
    Bytes         int64   `json:"bytes"`           // amount of bytes already transferred to the target VM
    Pages         int64   `json:"pages"`           // amount of pages transferred to the target VM
    CacheMiss     int64   `json:"cache-miss"`      // number of cache miss
    CacheMissRate float64 `json:"cache-miss-rate"` // rate of cache miss (since 2.1)
    EncodingRate  float64 `json:"encoding-rate"`   // rate of encoded bytes (since 5.1)
    Overflow      int64   `json:"overflow"`        // number of overflows
}

type XBlockdevAmendCommand

Starts a job to amend format specific options of an existing open block device The job is automatically finalized, but a manual job-dismiss is required.

Since: 5.1

type XBlockdevAmendCommand struct {
    JobId    string               `json:"job-id"`          // Identifier for the newly created job.
    NodeName string               `json:"node-name"`       // Name of the block node to work on
    Options  BlockdevAmendOptions `json:"options"`         // Options (driver specific)
    Force    *bool                `json:"force,omitempty"` // Allow unsafe operations, format specific For luks that allows erase of the last active keyslot (permanent loss of data), and replacement of an active keyslot (possible loss of data if IO error happens)
}

type XBlockdevChangeCommand

Dynamically reconfigure the block driver state graph. It can be used to add, remove, insert or replace a graph node. Currently only the Quorum driver implements this feature to add or remove its child. This is useful to fix a broken quorum child.

If @node is specified, it will be inserted under @parent. @child may not be specified in this case. If both @parent and @child are specified but @node is not, @child will be detached from @parent.

Since: 2.7

Example: 1. Add a new node to a quorum -> { "execute": "blockdev-add",

"arguments": {
    "driver": "raw",
    "node-name": "new_node",
    "file": { "driver": "file",
              "filename": "test.raw" } } }

<- { "return": {} } -> { "execute": "x-blockdev-change",

"arguments": { "parent": "disk1",
               "node": "new_node" } }

<- { "return": {} }

2. Delete a quorum's node -> { "execute": "x-blockdev-change",

"arguments": { "parent": "disk1",
               "child": "children.1" } }

<- { "return": {} }

type XBlockdevChangeCommand struct {
    Parent string  `json:"parent"`          // the id or name of the parent node.
    Child  *string `json:"child,omitempty"` // the name of a child under the given parent node.
    Node   *string `json:"node,omitempty"`  // the name of the node that will be added.
}

type XBlockdevSetIothreadCommand

Move @node and its children into the @iothread. If @iothread is null then move @node and its children into the main loop.

The node must not be attached to a BlockBackend.

Since: 2.12

Example: 1. Move a node into an IOThread -> { "execute": "x-blockdev-set-iothread",

"arguments": { "node-name": "disk1",
               "iothread": "iothread0" } }

<- { "return": {} }

2. Move a node into the main loop -> { "execute": "x-blockdev-set-iothread",

"arguments": { "node-name": "disk1",
               "iothread": null } }

<- { "return": {} }

type XBlockdevSetIothreadCommand struct {
    NodeName string    `json:"node-name"`       // the name of the block driver node
    Iothread StrOrNull `json:"iothread"`        // the name of the IOThread object or null for the main loop
    Force    *bool     `json:"force,omitempty"` // true if the node and its children should be moved when a BlockBackend is already attached
}

type XColoLostHeartbeatCommand

Tell qemu that heartbeat is lost, request it to do takeover procedures. If this command is sent to the PVM, the Primary side will exit COLO mode. If sent to the Secondary, the Secondary side will run failover work, then takes over server operation to become the service VM.

Since: 2.8

Example: -> { "execute": "x-colo-lost-heartbeat" } <- { "return": {} }

type XColoLostHeartbeatCommand struct{}

type XDbgBlockGraph

Block Graph - list of nodes and list of edges.

Since: 4.0

type XDbgBlockGraph struct {
    Nodes []XDbgBlockGraphNode `json:"nodes"`
    Edges []XDbgBlockGraphEdge `json:"edges"`
}

type XDbgBlockGraphEdge

Block Graph edge description for x-debug-query-block-graph.

Since: 4.0

type XDbgBlockGraphEdge struct {
    Parent     uint64            `json:"parent"`      // parent id
    Child      uint64            `json:"child"`       // child id
    Name       string            `json:"name"`        // name of the relation (examples are 'file' and 'backing')
    Perm       []BlockPermission `json:"perm"`        // granted permissions for the parent operating on the child
    SharedPerm []BlockPermission `json:"shared-perm"` // permissions that can still be granted to other users of the child while it is still attached to this parent
}

type XDbgBlockGraphNode

Since: 4.0

type XDbgBlockGraphNode struct {
    Id   uint64                 `json:"id"`   // Block graph node identifier. This @id is generated only for x-debug-query-block-graph and does not relate to any other identifiers in Qemu.
    Type XDbgBlockGraphNodeType `json:"type"` // Type of graph node. Can be one of block-backend, block-job or block-driver-state.
    Name string                 `json:"name"` // Human readable name of the node. Corresponds to node-name for block-driver-state nodes; is not guaranteed to be unique in the whole graph (with block-jobs and block-backends).
}

type XDbgBlockGraphNodeType

Since: 4.0

type XDbgBlockGraphNodeType int32
const (
    XDbgBlockGraphNodeTypeBlockBackend XDbgBlockGraphNodeType = iota
    XDbgBlockGraphNodeTypeBlockJob                            // corresponds to BlockJob
    XDbgBlockGraphNodeTypeBlockDriver                         // corresponds to BlockDriverState
)

func (XDbgBlockGraphNodeType) MarshalJSON

func (s XDbgBlockGraphNodeType) MarshalJSON() ([]byte, error)

func (*XDbgBlockGraphNodeType) UnmarshalJSON

func (s *XDbgBlockGraphNodeType) UnmarshalJSON(data []byte) error

type XDebugBlockDirtyBitmapSha256Command

Get bitmap SHA256.

Returns: - BlockDirtyBitmapSha256 on success - If @node is not a valid block device, DeviceNotFound - If @name is not found or if hashing has failed, GenericError with an

explanation

Since: 2.10

type XDebugBlockDirtyBitmapSha256Command struct {
    BlockDirtyBitmap
}

type XDebugQueryBlockGraphCommand

Get the block graph.

Since: 4.0

type XDebugQueryBlockGraphCommand struct{}

type XExitPreconfigCommand

Exit from "preconfig" state

This command makes QEMU exit the preconfig state and proceed with VM initialization using configuration data provided on the command line and via the QMP monitor during the preconfig state. The command is only available during the preconfig state (i.e. when the --preconfig command line option was in use).

None: Since 3.0

Returns: nothing

Example: -> { "execute": "x-exit-preconfig" } <- { "return": {} }

type XExitPreconfigCommand struct{}

type XQueryIrqCommand

Query interrupt statistics

Returns: interrupt statistics

Since: 6.2

type XQueryIrqCommand struct{}

type XQueryJitCommand

Query TCG compiler statistics

Returns: TCG compiler statistics

Since: 6.2

type XQueryJitCommand struct{}

type XQueryNumaCommand

Query NUMA topology information

Returns: topology information

Since: 6.2

type XQueryNumaCommand struct{}

type XQueryOpcountCommand

Query TCG opcode counters

Returns: TCG opcode counters

Since: 6.2

type XQueryOpcountCommand struct{}

type XQueryProfileCommand

Query TCG profiling information

Returns: profile information

Since: 6.2

type XQueryProfileCommand struct{}

type XQueryRamblockCommand

Query system ramblock information

Returns: system ramblock information

Since: 6.2

type XQueryRamblockCommand struct{}

type XQueryRdmaCommand

Query RDMA state

Returns: RDMA state

Since: 6.2

type XQueryRdmaCommand struct{}

type XQueryRomsCommand

Query information on the registered ROMS

Returns: registered ROMs

Since: 6.2

type XQueryRomsCommand struct{}

type XQueryUsbCommand

Query information on the USB devices

Returns: USB device information

Since: 6.2

type XQueryUsbCommand struct{}

type XenColoDoCheckpointCommand

Xen uses this command to notify replication to trigger a checkpoint.

Returns: nothing.

Example: -> { "execute": "xen-colo-do-checkpoint" } <- { "return": {} }

Since: 2.9

type XenColoDoCheckpointCommand struct{}

type XenLoadDevicesStateCommand

Load the state of all devices from file. The RAM and the block devices of the VM are not loaded by this command.

Since: 2.7

Example: -> { "execute": "xen-load-devices-state",

"arguments": { "filename": "/tmp/resume" } }

<- { "return": {} }

type XenLoadDevicesStateCommand struct {
    Filename string `json:"filename"` // the file to load the state of the devices from as binary data. See xen-save-devices-state.txt for a description of the binary format.
}

type XenSaveDevicesStateCommand

Save the state of all devices to file. The RAM and the block devices of the VM are not saved by this command.

Returns: Nothing on success

Since: 1.1

Example: -> { "execute": "xen-save-devices-state",

"arguments": { "filename": "/tmp/save" } }

<- { "return": {} }

type XenSaveDevicesStateCommand struct {
    Filename string `json:"filename"`       // the file to save the state of the devices to as binary data. See xen-save-devices-state.txt for a description of the binary format.
    Live     *bool  `json:"live,omitempty"` // Optional argument to ask QEMU to treat this command as part of a live migration. Default to true. (since 2.11)
}

type XenSetGlobalDirtyLogCommand

Enable or disable the global dirty log mode.

Returns: nothing

Since: 1.3

Example: -> { "execute": "xen-set-global-dirty-log",

"arguments": { "enable": true } }

<- { "return": {} }

type XenSetGlobalDirtyLogCommand struct {
    Enable bool `json:"enable"` // true to enable, false to disable.
}

type XenSetReplicationCommand

Enable or disable replication.

Returns: nothing.

Example: -> { "execute": "xen-set-replication",

"arguments": {"enable": true, "primary": false} }

<- { "return": {} }

Since: 2.9

type XenSetReplicationCommand struct {
    Enable   bool  `json:"enable"`             // true to enable, false to disable.
    Primary  bool  `json:"primary"`            // true for primary or false for secondary.
    Failover *bool `json:"failover,omitempty"` // true to do failover, false to stop. but cannot be specified if 'enable' is true. default value is false.
}

type YankCommand

Try to recover from hanging QEMU by yanking the specified instances. See @YankInstance for more information.

Takes a list of @YankInstance as argument.

Returns: - Nothing on success - @DeviceNotFound error, if any of the YankInstances doesn't exist

Example: -> { "execute": "yank",

"arguments": {
    "instances": [
         { "type": "block-node",
           "node-name": "nbd0" }
    ] } }

<- { "return": {} }

Since: 6.0

type YankCommand struct {
    Instances []YankInstance `json:"instances"`
}

type YankInstance

A yank instance can be yanked with the @yank qmp command to recover from a hanging QEMU.

Currently implemented yank instances:

- nbd block device:
  Yanking it will shut down the connection to the nbd server without
  attempting to reconnect.
- socket chardev:
  Yanking it will shut down the connected socket.
- migration:
  Yanking it will shut down all migration connections. Unlike
  @migrate_cancel, it will not notify the migration process, so migration
  will go into @failed state, instead of @cancelled state. @yank should be
  used to recover from hangs.

Since: 6.0

type YankInstance struct {
    // Base type for this struct
    YankInstanceBase
    // Value based on @type, possible types:
    // * YankInstanceBlockNode
    // * YankInstanceChardev
    Value Any
}

func (YankInstance) MarshalJSON

func (s YankInstance) MarshalJSON() ([]byte, error)

func (*YankInstance) UnmarshalJSON

func (s *YankInstance) UnmarshalJSON(data []byte) error

type YankInstanceBase

A yank instance can be yanked with the @yank qmp command to recover from a hanging QEMU.

Currently implemented yank instances:

- nbd block device:
  Yanking it will shut down the connection to the nbd server without
  attempting to reconnect.
- socket chardev:
  Yanking it will shut down the connected socket.
- migration:
  Yanking it will shut down all migration connections. Unlike
  @migrate_cancel, it will not notify the migration process, so migration
  will go into @failed state, instead of @cancelled state. @yank should be
  used to recover from hangs.

Since: 6.0

type YankInstanceBase struct {
    Type YankInstanceType `json:"type"`
}

type YankInstanceBlockNode

Specifies which block graph node to yank. See @YankInstance for more information.

Since: 6.0

type YankInstanceBlockNode struct {
    NodeName string `json:"node-name"` // the name of the block graph node
}

type YankInstanceChardev

Specifies which character device to yank. See @YankInstance for more information.

Since: 6.0

type YankInstanceChardev struct {
    Id string `json:"id"` // the chardev's ID
}

type YankInstanceType

An enumeration of yank instance types. See @YankInstance for more information.

Since: 6.0

type YankInstanceType int32
const (
    YankInstanceTypeBlockNode YankInstanceType = iota
    YankInstanceTypeChardev
    YankInstanceTypeMigration
)

func (YankInstanceType) MarshalJSON

func (s YankInstanceType) MarshalJSON() ([]byte, error)

func (*YankInstanceType) UnmarshalJSON

func (s *YankInstanceType) UnmarshalJSON(data []byte) error