mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-08-22 19:38:35 +00:00
feat(vm): add option to enable multiqueue in network devices (#614)
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
This commit is contained in:
parent
0150a97cd4
commit
be5251dd5a
@ -386,6 +386,7 @@ output "ubuntu_vm_public_key" {
|
||||
- `vmxnet3` - VMware vmxnet3.
|
||||
- `mtu` - (Optional) Force MTU, for VirtIO only. Set to 1 to use the bridge
|
||||
MTU. Cannot be larger than the bridge MTU.
|
||||
- `queues` - (Optional) The number of queues for VirtIO (1..64).
|
||||
- `rate_limit` - (Optional) The rate limit in megabytes per second.
|
||||
- `vlan_id` - (Optional) The VLAN identifier.
|
||||
- `node_name` - (Required) The name of the node to assign the virtual machine
|
||||
|
@ -11,7 +11,8 @@ resource "proxmox_virtual_environment_vm" "example_template" {
|
||||
description = "Managed by Terraform"
|
||||
|
||||
cpu {
|
||||
numa = true
|
||||
cores = 2
|
||||
numa = true
|
||||
}
|
||||
|
||||
smbios {
|
||||
@ -81,7 +82,8 @@ resource "proxmox_virtual_environment_vm" "example_template" {
|
||||
name = "terraform-provider-proxmox-example-template"
|
||||
|
||||
network_device {
|
||||
mtu = 1450
|
||||
mtu = 1450
|
||||
queues = 2
|
||||
}
|
||||
|
||||
network_device {
|
||||
|
@ -104,6 +104,7 @@ const (
|
||||
dvResourceVirtualEnvironmentVMNetworkDeviceEnabled = true
|
||||
dvResourceVirtualEnvironmentVMNetworkDeviceFirewall = false
|
||||
dvResourceVirtualEnvironmentVMNetworkDeviceModel = "virtio"
|
||||
dvResourceVirtualEnvironmentVMNetworkDeviceQueues = 0
|
||||
dvResourceVirtualEnvironmentVMNetworkDeviceRateLimit = 0
|
||||
dvResourceVirtualEnvironmentVMNetworkDeviceVLANID = 0
|
||||
dvResourceVirtualEnvironmentVMNetworkDeviceMTU = 0
|
||||
@ -242,6 +243,7 @@ const (
|
||||
mkResourceVirtualEnvironmentVMNetworkDeviceFirewall = "firewall"
|
||||
mkResourceVirtualEnvironmentVMNetworkDeviceMACAddress = "mac_address"
|
||||
mkResourceVirtualEnvironmentVMNetworkDeviceModel = "model"
|
||||
mkResourceVirtualEnvironmentVMNetworkDeviceQueues = "queues"
|
||||
mkResourceVirtualEnvironmentVMNetworkDeviceRateLimit = "rate_limit"
|
||||
mkResourceVirtualEnvironmentVMNetworkDeviceVLANID = "vlan_id"
|
||||
mkResourceVirtualEnvironmentVMNetworkDeviceMTU = "mtu"
|
||||
@ -1163,6 +1165,13 @@ func VM() *schema.Resource {
|
||||
Default: dvResourceVirtualEnvironmentVMNetworkDeviceModel,
|
||||
ValidateDiagFunc: validator.NetworkDeviceModel(),
|
||||
},
|
||||
mkResourceVirtualEnvironmentVMNetworkDeviceQueues: {
|
||||
Type: schema.TypeInt,
|
||||
Description: "Number of packet queues to be used on the device",
|
||||
Optional: true,
|
||||
Default: dvResourceVirtualEnvironmentVMNetworkDeviceQueues,
|
||||
ValidateDiagFunc: validation.ToDiagFunc(validation.IntBetween(0, 64)),
|
||||
},
|
||||
mkResourceVirtualEnvironmentVMNetworkDeviceRateLimit: {
|
||||
Type: schema.TypeFloat,
|
||||
Description: "The rate limit in megabytes per second",
|
||||
@ -3212,6 +3221,7 @@ func vmGetNetworkDeviceObjects(d *schema.ResourceData) vms.CustomNetworkDevices
|
||||
firewall := types.CustomBool(block[mkResourceVirtualEnvironmentVMNetworkDeviceFirewall].(bool))
|
||||
macAddress := block[mkResourceVirtualEnvironmentVMNetworkDeviceMACAddress].(string)
|
||||
model := block[mkResourceVirtualEnvironmentVMNetworkDeviceModel].(string)
|
||||
queues := block[mkResourceVirtualEnvironmentVMNetworkDeviceQueues].(int)
|
||||
rateLimit := block[mkResourceVirtualEnvironmentVMNetworkDeviceRateLimit].(float64)
|
||||
vlanID := block[mkResourceVirtualEnvironmentVMNetworkDeviceVLANID].(int)
|
||||
mtu := block[mkResourceVirtualEnvironmentVMNetworkDeviceMTU].(int)
|
||||
@ -3230,6 +3240,10 @@ func vmGetNetworkDeviceObjects(d *schema.ResourceData) vms.CustomNetworkDevices
|
||||
device.MACAddress = &macAddress
|
||||
}
|
||||
|
||||
if queues != 0 {
|
||||
device.Queues = &queues
|
||||
}
|
||||
|
||||
if rateLimit != 0 {
|
||||
device.RateLimit = &rateLimit
|
||||
}
|
||||
@ -4305,6 +4319,12 @@ func vmReadCustom(
|
||||
networkDevice[mkResourceVirtualEnvironmentVMNetworkDeviceMACAddress] = macAddresses[ni]
|
||||
networkDevice[mkResourceVirtualEnvironmentVMNetworkDeviceModel] = nd.Model
|
||||
|
||||
if nd.Queues != nil {
|
||||
networkDevice[mkResourceVirtualEnvironmentVMNetworkDeviceQueues] = *nd.Queues
|
||||
} else {
|
||||
networkDevice[mkResourceVirtualEnvironmentVMNetworkDeviceQueues] = 0
|
||||
}
|
||||
|
||||
if nd.RateLimit != nil {
|
||||
networkDevice[mkResourceVirtualEnvironmentVMNetworkDeviceRateLimit] = *nd.RateLimit
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user