0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-07-10 15:55:01 +00:00

Merge remote-tracking branch 'patsissons/add-citype-support' into release-0.4.0

This commit is contained in:
Dan Petersen 2021-01-02 22:41:03 +01:00
commit 4911843287
2 changed files with 29 additions and 0 deletions

View File

@ -60,6 +60,7 @@ const (
dvResourceVirtualEnvironmentVMInitializationIPConfigIPv6Gateway = "" dvResourceVirtualEnvironmentVMInitializationIPConfigIPv6Gateway = ""
dvResourceVirtualEnvironmentVMInitializationUserAccountPassword = "" dvResourceVirtualEnvironmentVMInitializationUserAccountPassword = ""
dvResourceVirtualEnvironmentVMInitializationUserDataFileID = "" dvResourceVirtualEnvironmentVMInitializationUserDataFileID = ""
dvResourceVirtualEnvironmentVMInitializationType = ""
dvResourceVirtualEnvironmentVMKeyboardLayout = "en-us" dvResourceVirtualEnvironmentVMKeyboardLayout = "en-us"
dvResourceVirtualEnvironmentVMMemoryDedicated = 512 dvResourceVirtualEnvironmentVMMemoryDedicated = 512
dvResourceVirtualEnvironmentVMMemoryFloating = 0 dvResourceVirtualEnvironmentVMMemoryFloating = 0
@ -140,6 +141,7 @@ const (
mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6 = "ipv6" mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6 = "ipv6"
mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6Address = "address" mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6Address = "address"
mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6Gateway = "gateway" mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6Gateway = "gateway"
mkResourceVirtualEnvironmentVMInitializationType = "type"
mkResourceVirtualEnvironmentVMInitializationUserAccount = "user_account" mkResourceVirtualEnvironmentVMInitializationUserAccount = "user_account"
mkResourceVirtualEnvironmentVMInitializationUserAccountKeys = "keys" mkResourceVirtualEnvironmentVMInitializationUserAccountKeys = "keys"
mkResourceVirtualEnvironmentVMInitializationUserAccountPassword = "password" mkResourceVirtualEnvironmentVMInitializationUserAccountPassword = "password"
@ -706,6 +708,14 @@ func resourceVirtualEnvironmentVM() *schema.Resource {
Default: dvResourceVirtualEnvironmentVMInitializationUserDataFileID, Default: dvResourceVirtualEnvironmentVMInitializationUserDataFileID,
ValidateFunc: getFileIDValidator(), ValidateFunc: getFileIDValidator(),
}, },
mkResourceVirtualEnvironmentVMInitializationType: {
Type: schema.TypeString,
Description: "The cloud-init configuration format",
Optional: true,
ForceNew: true,
Default: dvResourceVirtualEnvironmentVMInitializationType,
ValidateFunc: getCloudInitTypeValidator(),
},
}, },
}, },
MaxItems: 1, MaxItems: 1,
@ -2010,6 +2020,12 @@ func resourceVirtualEnvironmentVMGetCloudInitConfig(d *schema.ResourceData, m in
UserVolume: &initializationUserDataFileID, UserVolume: &initializationUserDataFileID,
} }
} }
initializationType := initializationBlock[mkResourceVirtualEnvironmentVMInitializationType].(string)
if initializationType != "" {
initializationConfig.Type = &initializationType
}
} }
return initializationConfig, nil return initializationConfig, nil
@ -2706,6 +2722,12 @@ func resourceVirtualEnvironmentVMReadCustom(d *schema.ResourceData, m interface{
initialization[mkResourceVirtualEnvironmentVMInitializationUserDataFileID] = "" initialization[mkResourceVirtualEnvironmentVMInitializationUserDataFileID] = ""
} }
if vmConfig.CloudInitType != nil {
initialization[mkResourceVirtualEnvironmentVMInitializationType] = *vmConfig.CloudInitType
} else if len(initialization) > 0 {
initialization[mkResourceVirtualEnvironmentVMInitializationType] = ""
}
currentInitialization := d.Get(mkResourceVirtualEnvironmentVMInitialization).([]interface{}) currentInitialization := d.Get(mkResourceVirtualEnvironmentVMInitialization).([]interface{})
if len(clone) > 0 { if len(clone) > 0 {

View File

@ -472,6 +472,13 @@ func parseDiskSize(size *string) (int, error) {
return diskSize, err return diskSize, err
} }
func getCloudInitTypeValidator() schema.SchemaValidateFunc {
return validation.StringInSlice([]string{
"configdrive2",
"nocloud",
}, false)
}
func testComputedAttributes(t *testing.T, s *schema.Resource, keys []string) { func testComputedAttributes(t *testing.T, s *schema.Resource, keys []string) {
for _, v := range keys { for _, v := range keys {
if s.Schema[v] == nil { if s.Schema[v] == nil {