garm/vendor/github.com/lxc/lxd/shared/api/resource.go
Gabriel Adrian Samfira bbbe67bf7c Vendor packages and add Makefile
* Vendors packages
  * Adds a Makefile that uses docker to build a static binary against musl
using alpine linux.

Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
2022-06-30 10:20:32 +00:00

1049 lines
27 KiB
Go

package api
// Resources represents the system resources available for LXD
//
// swagger:model
//
// API extension: resources
type Resources struct {
// CPU information
CPU ResourcesCPU `json:"cpu" yaml:"cpu"`
// Memory information
Memory ResourcesMemory `json:"memory" yaml:"memory"`
// GPU devices
//
// API extension: resources_gpu
GPU ResourcesGPU `json:"gpu" yaml:"gpu"`
// Network devices
//
// API extension: resources_v2
Network ResourcesNetwork `json:"network" yaml:"network"`
// Storage devices
//
// API extension: resources_v2
Storage ResourcesStorage `json:"storage" yaml:"storage"`
// USB devices
//
// API extension: resources_usb_pci
USB ResourcesUSB `json:"usb" yaml:"usb"`
// PCI devices
//
// API extension: resources_usb_pci
PCI ResourcesPCI `json:"pci" yaml:"pci"`
// System information
//
// API extension: resources_system
System ResourcesSystem `json:"system" yaml:"system"`
}
// ResourcesCPU represents the cpu resources available on the system
//
// swagger:model
//
// API extension: resources
type ResourcesCPU struct {
// Architecture name
// Example: x86_64
//
// API extension: resources_v2
Architecture string `json:"architecture" yaml:"architecture"`
// List of CPU sockets
Sockets []ResourcesCPUSocket `json:"sockets" yaml:"sockets"`
// Total number of CPU threads (from all sockets and cores)
// Example: 1
Total uint64 `json:"total" yaml:"total"`
}
// ResourcesCPUSocket represents a CPU socket on the system
//
// swagger:model
//
// API extension: resources_v2
type ResourcesCPUSocket struct {
// Product name
// Example: Intel(R) Core(TM) i5-7300U CPU @ 2.60GHz
Name string `json:"name,omitempty" yaml:"name,omitempty"`
// Vendor name
// Example: GenuineIntel
Vendor string `json:"vendor,omitempty" yaml:"vendor,omitempty"`
// Socket number
// Example: 0
Socket uint64 `json:"socket" yaml:"socket"`
// List of CPU caches
Cache []ResourcesCPUCache `json:"cache,omitempty" yaml:"cache,omitempty"`
// List of CPU cores
Cores []ResourcesCPUCore `json:"cores" yaml:"cores"`
// Current CPU frequency (Mhz)
// Example: 3499
Frequency uint64 `json:"frequency,omitempty" yaml:"frequency,omitempty"`
// Minimum CPU frequency (Mhz)
// Example: 400
FrequencyMinimum uint64 `json:"frequency_minimum,omitempty" yaml:"frequency_minimum,omitempty"`
// Maximum CPU frequency (Mhz)
// Example: 3500
FrequencyTurbo uint64 `json:"frequency_turbo,omitempty" yaml:"frequency_turbo,omitempty"`
}
// ResourcesCPUCache represents a CPU cache
//
// swagger:model
//
// API extension: resources_v2
type ResourcesCPUCache struct {
// Cache level (usually a number from 1 to 3)
// Example: 1
Level uint64 `json:"level" yaml:"level"`
// Type of cache (Data, Instruction, Unified, ...)
// Example: Data
Type string `json:"type" yaml:"type"`
// Size of the cache (in bytes)
// Example: 32768
Size uint64 `json:"size" yaml:"size"`
}
// ResourcesCPUCore represents a CPU core on the system
//
// swagger:model
//
// API extension: resources_v2
type ResourcesCPUCore struct {
// Core identifier within the socket
// Example: 0
Core uint64 `json:"core" yaml:"core"`
// What die the CPU is a part of (for chiplet designs)
// Example: 0
//
// API extension: resources_cpu_core_die
Die uint64 `json:"die" yaml:"die"`
// List of threads
Threads []ResourcesCPUThread `json:"threads" yaml:"threads"`
// Current frequency
// Example: 3500
Frequency uint64 `json:"frequency,omitempty" yaml:"frequency,omitempty"`
}
// ResourcesCPUThread represents a CPU thread on the system
//
// swagger:model
//
// API extension: resources_v2
type ResourcesCPUThread struct {
// Thread ID (used for CPU pinning)
// Example: 0
ID int64 `json:"id" yaml:"id"`
// NUMA node the thread is a part of
// Example: 0
NUMANode uint64 `json:"numa_node" yaml:"numa_node"`
// Thread identifier within the core
// Example: 0
Thread uint64 `json:"thread" yaml:"thread"`
// Whether the thread is online (enabled)
// Example: true
Online bool `json:"online" yaml:"online"`
// Whether the thread has been isolated (outside of normal scheduling)
// Example: false
//
// API extension: resource_cpu_isolated
Isolated bool `json:"isolated" yaml:"isolated"`
}
// ResourcesGPU represents the GPU resources available on the system
//
// swagger:model
//
// API extension: resources_gpu
type ResourcesGPU struct {
// List of GPUs
Cards []ResourcesGPUCard `json:"cards" yaml:"cards"`
// Total number of GPUs
// Example: 1
Total uint64 `json:"total" yaml:"total"`
}
// ResourcesGPUCard represents a GPU card on the system
//
// swagger:model
//
// API extension: resources_v2
type ResourcesGPUCard struct {
// Kernel driver currently associated with the GPU
// Example: i915
Driver string `json:"driver,omitempty" yaml:"driver,omitempty"`
// Version of the kernel driver
// Example: 5.8.0-36-generic
DriverVersion string `json:"driver_version,omitempty" yaml:"driver_version,omitempty"`
// DRM information (if card is in used by the host)
DRM *ResourcesGPUCardDRM `json:"drm,omitempty" yaml:"drm,omitempty"`
// SRIOV information (when supported by the card)
SRIOV *ResourcesGPUCardSRIOV `json:"sriov,omitempty" yaml:"sriov,omitempty"`
// NVIDIA specific information
Nvidia *ResourcesGPUCardNvidia `json:"nvidia,omitempty" yaml:"nvidia,omitempty"`
// Map of available mediated device profiles
// Example: null
//
// API extension: resources_gpu_mdev
Mdev map[string]ResourcesGPUCardMdev `json:"mdev,omitempty" yaml:"mdev,omitempty"`
// NUMA node the GPU is a part of
// Example: 0
NUMANode uint64 `json:"numa_node" yaml:"numa_node"`
// PCI address
// Example: 0000:00:02.0
PCIAddress string `json:"pci_address,omitempty" yaml:"pci_address,omitempty"`
// Name of the vendor
// Example: Intel Corporation
Vendor string `json:"vendor,omitempty" yaml:"vendor,omitempty"`
// PCI ID of the vendor
// Example: 8086
VendorID string `json:"vendor_id,omitempty" yaml:"vendor_id,omitempty"`
// Name of the product
// Example: HD Graphics 620
Product string `json:"product,omitempty" yaml:"product,omitempty"`
// PCI ID of the product
// Example: 5916
ProductID string `json:"product_id,omitempty" yaml:"product_id,omitempty"`
// USB address (for USB cards)
// Example: 2:7
//
// API extension: resources_gpu_usb
USBAddress string `json:"usb_address,omitempty" yaml:"usb_address,omitempty"`
}
// ResourcesGPUCardDRM represents the Linux DRM configuration of the GPU
//
// swagger:model
//
// API extension: resources_v2
type ResourcesGPUCardDRM struct {
// DRM card ID
// Example: 0
ID uint64 `json:"id" yaml:"id"`
// Card device name
// Example: card0
CardName string `json:"card_name" yaml:"card_name"`
// Card device number
// Example: 226:0
CardDevice string `json:"card_device" yaml:"card_device"`
// Control device name
// Example: controlD64
ControlName string `json:"control_name,omitempty" yaml:"control_name,omitempty"`
// Control device number
// Example: 226:0
ControlDevice string `json:"control_device,omitempty" yaml:"control_device,omitempty"`
// Render device name
// Example: renderD128
RenderName string `json:"render_name,omitempty" yaml:"render_name,omitempty"`
// Render device number
// Example: 226:128
RenderDevice string `json:"render_device,omitempty" yaml:"render_device,omitempty"`
}
// ResourcesGPUCardSRIOV represents the SRIOV configuration of the GPU
//
// swagger:model
//
// API extension: resources_v2
type ResourcesGPUCardSRIOV struct {
// Number of VFs currently configured
// Example: 0
CurrentVFs uint64 `json:"current_vfs" yaml:"current_vfs"`
// Maximum number of supported VFs
// Example: 0
MaximumVFs uint64 `json:"maximum_vfs" yaml:"maximum_vfs"`
// List of VFs (as additional GPU devices)
// Example: null
VFs []ResourcesGPUCard `json:"vfs" yaml:"vfs"`
}
// ResourcesGPUCardNvidia represents additional information for NVIDIA GPUs
//
// swagger:model
//
// API extension: resources_gpu
type ResourcesGPUCardNvidia struct {
// Version of the CUDA API
// Example: 11.0
CUDAVersion string `json:"cuda_version,omitempty" yaml:"cuda_version,omitempty"`
// Version of the NVRM (usually driver version)
// Example: 450.102.04
NVRMVersion string `json:"nvrm_version,omitempty" yaml:"nvrm_version,omitempty"`
// Brand name
// Example: GeForce
Brand string `json:"brand" yaml:"brand"`
// Model name
// Example: GeForce GT 730
Model string `json:"model" yaml:"model"`
// GPU UUID
// Example: GPU-6ddadebd-dafe-2db9-f10f-125719770fd3
UUID string `json:"uuid,omitempty" yaml:"uuid,omitempty"`
// Architecture (generation)
// Example: 3.5
Architecture string `json:"architecture,omitempty" yaml:"architecture,omitempty"`
// Card device name
// Example: nvidia0
//
// API extension: resources_v2
CardName string `json:"card_name" yaml:"card_name"`
// Card device number
// Example: 195:0
//
// API extension: resources_v2
CardDevice string `json:"card_device" yaml:"card_device"`
}
// ResourcesGPUCardMdev represents the mediated devices configuration of the GPU
//
// swagger:model
//
// API extension: resources_gpu_mdev
type ResourcesGPUCardMdev struct {
// The mechanism used by this device
// Example: vfio-pci
API string `json:"api" yaml:"api"`
// Number of available devices of this profile
// Example: 2
Available uint64 `json:"available" yaml:"available"`
// Profile name
// Example: i915-GVTg_V5_8
Name string `json:"name,omitempty" yaml:"name,omitempty"`
// Profile description
// Example: low_gm_size: 128MB\nhigh_gm_size: 512MB\nfence: 4\nresolution: 1920x1200\nweight: 4
Description string `json:"description,omitempty" yaml:"description,omitempty"`
// List of active devices (UUIDs)
// Example: ["42200aac-0977-495c-8c9e-6c51b9092a01", "b4950c00-1437-41d9-88f6-28d61cf9b9ef"]
Devices []string `json:"devices" yaml:"devices"`
}
// ResourcesNetwork represents the network cards available on the system
//
// swagger:model
//
// API extension: resources_v2
type ResourcesNetwork struct {
// List of network cards
Cards []ResourcesNetworkCard `json:"cards" yaml:"cards"`
// Total number of network cards
// Example: 1
Total uint64 `json:"total" yaml:"total"`
}
// ResourcesNetworkCard represents a network card on the system
//
// swagger:model
//
// API extension: resources_v2
type ResourcesNetworkCard struct {
// Kernel driver currently associated with the card
// Example: atlantic
Driver string `json:"driver,omitempty" yaml:"driver,omitempty"`
// Version of the kernel driver
// Example: 5.8.0-36-generic
DriverVersion string `json:"driver_version,omitempty" yaml:"driver_version,omitempty"`
// List of ports on the card
Ports []ResourcesNetworkCardPort `json:"ports,omitempty" yaml:"ports,omitempty"`
// SRIOV information (when supported by the card)
SRIOV *ResourcesNetworkCardSRIOV `json:"sriov,omitempty" yaml:"sriov,omitempty"`
// NUMA node the card is a part of
// Example: 0
NUMANode uint64 `json:"numa_node" yaml:"numa_node"`
// PCI address (for PCI cards)
// Example: 0000:0d:00.0
PCIAddress string `json:"pci_address,omitempty" yaml:"pci_address,omitempty"`
// Name of the vendor
// Example: Aquantia Corp.
Vendor string `json:"vendor,omitempty" yaml:"vendor,omitempty"`
// PCI ID of the vendor
// Example: 1d6a
VendorID string `json:"vendor_id,omitempty" yaml:"vendor_id,omitempty"`
// Name of the product
// Example: AQC107 NBase-T/IEEE
Product string `json:"product,omitempty" yaml:"product,omitempty"`
// PCI ID of the product
// Example: 87b1
ProductID string `json:"product_id,omitempty" yaml:"product_id,omitempty"`
// Current firmware version
// Example: 3.1.100
//
// API extension: resources_network_firmware
FirmwareVersion string `json:"firmware_version,omitempty" yaml:"firmware_version,omitempty"`
// USB address (for USB cards)
// Example: 2:7
//
// API extension: resources_network_usb
USBAddress string `json:"usb_address,omitempty" yaml:"usb_address,omitempty"`
}
// ResourcesNetworkCardPort represents a network port on the system
//
// swagger:model
//
// API extension: resources_v2
type ResourcesNetworkCardPort struct {
// Port identifier (interface name)
// Example: eth0
ID string `json:"id" yaml:"id"`
// MAC address
// Example: 00:23:a4:01:01:6f
Address string `json:"address,omitempty" yaml:"address,omitempty"`
// Port number
// Example: 0
Port uint64 `json:"port" yaml:"port"`
// Transport protocol
// Example: ethernet
Protocol string `json:"protocol" yaml:"protocol"`
// List of supported modes
// Example: ["100baseT/Full", "1000baseT/Full", "2500baseT/Full", "5000baseT/Full", "10000baseT/Full"]
SupportedModes []string `json:"supported_modes,omitempty" yaml:"supported_modes,omitempty"`
// List of supported port types
// Example: ["twisted pair"]
SupportedPorts []string `json:"supported_ports,omitempty" yaml:"supported_ports,omitempty"`
// Current port type
// Example: twisted pair
PortType string `json:"port_type,omitempty" yaml:"port_type,omitempty"`
// Type of transceiver used
// Example: internal
TransceiverType string `json:"transceiver_type,omitempty" yaml:"transceiver_type,omitempty"`
// Whether auto negotiation is used
// Example: true
AutoNegotiation bool `json:"auto_negotiation" yaml:"auto_negotiation"`
// Whether a link was detected
// Example: true
LinkDetected bool `json:"link_detected" yaml:"link_detected"`
// Current speed (Mbit/s)
// Example: 10000
LinkSpeed uint64 `json:"link_speed,omitempty" yaml:"link_speed,omitempty"`
// Duplex type
// Example: full
LinkDuplex string `json:"link_duplex,omitempty" yaml:"link_duplex,omitempty"`
// Additional information for infiniband devices
//
// API extension: resources_infiniband
Infiniband *ResourcesNetworkCardPortInfiniband `json:"infiniband,omitempty" yaml:"infiniband,omitempty"`
}
// ResourcesNetworkCardPortInfiniband represents the Linux Infiniband configuration for the port
//
// swagger:model
//
// API extension: resources_infiniband
type ResourcesNetworkCardPortInfiniband struct {
// ISSM device name
// Example: issm0
IsSMName string `json:"issm_name,omitempty" yaml:"issm_name,omitempty"`
// ISSM device number
// Example: 231:64
IsSMDevice string `json:"issm_device,omitempty" yaml:"issm_device,omitempty"`
// MAD device name
// Example: umad0
MADName string `json:"mad_name,omitempty" yaml:"mad_name,omitempty"`
// MAD device number
// Example: 231:0
MADDevice string `json:"mad_device,omitempty" yaml:"mad_device,omitempty"`
// Verb device name
// Example: uverbs0
VerbName string `json:"verb_name,omitempty" yaml:"verb_name,omitempty"`
// Verb device number
// Example: 231:192
VerbDevice string `json:"verb_device,omitempty" yaml:"verb_device,omitempty"`
}
// ResourcesNetworkCardSRIOV represents the SRIOV configuration of the network card
//
// swagger:model
//
// API extension: resources_v2
type ResourcesNetworkCardSRIOV struct {
// Number of VFs currently configured
// Example: 0
CurrentVFs uint64 `json:"current_vfs" yaml:"current_vfs"`
// Maximum number of supported VFs
// Example: 0
MaximumVFs uint64 `json:"maximum_vfs" yaml:"maximum_vfs"`
// List of VFs (as additional Network devices)
// Example: null
VFs []ResourcesNetworkCard `json:"vfs" yaml:"vfs"`
}
// ResourcesStorage represents the local storage
//
// swagger:model
//
// API extension: resources_v2
type ResourcesStorage struct {
// List of disks
Disks []ResourcesStorageDisk `json:"disks" yaml:"disks"`
// Total number of partitions
// Example: 1
Total uint64 `json:"total" yaml:"total"`
}
// ResourcesStorageDisk represents a disk
//
// swagger:model
//
// API extension: resources_v2
type ResourcesStorageDisk struct {
// ID of the disk (device name)
// Example: nvme0n1
ID string `json:"id" yaml:"id"`
// Device number
// Example: 259:0
Device string `json:"device" yaml:"device"`
// Disk model name
// Example: INTEL SSDPEKKW256G7
Model string `json:"model,omitempty" yaml:"model,omitempty"`
// Storage type
// Example: nvme
Type string `json:"type,omitempty" yaml:"type,omitempty"`
// Whether the disk is read-only
// Example: false
ReadOnly bool `json:"read_only" yaml:"read_only"`
// Total size of the disk (bytes)
// Example: 256060514304
Size uint64 `json:"size" yaml:"size"`
// Whether the disk is removable (hot-plug)
// Example: false
Removable bool `json:"removable" yaml:"removable"`
// WWN identifier
// Example: eui.0000000001000000e4d25cafae2e4c00
WWN string `json:"wwn,omitempty" yaml:"wwn,omitempty"`
// NUMA node the disk is a part of
// Example: 0
NUMANode uint64 `json:"numa_node" yaml:"numa_node"`
// Device by-path identifier
// Example: pci-0000:05:00.0-nvme-1
//
// API extension: resources_disk_sata
DevicePath string `json:"device_path,omitempty" yaml:"device_path,omitempty"`
// Block size
// Example: 512
//
// API extension: resources_disk_sata
BlockSize uint64 `json:"block_size" yaml:"block_size"`
// Current firmware version
// Example: PSF121C
//
// API extension: resources_disk_sata
FirmwareVersion string `json:"firmware_version,omitempty" yaml:"firmware_version,omitempty"`
// Rotation speed (RPM)
// Example: 0
//
// API extension: resources_disk_sata
RPM uint64 `json:"rpm" yaml:"rpm"`
// Serial number
// Example: BTPY63440ARH256D
//
// API extension: resources_disk_sata
Serial string `json:"serial,omitempty" yaml:"serial,omitempty"`
// Device by-id identifier
// Example: nvme-eui.0000000001000000e4d25cafae2e4c00
//
// API extension: resources_disk_id
DeviceID string `json:"device_id" yaml:"device_id"`
// List of partitions
Partitions []ResourcesStorageDiskPartition `json:"partitions" yaml:"partitions"`
// PCI address
// Example: 0000:05:00.0
//
// API extension: resources_disk_address
PCIAddress string `json:"pci_address,omitempty" yaml:"pci_address,omitempty"`
// USB address
// Example: 3:5
//
// API extension: resources_disk_address
USBAddress string `json:"usb_address,omitempty" yaml:"usb_address,omitempty"`
}
// ResourcesStorageDiskPartition represents a partition on a disk
//
// swagger:model
//
// API extension: resources_v2
type ResourcesStorageDiskPartition struct {
// ID of the partition (device name)
// Example: nvme0n1p1
ID string `json:"id" yaml:"id"`
// Device number
// Example: 259:1
Device string `json:"device" yaml:"device"`
// Whether the partition is read-only
// Example: false
ReadOnly bool `json:"read_only" yaml:"read_only"`
// Size of the partition (bytes)
// Example: 254933278208
Size uint64 `json:"size" yaml:"size"`
// Partition number
// Example: 1
Partition uint64 `json:"partition" yaml:"partition"`
}
// ResourcesMemory represents the memory resources available on the system
//
// swagger:model
//
// API extension: resources
type ResourcesMemory struct {
// List of NUMA memory nodes
// Example: null
//
// API extension: resources_v2
Nodes []ResourcesMemoryNode `json:"nodes,omitempty" yaml:"nodes,omitempty"`
// Total of memory huge pages (bytes)
// Example: 429284917248
HugepagesTotal uint64 `json:"hugepages_total" yaml:"hugepages_total"`
// Used memory huge pages (bytes)
// Example: 429284917248
HugepagesUsed uint64 `json:"hugepages_used" yaml:"hugepages_used"`
// Size of memory huge pages (bytes)
// Example: 2097152
HugepagesSize uint64 `json:"hugepages_size" yaml:"hugepages_size"`
// Used system memory (bytes)
// Example: 557450502144
Used uint64 `json:"used" yaml:"used"`
// Total system memory (bytes)
// Example: 687194767360
Total uint64 `json:"total" yaml:"total"`
}
// ResourcesMemoryNode represents the node-specific memory resources available on the system
//
// swagger:model
//
// API extension: resources_v2
type ResourcesMemoryNode struct {
// NUMA node identifier
// Example: 0
NUMANode uint64 `json:"numa_node" yaml:"numa_node"`
// Used memory huge pages (bytes)
// Example: 214536552448
HugepagesUsed uint64 `json:"hugepages_used" yaml:"hugepages_used"`
// Total of memory huge pages (bytes)
// Example: 214536552448
HugepagesTotal uint64 `json:"hugepages_total" yaml:"hugepages_total"`
// Used system memory (bytes)
// Example: 264880439296
Used uint64 `json:"used" yaml:"used"`
// Total system memory (bytes)
// Example: 343597383680
Total uint64 `json:"total" yaml:"total"`
}
// ResourcesStoragePool represents the resources available to a given storage pool
//
// swagger:model
//
// API extension: resources
type ResourcesStoragePool struct {
// Disk space usage
Space ResourcesStoragePoolSpace `json:"space,omitempty" yaml:"space,omitempty"`
// DIsk inode usage
Inodes ResourcesStoragePoolInodes `json:"inodes,omitempty" yaml:"inodes,omitempty"`
}
// ResourcesStoragePoolSpace represents the space available to a given storage pool
//
// swagger:model
//
// API extension: resources
type ResourcesStoragePoolSpace struct {
// Used disk space (bytes)
// Example: 343537419776
Used uint64 `json:"used,omitempty" yaml:"used,omitempty"`
// Total disk space (bytes)
// Example: 420100937728
Total uint64 `json:"total" yaml:"total"`
}
// ResourcesStoragePoolInodes represents the inodes available to a given storage pool
//
// swagger:model
//
// API extension: resources
type ResourcesStoragePoolInodes struct {
// Used inodes
// Example: 23937695
Used uint64 `json:"used" yaml:"used"`
// Total inodes
// Example: 30709993797
Total uint64 `json:"total" yaml:"total"`
}
// ResourcesUSB represents the USB devices available on the system
//
// swagger:model
//
// API extension: resources_usb_pci
type ResourcesUSB struct {
// List of USB devices
Devices []ResourcesUSBDevice `json:"devices" yaml:"devices"`
// Total number of USB devices
// Example: 1
Total uint64 `json:"total" yaml:"total"`
}
// ResourcesUSBDevice represents a USB device
//
// swagger:model
//
// API extension: resources_usb_pci
type ResourcesUSBDevice struct {
// USB address (bus)
// Example: 1
BusAddress uint64 `json:"bus_address" yaml:"bus_address"`
// USB address (device)
// Example: 3
DeviceAddress uint64 `json:"device_address" yaml:"device_address"`
// List of USB interfaces
Interfaces []ResourcesUSBDeviceInterface `json:"interfaces" yaml:"interfaces"`
// Name of the vendor
// Example: ATEN International Co., Ltd
Vendor string `json:"vendor" yaml:"vendor"`
// USB ID of the vendor
// Example: 0557
VendorID string `json:"vendor_id" yaml:"vendor_id"`
// Name of the product
// Example: Hermon USB hidmouse Device
Product string `json:"product" yaml:"product"`
// USB ID of the product
// Example: 2221
ProductID string `json:"product_id" yaml:"product_id"`
// Transfer speed (Mbit/s)
// Example: 12
Speed float64 `json:"speed" yaml:"speed"`
}
// ResourcesUSBDeviceInterface represents a USB device interface
//
// swagger:model
//
// API extension: resources_usb_pci
type ResourcesUSBDeviceInterface struct {
// Class of USB interface
// Example: Human Interface Device
Class string `json:"class" yaml:"class"`
// ID of the USB interface class
// Example: 3
ClassID uint64 `json:"class_id" yaml:"class_id"`
// Kernel driver currently associated with the device
// Example: usbhid
Driver string `json:"driver" yaml:"driver"`
// Version of the kernel driver
// Example: 5.8.0-36-generic
DriverVersion string `json:"driver_version" yaml:"driver_version"`
// Interface number
// Example: 0
Number uint64 `json:"number" yaml:"number"`
// Sub class of the interface
// Example: Boot Interface Subclass
SubClass string `json:"subclass" yaml:"subclass"`
// ID of the USB interface sub class
// Example: 1
SubClassID uint64 `json:"subclass_id" yaml:"subclass_id"`
}
// ResourcesPCI represents the PCI devices available on the system
//
// swagger:model
//
// API extension: resources_usb_pci
type ResourcesPCI struct {
// List of PCI devices
Devices []ResourcesPCIDevice `json:"devices" yaml:"devices"`
// Total number of PCI devices
// Example: 1
Total uint64 `json:"total" yaml:"total"`
}
// ResourcesPCIDevice represents a PCI device
//
// swagger:model
//
// API extension: resources_usb_pci
type ResourcesPCIDevice struct {
// Kernel driver currently associated with the GPU
// Example: mgag200
Driver string `json:"driver" yaml:"driver"`
// Version of the kernel driver
// Example: 5.8.0-36-generic
DriverVersion string `json:"driver_version" yaml:"driver_version"`
// NUMA node the card is a part of
// Example: 0
NUMANode uint64 `json:"numa_node" yaml:"numa_node"`
// PCI address
// Example: 0000:07:03.0
PCIAddress string `json:"pci_address" yaml:"pci_address"`
// Name of the vendor
// Example: Matrox Electronics Systems Ltd.
Vendor string `json:"vendor" yaml:"vendor"`
// PCI ID of the vendor
// Example: 102b
VendorID string `json:"vendor_id" yaml:"vendor_id"`
// Name of the product
// Example: MGA G200eW WPCM450
Product string `json:"product" yaml:"product"`
// PCI ID of the product
// Example: 0532
ProductID string `json:"product_id" yaml:"product_id"`
// IOMMU group number
// Example: 20
//
// API extension: resources_pci_iommu
IOMMUGroup uint64 `json:"iommu_group" yaml:"iommu_group"`
}
// ResourcesSystem represents the system
//
// swagger:model
//
// API extension: resources_system
type ResourcesSystem struct {
// System UUID
// Example: 7fa1c0cc-2271-11b2-a85c-aab32a05d71a
UUID string `json:"uuid" yaml:"uuid"`
// System vendor
// Example: LENOVO
Vendor string `json:"vendor" yaml:"vendor"`
// System model
// Example: 20HRCTO1WW
Product string `json:"product" yaml:"product"`
// System family
// Example: ThinkPad X1 Carbon 5th
Family string `json:"family" yaml:"family"`
// System version
// Example: ThinkPad X1 Carbon 5th
Version string `json:"version" yaml:"version"`
// System nanufacturer SKU
// LENOVO_MT_20HR_BU_Think_FM_ThinkPad X1 Carbon 5th
Sku string `json:"sku" yaml:"sku"`
// System serial number
// Example: PY3DD4X9
Serial string `json:"serial" yaml:"serial"`
// System type (unknown, physical, virtual-machine, container, ...)
// Example: physical
Type string `json:"type" yaml:"type"`
// Firmware details
Firmware *ResourcesSystemFirmware `json:"firmware" yaml:"firmware"`
// Chassis details
Chassis *ResourcesSystemChassis `json:"chassis" yaml:"chassis"`
// Motherboard details
Motherboard *ResourcesSystemMotherboard `json:"motherboard" yaml:"motherboard"`
}
// ResourcesSystemFirmware represents the system firmware
//
// swagger:model
//
// API extension: resources_system
type ResourcesSystemFirmware struct {
// Firmware vendor
// Example: Lenovo
Vendor string `json:"vendor" yaml:"vendor"`
// Firmware build date
// Example: 10/14/2020
Date string `json:"date" yaml:"date"`
// Firmware version
// Example: N1MET64W (1.49)
Version string `json:"version" yaml:"version"`
}
// ResourcesSystemChassis represents the system chassis
//
// swagger:model
//
// API extension: resources_system
type ResourcesSystemChassis struct {
// Chassis vendor
// Example: Lenovo
Vendor string `json:"vendor" yaml:"vendor"`
// Chassis type
// Example: Notebook
Type string `json:"type" yaml:"type"`
// Chassis serial number
// Example: PY3DD4X9
Serial string `json:"serial" yaml:"serial"`
// Chassis version/revision
// Example: None
Version string `json:"version" yaml:"version"`
}
// ResourcesSystemMotherboard represents the motherboard
//
// swagger:model
//
// API extension: resources_system
type ResourcesSystemMotherboard struct {
// Motherboard vendor
// Example: Lenovo
Vendor string `json:"vendor" yaml:"vendor"`
// Motherboard model
// Example: 20HRCTO1WW
Product string `json:"product" yaml:"product"`
// Motherboard serial number
// Example: L3CF4FX003A
Serial string `json:"serial" yaml:"serial"`
// Motherboard version/revision
// Example: None
Version string `json:"version" yaml:"version"`
}