mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-06-30 10:33:46 +00:00
344 lines
15 KiB
Go
344 lines
15 KiB
Go
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
|
|
package proxmoxtf
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
|
|
)
|
|
|
|
// TestResourceVirtualEnvironmentVMInstantiation tests whether the ResourceVirtualEnvironmentVM instance can be instantiated.
|
|
func TestResourceVirtualEnvironmentVMInstantiation(t *testing.T) {
|
|
s := resourceVirtualEnvironmentVM()
|
|
|
|
if s == nil {
|
|
t.Fatalf("Cannot instantiate resourceVirtualEnvironmentVM")
|
|
}
|
|
}
|
|
|
|
// TestResourceVirtualEnvironmentVMSchema tests the resourceVirtualEnvironmentVM schema.
|
|
func TestResourceVirtualEnvironmentVMSchema(t *testing.T) {
|
|
s := resourceVirtualEnvironmentVM()
|
|
|
|
testRequiredArguments(t, s, []string{
|
|
mkResourceVirtualEnvironmentVMNodeName,
|
|
})
|
|
|
|
testOptionalArguments(t, s, []string{
|
|
mkResourceVirtualEnvironmentVMACPI,
|
|
mkResourceVirtualEnvironmentVMAgent,
|
|
mkResourceVirtualEnvironmentVMAudioDevice,
|
|
mkResourceVirtualEnvironmentVMBIOS,
|
|
mkResourceVirtualEnvironmentVMCDROM,
|
|
mkResourceVirtualEnvironmentVMClone,
|
|
mkResourceVirtualEnvironmentVMCPU,
|
|
mkResourceVirtualEnvironmentVMDescription,
|
|
mkResourceVirtualEnvironmentVMDisk,
|
|
mkResourceVirtualEnvironmentVMInitialization,
|
|
mkResourceVirtualEnvironmentVMKeyboardLayout,
|
|
mkResourceVirtualEnvironmentVMMemory,
|
|
mkResourceVirtualEnvironmentVMName,
|
|
mkResourceVirtualEnvironmentVMNetworkDevice,
|
|
mkResourceVirtualEnvironmentVMOperatingSystem,
|
|
mkResourceVirtualEnvironmentVMPoolID,
|
|
mkResourceVirtualEnvironmentVMSerialDevice,
|
|
mkResourceVirtualEnvironmentVMStarted,
|
|
mkResourceVirtualEnvironmentVMTabletDevice,
|
|
mkResourceVirtualEnvironmentVMTemplate,
|
|
mkResourceVirtualEnvironmentVMVMID,
|
|
})
|
|
|
|
testComputedAttributes(t, s, []string{
|
|
mkResourceVirtualEnvironmentVMIPv4Addresses,
|
|
mkResourceVirtualEnvironmentVMIPv6Addresses,
|
|
mkResourceVirtualEnvironmentVMMACAddresses,
|
|
mkResourceVirtualEnvironmentVMNetworkInterfaceNames,
|
|
})
|
|
|
|
testValueTypes(t, s, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMACPI: schema.TypeBool,
|
|
mkResourceVirtualEnvironmentVMAgent: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMAudioDevice: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMBIOS: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMCDROM: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMCPU: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMDescription: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMDisk: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMInitialization: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMIPv4Addresses: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMIPv6Addresses: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMKeyboardLayout: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMMemory: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMName: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMNetworkDevice: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMMACAddresses: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMNetworkInterfaceNames: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMOperatingSystem: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMPoolID: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMSerialDevice: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMStarted: schema.TypeBool,
|
|
mkResourceVirtualEnvironmentVMTabletDevice: schema.TypeBool,
|
|
mkResourceVirtualEnvironmentVMTemplate: schema.TypeBool,
|
|
mkResourceVirtualEnvironmentVMVMID: schema.TypeInt,
|
|
})
|
|
|
|
agentSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMAgent)
|
|
|
|
testOptionalArguments(t, agentSchema, []string{
|
|
mkResourceVirtualEnvironmentVMAgentEnabled,
|
|
mkResourceVirtualEnvironmentVMAgentTimeout,
|
|
mkResourceVirtualEnvironmentVMAgentTrim,
|
|
mkResourceVirtualEnvironmentVMAgentType,
|
|
})
|
|
|
|
testValueTypes(t, agentSchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMAgentEnabled: schema.TypeBool,
|
|
mkResourceVirtualEnvironmentVMAgentTrim: schema.TypeBool,
|
|
mkResourceVirtualEnvironmentVMAgentType: schema.TypeString,
|
|
})
|
|
|
|
audioDeviceSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMAudioDevice)
|
|
|
|
testOptionalArguments(t, audioDeviceSchema, []string{
|
|
mkResourceVirtualEnvironmentVMAudioDeviceDevice,
|
|
mkResourceVirtualEnvironmentVMAudioDeviceDriver,
|
|
})
|
|
|
|
testValueTypes(t, audioDeviceSchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMAudioDeviceDevice: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMAudioDeviceDriver: schema.TypeString,
|
|
})
|
|
|
|
cdromSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMCDROM)
|
|
|
|
testOptionalArguments(t, cdromSchema, []string{
|
|
mkResourceVirtualEnvironmentVMCDROMEnabled,
|
|
mkResourceVirtualEnvironmentVMCDROMFileID,
|
|
})
|
|
|
|
testValueTypes(t, cdromSchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMCDROMEnabled: schema.TypeBool,
|
|
mkResourceVirtualEnvironmentVMCDROMFileID: schema.TypeString,
|
|
})
|
|
|
|
cloneSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMClone)
|
|
|
|
testRequiredArguments(t, cloneSchema, []string{
|
|
mkResourceVirtualEnvironmentVMCloneVMID,
|
|
})
|
|
|
|
testOptionalArguments(t, cloneSchema, []string{
|
|
mkResourceVirtualEnvironmentVMCloneDatastoreID,
|
|
mkResourceVirtualEnvironmentVMCloneNodeName,
|
|
})
|
|
|
|
testValueTypes(t, cloneSchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMCloneDatastoreID: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMCloneNodeName: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMCloneVMID: schema.TypeInt,
|
|
})
|
|
|
|
cpuSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMCPU)
|
|
|
|
testOptionalArguments(t, cpuSchema, []string{
|
|
mkResourceVirtualEnvironmentVMCPUArchitecture,
|
|
mkResourceVirtualEnvironmentVMCPUCores,
|
|
mkResourceVirtualEnvironmentVMCPUFlags,
|
|
mkResourceVirtualEnvironmentVMCPUHotplugged,
|
|
mkResourceVirtualEnvironmentVMCPUSockets,
|
|
mkResourceVirtualEnvironmentVMCPUType,
|
|
mkResourceVirtualEnvironmentVMCPUUnits,
|
|
})
|
|
|
|
testValueTypes(t, cpuSchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMCPUArchitecture: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMCPUCores: schema.TypeInt,
|
|
mkResourceVirtualEnvironmentVMCPUFlags: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMCPUHotplugged: schema.TypeInt,
|
|
mkResourceVirtualEnvironmentVMCPUSockets: schema.TypeInt,
|
|
mkResourceVirtualEnvironmentVMCPUType: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMCPUUnits: schema.TypeInt,
|
|
})
|
|
|
|
diskSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMDisk)
|
|
|
|
testOptionalArguments(t, diskSchema, []string{
|
|
mkResourceVirtualEnvironmentVMDiskDatastoreID,
|
|
mkResourceVirtualEnvironmentVMDiskFileFormat,
|
|
mkResourceVirtualEnvironmentVMDiskFileID,
|
|
mkResourceVirtualEnvironmentVMDiskSize,
|
|
})
|
|
|
|
testValueTypes(t, diskSchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMDiskDatastoreID: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMDiskFileFormat: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMDiskFileID: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMDiskSize: schema.TypeInt,
|
|
})
|
|
|
|
diskSpeedSchema := testNestedSchemaExistence(t, diskSchema, mkResourceVirtualEnvironmentVMDiskSpeed)
|
|
|
|
testOptionalArguments(t, diskSpeedSchema, []string{
|
|
mkResourceVirtualEnvironmentVMDiskSpeedRead,
|
|
mkResourceVirtualEnvironmentVMDiskSpeedReadBurstable,
|
|
mkResourceVirtualEnvironmentVMDiskSpeedWrite,
|
|
mkResourceVirtualEnvironmentVMDiskSpeedWriteBurstable,
|
|
})
|
|
|
|
testValueTypes(t, diskSpeedSchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMDiskSpeedRead: schema.TypeInt,
|
|
mkResourceVirtualEnvironmentVMDiskSpeedReadBurstable: schema.TypeInt,
|
|
mkResourceVirtualEnvironmentVMDiskSpeedWrite: schema.TypeInt,
|
|
mkResourceVirtualEnvironmentVMDiskSpeedWriteBurstable: schema.TypeInt,
|
|
})
|
|
|
|
initializationSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMInitialization)
|
|
|
|
testOptionalArguments(t, initializationSchema, []string{
|
|
mkResourceVirtualEnvironmentVMInitializationDatastoreID,
|
|
mkResourceVirtualEnvironmentVMInitializationDNS,
|
|
mkResourceVirtualEnvironmentVMInitializationIPConfig,
|
|
mkResourceVirtualEnvironmentVMInitializationUserAccount,
|
|
})
|
|
|
|
testValueTypes(t, initializationSchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMInitializationDatastoreID: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMInitializationDNS: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMInitializationIPConfig: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMInitializationUserAccount: schema.TypeList,
|
|
})
|
|
|
|
initializationDNSSchema := testNestedSchemaExistence(t, initializationSchema, mkResourceVirtualEnvironmentVMInitializationDNS)
|
|
|
|
testOptionalArguments(t, initializationDNSSchema, []string{
|
|
mkResourceVirtualEnvironmentVMInitializationDNSDomain,
|
|
mkResourceVirtualEnvironmentVMInitializationDNSServer,
|
|
})
|
|
|
|
testValueTypes(t, initializationDNSSchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMInitializationDNSDomain: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMInitializationDNSServer: schema.TypeString,
|
|
})
|
|
|
|
initializationIPConfigSchema := testNestedSchemaExistence(t, initializationSchema, mkResourceVirtualEnvironmentVMInitializationIPConfig)
|
|
|
|
testOptionalArguments(t, initializationIPConfigSchema, []string{
|
|
mkResourceVirtualEnvironmentVMInitializationIPConfigIPv4,
|
|
mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6,
|
|
})
|
|
|
|
testValueTypes(t, initializationIPConfigSchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMInitializationIPConfigIPv4: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6: schema.TypeList,
|
|
})
|
|
|
|
initializationIPConfigIPv4Schema := testNestedSchemaExistence(t, initializationIPConfigSchema, mkResourceVirtualEnvironmentVMInitializationIPConfigIPv4)
|
|
|
|
testOptionalArguments(t, initializationIPConfigIPv4Schema, []string{
|
|
mkResourceVirtualEnvironmentVMInitializationIPConfigIPv4Address,
|
|
mkResourceVirtualEnvironmentVMInitializationIPConfigIPv4Gateway,
|
|
})
|
|
|
|
testValueTypes(t, initializationIPConfigIPv4Schema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMInitializationIPConfigIPv4Address: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMInitializationIPConfigIPv4Gateway: schema.TypeString,
|
|
})
|
|
|
|
initializationIPConfigIPv6Schema := testNestedSchemaExistence(t, initializationIPConfigSchema, mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6)
|
|
|
|
testOptionalArguments(t, initializationIPConfigIPv6Schema, []string{
|
|
mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6Address,
|
|
mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6Gateway,
|
|
})
|
|
|
|
testValueTypes(t, initializationIPConfigIPv6Schema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6Address: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6Gateway: schema.TypeString,
|
|
})
|
|
|
|
initializationUserAccountSchema := testNestedSchemaExistence(t, initializationSchema, mkResourceVirtualEnvironmentVMInitializationUserAccount)
|
|
|
|
testOptionalArguments(t, initializationUserAccountSchema, []string{
|
|
mkResourceVirtualEnvironmentVMInitializationUserAccountKeys,
|
|
mkResourceVirtualEnvironmentVMInitializationUserAccountPassword,
|
|
mkResourceVirtualEnvironmentVMInitializationUserAccountUsername,
|
|
})
|
|
|
|
testValueTypes(t, initializationUserAccountSchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMInitializationUserAccountKeys: schema.TypeList,
|
|
mkResourceVirtualEnvironmentVMInitializationUserAccountPassword: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMInitializationUserAccountUsername: schema.TypeString,
|
|
})
|
|
|
|
memorySchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMMemory)
|
|
|
|
testOptionalArguments(t, memorySchema, []string{
|
|
mkResourceVirtualEnvironmentVMMemoryDedicated,
|
|
mkResourceVirtualEnvironmentVMMemoryFloating,
|
|
mkResourceVirtualEnvironmentVMMemoryShared,
|
|
})
|
|
|
|
testValueTypes(t, memorySchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMMemoryDedicated: schema.TypeInt,
|
|
mkResourceVirtualEnvironmentVMMemoryFloating: schema.TypeInt,
|
|
mkResourceVirtualEnvironmentVMMemoryShared: schema.TypeInt,
|
|
})
|
|
|
|
networkDeviceSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMNetworkDevice)
|
|
|
|
testOptionalArguments(t, networkDeviceSchema, []string{
|
|
mkResourceVirtualEnvironmentVMNetworkDeviceBridge,
|
|
mkResourceVirtualEnvironmentVMNetworkDeviceEnabled,
|
|
mkResourceVirtualEnvironmentVMNetworkDeviceMACAddress,
|
|
mkResourceVirtualEnvironmentVMNetworkDeviceModel,
|
|
mkResourceVirtualEnvironmentVMNetworkDeviceRateLimit,
|
|
mkResourceVirtualEnvironmentVMNetworkDeviceVLANID,
|
|
})
|
|
|
|
testValueTypes(t, networkDeviceSchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMNetworkDeviceBridge: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMNetworkDeviceEnabled: schema.TypeBool,
|
|
mkResourceVirtualEnvironmentVMNetworkDeviceMACAddress: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMNetworkDeviceModel: schema.TypeString,
|
|
mkResourceVirtualEnvironmentVMNetworkDeviceRateLimit: schema.TypeFloat,
|
|
mkResourceVirtualEnvironmentVMNetworkDeviceVLANID: schema.TypeInt,
|
|
})
|
|
|
|
operatingSystemSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMOperatingSystem)
|
|
|
|
testOptionalArguments(t, operatingSystemSchema, []string{
|
|
mkResourceVirtualEnvironmentVMOperatingSystemType,
|
|
})
|
|
|
|
testValueTypes(t, operatingSystemSchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMOperatingSystemType: schema.TypeString,
|
|
})
|
|
|
|
serialDeviceSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMSerialDevice)
|
|
|
|
testOptionalArguments(t, serialDeviceSchema, []string{
|
|
mkResourceVirtualEnvironmentVMSerialDeviceDevice,
|
|
})
|
|
|
|
testValueTypes(t, serialDeviceSchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMSerialDeviceDevice: schema.TypeString,
|
|
})
|
|
|
|
vgaSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMVGA)
|
|
|
|
testOptionalArguments(t, vgaSchema, []string{
|
|
mkResourceVirtualEnvironmentVMVGAEnabled,
|
|
mkResourceVirtualEnvironmentVMVGAMemory,
|
|
mkResourceVirtualEnvironmentVMVGAType,
|
|
})
|
|
|
|
testValueTypes(t, vgaSchema, map[string]schema.ValueType{
|
|
mkResourceVirtualEnvironmentVMVGAEnabled: schema.TypeBool,
|
|
mkResourceVirtualEnvironmentVMVGAMemory: schema.TypeInt,
|
|
mkResourceVirtualEnvironmentVMVGAType: schema.TypeString,
|
|
})
|
|
}
|