List Virtual Machine
const url = 'https://example.com/compute/v1/workspaces/example/engines/qibdo/vms';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/compute/v1/workspaces/example/engines/qibdo/vmsReturns a page Virtual Machines (VM) filtered by a page size and optional parameters
Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”The unique identifier of the workspace that the virtual machine belongs to
Query Parameters
Section titled “Query Parameters ”The maximum number of virtual machines to return. The service may return fewer than this value. If unspecified, at most 20 virtual machines will be returned. The maximum value is 100; values above 100 will be coerced to 100.
A page token, received from a previous ListQibdoVirtualMachine call.
Provide this to retrieve the subsequent page.
When paginating, all other parameters provided to ListQibdoVirtualMachine must match
the call that provided the page token.
A filter expression allows you to filter the virtual machines listed in the response.
At qibdo, we use the AIP-160 proposal, that means that your expression should include:
field name, an operator, and the value you wish to filter by.
The value can be a string, number, or boolean, and the operator must be one of the following: =, !=, >, <, <=, >=, or :
You can group multiple expressions using parentheses and the logical operators AND and OR.
Examples:
name = "my-vm" -> Filter by the name of the virtual machine
(name = "my-vm") AND (status = "QIBDO_VM_STATUS_RUNNING") -> Filter by the name and status of the virtual machine
numa:* -> Returns virtual machines with NUMA configuration
The order in which to sort the results. If not specified, the results will be sorted by name in ascending order.
At qibdo, we use the AIP-132 proposal, that means:
Values should be a comma separated list of fields. For example: "foo,bar".
The default sort order is ascending. To specify descending order, a suffix " desc" should be added. For example: "foo desc,bar".
Redundant space characters in the syntax are insignificant.
Responses
Section titled “ Responses ”OK
ListQibdoVirtualMachineResponse
Response message for ListQibdoVirtualMachine.
Note: This API intentionally omits total_size from list responses.
Keyset pagination does not support efficient total count computation
(COUNT(*) requires a full table scan). Per AIP-158, total_size is optional.
object
List of the virtual machines from the specified workspace and zone.
object
Unique Identifier
Global unique identifier for the virtual machine. This a String that uses the UUID format.
Generation Identifier
Virtual Machine Generation ID that is used to help notify the guest operating system when the virtual machine is re-executing something that has already executed before.
Name
Name/title of the virtual machine (RFC 1035 DNS label, max 62 chars)
Description
Optional description of the virtual machine
Location Id
On create, the placement intent: a ZONE (pins) or REGION (collapses to one active zone) location reference. On read, the concrete zone the VM was placed in. GLOBAL and MULTI_REGION are rejected.
Workspace Id
Unique identifier of the workspace that the virtual machine belongs to
Cpu
CPU configuration for a virtual machine.
object
Number of vCPUs present at boot time.
This is the number of virtual CPUs (vCPUs) that will be present in the virtual machine when it boots.
Maximum number of vCPUs.
This option defines the maximum number of vCPUs that can be assigned to the VM. In particular, this option is used when looking for CPU hotplug as it lets the provide an indication about how many vCPUs might be needed later during the runtime of the VM.
For instance, if booting the VM with 2 vCPUs and a maximum of 6 vCPUs, it means up to 4 vCPUs can be added later at runtime by resizing the VM.
The value must be greater than or equal to the number of boot vCPUs
Topology
CPU topology refers to the physical organization of central processing units (CPUs) within a system, including the number of sockets, cores, and threads. This information is essential for optimizing virtualization, workload distribution, and performance tuning.
object
Number of threads per core.
A CPU core can support multiple threads of execution, depending on its capabilities. This attribute refers to how many threads each core can handle simultaneously, commonly known as “simultaneous multithreading” (SMT). For example, a core with threadsPerCore set to 2 would be able to handle two threads at once, essentially doubling the performance of the core in certain multi-threaded workloads.
Number of cores per die.
A CPU die is a single piece of silicon that contains the CPU’s processing units (cores). The coresPerDie represents how many cores are physically present on a single die within the CPU.
Typically, a CPU die will have several cores, and each core might handle multiple threads (depending on the threadsPerCore value).
Number of dies per socket.
A CPU socket is the physical interface that connects a processor to the motherboard, typically containing one or more CPU dies. The diesPerSocket attribute represents how many CPU dies are available in each socket. Some high-end server CPUs may have multiple dies in a single socket, each with its own set of cores. The Virtual Machine Manager (VMM) may refer to this as “diesPerPackage,” as a “package” is often used to refer to a single CPU or socket that includes multiple dies.
Number of CPU sockets.
Affinity
List of Processor affinity, or CPU pinning or “cache affinity”, enables the binding and unbinding of a process or a thread to a central processing unit (CPU) or a range of CPUs, so that the process or thread will execute only on the designated CPU or CPUs rather than any CPU. It is useful for achieving CPU pinning, ensuring multiple VMs won’t affect the performance of each other. It might also be used in the context of NUMA as it is way of making sure the VM can run on a specific host NUMA node. In general, this option is used to increase the performances of a VM depending on the host platform and the type of workload running in the guest
Processor Affinity
Processor affinity, or CPU pinning or “cache affinity”. It enables the binding and unbinding of a process or a thread to a central processing unit (CPU) or a range of CPUs, so that the process or thread will execute only on the designated CPU or CPUs rather than any CPU. It is useful for achieving CPU pinning, ensuring multiple VMs won’t affect the performance of each other. It might also be used in the context of NUMA as it is way of making sure the VM can run on a specific host NUMA node. In general, this option is used to increase the performances of a VM depending on the host platform and the type of workload running in the guest
object
Virtual CPU number
The physical CPU numbers
Features
A list of Features used to fine-tune features provided by the selected CPU model. The list of known feature names can be found in the same file as CPU models. The meaning of each feature element depends on its policy attribute.
Feature
A Feature is used to fine-tune features provided by the selected CPU model. The list of known feature names can be found in the same file as CPU models. The meaning of each feature element depends on its policy attribute.
object
Name of the feature
The name of the feature is a string that represents the feature that is being enabled or disabled.
Maximum number of physical bits.
Maximum size for guest’s addressable space. This option defines the maximum number of physical bits for all vCPUs, which sets a limit for the size of the guest’s addressable space. This is mainly useful for debug purpose.
CPU Emulation
Emulation properties for a CPU. It defines properties like the model, vendor, etc
object
Cpu Emulation Model
Specifies CPU model requested by the guest.
object
CPU Vendor
Specifies CPU vendor requested by the guest. e.g. Intel
object
Memory
Memory configuration for a qibdo Virtual Machine. It indicates the amount of memory that the VM will have, the access mode, the usage or not of huge pages, the memory zones, the memory backing, among other properties.
object
Compute Data Size
Represents the computational size of an object in different information units.
object
Size of the object
Is the numerical size of an object
object
Compute Data Size
Represents the computational size of an object in different information units.
object
Size of the object
Is the numerical size of an object
object
Compute Data Size
Represents the computational size of an object in different information units.
object
Size of the object
Is the numerical size of an object
object
Compute Data Size
Represents the computational size of an object in different information units.
object
Size of the object
Is the numerical size of an object
object
object
Compute Data Size
Represents the computational size of an object in different information units.
object
Size of the object
Is the numerical size of an object
object
Compute Data Size
Represents the computational size of an object in different information units.
object
Size of the object
Is the numerical size of an object
object
object
object
object
object
object
object
object
object
object
object
object
object
Bandwidth Rate for Disk
object
object
object
Operations Rate for Disk
object
object
object
object
object
object
object
object
Created Timestamp
Timestamp when the disk was created
Updated Timestamp
Timestamp when the disk was last updated
object
object
object
object
object
Compute Data Size
Represents the computational size of an object in different information units.
object
Size of the object
Is the numerical size of an object
object
object
object
object
Represents a rate limiter group for virtual machines
object
The unique ID of the rate limiter group
The group identifier
The associated virtual machine rate limiter
object
The bandwidth rate limiter
object
object
object
The operations rate limiter
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
Compute Data Size
Represents the computational size of an object in different information units.
object
Size of the object
Is the numerical size of an object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
The subnet this interface attaches to. When set, the platform allocates a network port on that subnet at create time and assigns the interface’s address and MAC automatically.
The allocated network port identifier. Server-assigned when subnet_id is set; the port is released when the virtual machine is deleted.
object
object
object
object
object
object
Deployment Target Id
Unique identifier of the physical host where the virtual machine is running
Created Timestamp
Timestamp when the virtual machine was created
Updated Timestamp
Timestamp when the virtual machine was last updated
Clock Configuration
Clock offset basis and timer configuration for the guest
object
Clock offset basis relative to the host clock.
Named timer configurations for the guest.
A named timer with presence and tick policy configuration.
object
Timer hardware name.
Whether this timer is present (enabled) in the guest.
Tick policy when the guest falls behind the host clock.
Clock track source (RTC-specific).
Restart Policy
Defines what the system should do when the VM stops: always restart, restart on failure only, manual control, or never restart
Resource Pool Id
The ResourcePool this VM is placed into, either named explicitly by the caller or auto-resolved from the VM’s domain spec. Always populated after create.
Cloud-init Extension
Optional caller-supplied cloud-init YAML, merged on top of the platform baseline at VM creation time. Transient — not persisted on the aggregate; size-bounded; YAML-validated server-side before CRD submission. Responses MUST NOT echo this back because secrets may be present.
Eviction Strategy
User intent when the VM’s host enters maintenance. Maps to the virtualization host’s eviction strategy. Mutating via Update changes future eviction behaviour only — it never triggers a live migration of a running VM. Unspecified on Create is read by the server as LIVE_MIGRATE_IF_POSSIBLE.
A token, which can be sent as page_token to retrieve the next page.
If this field is empty, there are no subsequent pages.
Example
{ "vms": [ { "hypervisor": "HYPERVISOR_UNSPECIFIED", "vmm": "VMM_UNSPECIFIED", "status": "QIBDO_VM_STATUS_UNSPECIFIED", "cpu": { "features": [ { "policy": "FEATURE_POLICY_UNSPECIFIED" } ], "emulation": { "mode": "MODE_UNSPECIFIED", "architecture": "CPU_ARCHITECTURE_UNSPECIFIED" } }, "memory": { "size": { "unit": "DATA_UNIT_UNSPECIFIED" }, "access_mode": "MEMORY_ACCESS_MODE_UNSPECIFIED", "huge_pages": [ { "size": { "unit": "DATA_UNIT_UNSPECIFIED" } } ], "zones": [ { "size": { "unit": "DATA_UNIT_UNSPECIFIED" }, "access_mode": "MEMORY_ACCESS_MODE_UNSPECIFIED", "huge_pages": [ { "size": { "unit": "DATA_UNIT_UNSPECIFIED" } } ] } ], "memory_backing": "MEMORY_BACKING_UNSPECIFIED", "allocation": { "mode": "ALLOCATION_MODE_UNSPECIFIED" }, "max_size": { "size": { "unit": "DATA_UNIT_UNSPECIFIED" } } }, "disks": [ { "size": { "unit": "DATA_UNIT_UNSPECIFIED" }, "status": "DISK_STATUS_UNSPECIFIED", "qemu_driver": { "type": "QEMU_TYPE_UNSPECIFIED" }, "path_network": { "protocol": "NETWORK_PROTOCOL_UNSPECIFIED" }, "path_volume": { "mode": "MODE_UNSPECIFIED" }, "path_nvme": { "address_type": "ADDRESS_TYPE_UNSPECIFIED" }, "path_v_host_user": { "char_device_type": "CHAR_DEVICE_TYPE_UNSPECIFIED" }, "mount_path": { "block": { "device_type": "DISK_BLOCK_DEVICE_UNSPECIFIED" }, "bus": "BUS_UNSPECIFIED" }, "rate_limiter": { "bandwidth": { "size": { "unit": "DATA_TRANSFER_RATE_UNIT_UNSPECIFIED" }, "one_time_burst": { "unit": "DATA_TRANSFER_RATE_UNIT_UNSPECIFIED" } }, "operations": { "size": { "unit": "DURATION_UNIT_UNSPECIFIED" }, "one_time_burst": { "unit": "DURATION_UNIT_UNSPECIFIED" } } }, "encryption": { "format": "ENCRYPTION_FORMAT_UNSPECIFIED", "secret": { "type": "SECRET_TYPE_UNSPECIFIED" }, "cipher": { "algorithm": "ENCRYPTION_ALGORITHM_UNSPECIFIED", "size": "CIPHER_WORD_SIZE_UNSPECIFIED", "mode": "CIPHER_MODE_UNSPECIFIED" }, "iv": { "hash": "HASH_ALGORITHM_UNSPECIFIED" } } } ], "numa": { "mode": "NUMA_MODE_UNSPECIFIED", "nodes": [ { "memory_size": { "unit": "DATA_UNIT_UNSPECIFIED" }, "access_mode": "MEMORY_ACCESS_MODE_UNSPECIFIED", "mode": "NUMA_MODE_UNSPECIFIED" } ] }, "os": { "type": "OS_TYPE_UNSPECIFIED", "firmware": { "type": "STANDARD_TYPE_UNSPECIFIED" }, "boot_devices": [ { "device": "DEVICE_UNSPECIFIED" } ] }, "rate_limit_group": [ { "rate_limiter": { "bandwidth": { "size": { "unit": "DATA_TRANSFER_RATE_UNIT_UNSPECIFIED" }, "one_time_burst": { "unit": "DATA_TRANSFER_RATE_UNIT_UNSPECIFIED" } }, "operations": { "size": { "unit": "DURATION_UNIT_UNSPECIFIED" }, "one_time_burst": { "unit": "DURATION_UNIT_UNSPECIFIED" } } } } ], "interfaces": { "console": { "mode": "INTERFACE_MODE__UNSPECIFIED" }, "serial": { "mode": "INTERFACE_MODE__UNSPECIFIED" }, "debug": { "mode": "INTERFACE_MODE__UNSPECIFIED" } }, "features": { "kvm": { "dirty_ring": { "size": { "unit": "DATA_UNIT_UNSPECIFIED" } } }, "xen": { "passthrough": { "mode": "MODE_UNSPECIFIED" } } }, "network": [ { "network_io": { "inbound": { "average": { "unit": "DATA_TRANSFER_RATE_UNIT_UNSPECIFIED" }, "peak": { "unit": "DATA_TRANSFER_RATE_UNIT_UNSPECIFIED" }, "burst": { "unit": "DATA_TRANSFER_RATE_UNIT_UNSPECIFIED" }, "floor": { "unit": "DATA_TRANSFER_RATE_UNIT_UNSPECIFIED" } }, "outbound": { "average": { "unit": "DATA_TRANSFER_RATE_UNIT_UNSPECIFIED" }, "peak": { "unit": "DATA_TRANSFER_RATE_UNIT_UNSPECIFIED" }, "burst": { "unit": "DATA_TRANSFER_RATE_UNIT_UNSPECIFIED" }, "floor": { "unit": "DATA_TRANSFER_RATE_UNIT_UNSPECIFIED" } } }, "nic": "INTERFACE_CARD_UNSPECIFIED", "mount_path": { "block": { "device_type": "BLOCK_DEVICE_TYPE_UNSPECIFIED" }, "bus": "BUS_UNSPECIFIED" }, "direct_physical_interface": { "mode": "DIRECT_PHYSICAL_INTERFACE_MODE_UNSPECIFIED" } } ], "clock": { "offset": "OFFSET_UNSPECIFIED", "timers": [ { "name": "TIMER_NAME_UNSPECIFIED", "tick_policy": "TICK_POLICY_UNSPECIFIED", "track": "TRACK_UNSPECIFIED" } ] }, "restart_policy": "RESTART_POLICY_UNSPECIFIED", "eviction_strategy": "EVICTION_STRATEGY_UNSPECIFIED" } ]}default
Section titled “default ”Default error response
The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC. Each Status message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the API Design Guide.
object
The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
A list of messages that carry the error details. There is a common set of message types for APIs to use.
Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.
object
The type of the serialized message.
Example generated
{ "code": 1, "message": "example", "details": [ { "@type": "example" } ]}