0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-06-30 02:31:10 +00:00
terraform-provider-proxmox/fwprovider/vm/cpu/resource_test.go
Pavel Boldyrev e3dd31f55e
chore(vm2): add datasource implementation (#1318)
* chore(vm2): add datasource implementation

---------

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
2024-05-22 02:06:41 +00:00

191 lines
5.1 KiB
Go

package cpu_test
import (
"testing"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
"github.com/bpg/terraform-provider-proxmox/fwprovider/test"
)
func TestAccResourceVM2CPU(t *testing.T) {
t.Parallel()
te := test.InitEnvironment(t)
tests := []struct {
name string
steps []resource.TestStep
}{
{"create VM with no cpu params", []resource.TestStep{{
Config: te.RenderConfig(`
resource "proxmox_virtual_environment_vm2" "test_vm" {
node_name = "{{.NodeName}}"
name = "test-cpu"
}`),
Check: resource.ComposeTestCheckFunc(
test.ResourceAttributes("proxmox_virtual_environment_vm2.test_vm", map[string]string{
// default values that are set by PVE if not specified
"cpu.cores": "1",
"cpu.sockets": "1",
"cpu.type": "kvm64",
}),
),
}}},
{"create VM with some cpu params", []resource.TestStep{{
Config: te.RenderConfig(`
resource "proxmox_virtual_environment_vm2" "test_vm" {
node_name = "{{.NodeName}}"
name = "test-cpu"
cpu = {
cores = 2
sockets = 2
type = "host"
flags = ["+aes"]
}
}`),
Check: resource.ComposeTestCheckFunc(
test.ResourceAttributes("proxmox_virtual_environment_vm2.test_vm", map[string]string{
"cpu.cores": "2",
"cpu.sockets": "2",
"cpu.type": "host",
"cpu.flags.#": "1",
"cpu.flags.0": `\+aes`,
}),
),
}}},
{"create VM with all cpu params and then update them", []resource.TestStep{
{
Config: te.RenderConfig(`
resource "proxmox_virtual_environment_vm2" "test_vm" {
node_name = "{{.NodeName}}"
name = "test-cpu"
cpu = {
# affinity = "0-1" only root can set affinity
# architecture = "x86_64" only root can set architecture
cores = 2
hotplugged = 2
limit = 64
numa = false
sockets = 2
type = "host"
units = 1024
flags = ["+aes"]
}
}`),
Check: resource.ComposeTestCheckFunc(
test.ResourceAttributes("proxmox_virtual_environment_vm2.test_vm", map[string]string{
"cpu.cores": "2",
"cpu.hotplugged": "2",
"cpu.limit": "64",
"cpu.numa": "false",
"cpu.sockets": "2",
"cpu.type": "host",
"cpu.units": "1024",
}),
),
},
{ // now update the cpu params and check if they are updated
Config: te.RenderConfig(`
resource "proxmox_virtual_environment_vm2" "test_vm" {
node_name = "{{.NodeName}}"
name = "test-cpu"
cpu = {
cores = 4
hotplugged = 2
limit = null # setting to null is the same as removal
# numa = false
# sockets = 2 remove sockets, so it should fall back to 1 (PVE default)
# type = "host" remove type, so it should fall back to kvm64 (PVE default)
units = 2048
# flags = ["+aes"]
}
}`),
Check: resource.ComposeTestCheckFunc(
test.ResourceAttributes("proxmox_virtual_environment_vm2.test_vm", map[string]string{
"cpu.cores": "4",
"cpu.hotplugged": "2",
"cpu.sockets": "1", // default value, but it is a special case.
"cpu.type": "kvm64", // default value, but it is a special case.
"cpu.units": "2048",
}),
test.NoResourceAttributesSet("proxmox_virtual_environment_vm2.test_vm", []string{
"cpu.limit", // other defaults are not set in the state
"cpu.numa",
"cpu.flags",
}),
),
},
{
RefreshState: true,
},
}},
{"clone VM with some cpu params", []resource.TestStep{{
Config: te.RenderConfig(`
resource "proxmox_virtual_environment_vm2" "template_vm" {
node_name = "{{.NodeName}}"
name = "template-cpu"
cpu = {
cores = 2
sockets = 2
type = "host"
}
}
resource "proxmox_virtual_environment_vm2" "test_vm" {
node_name = "{{.NodeName}}"
name = "test-cpu"
clone = {
id = proxmox_virtual_environment_vm2.template_vm.id
}
}`),
Check: resource.ComposeTestCheckFunc(
test.ResourceAttributes("proxmox_virtual_environment_vm2.test_vm", map[string]string{
"cpu.cores": "2",
"cpu.sockets": "2",
"cpu.type": "host",
}),
),
}}},
{"clone VM with some cpu params and updating them in the clone", []resource.TestStep{{
Config: te.RenderConfig(`
resource "proxmox_virtual_environment_vm2" "template_vm" {
node_name = "{{.NodeName}}"
name = "template-cpu"
cpu = {
cores = 2
sockets = 2
type = "host"
}
}
resource "proxmox_virtual_environment_vm2" "test_vm" {
node_name = "{{.NodeName}}"
name = "test-cpu"
clone = {
id = proxmox_virtual_environment_vm2.template_vm.id
}
cpu = {
cores = 4
units = 1024
}
}`),
Check: resource.ComposeTestCheckFunc(
test.ResourceAttributes("proxmox_virtual_environment_vm2.test_vm", map[string]string{
"cpu.cores": "4",
"cpu.sockets": "2",
"cpu.type": "host",
"cpu.units": "1024",
}),
),
}}},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
resource.ParallelTest(t, resource.TestCase{
ProtoV6ProviderFactories: te.AccProviders,
Steps: tt.steps,
})
})
}
}