diff --git a/.vscode/settings.json b/.vscode/settings.json index 97eb39e4..f25b8d41 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,9 @@ "qcow", "virtio" ], + "go.lintTool": "golangci-lint", + "go.lintFlags": [ + "--fast", + ], "go.testEnvFile": "${workspaceFolder}/test.env", } diff --git a/proxmoxtf/resource/vm.go b/proxmoxtf/resource/vm.go index 494b905d..f05d7ad2 100644 --- a/proxmoxtf/resource/vm.go +++ b/proxmoxtf/resource/vm.go @@ -2001,6 +2001,11 @@ func vmCreateClone(ctx context.Context, d *schema.ResourceData, m interface{}) d } } + vmConfig, err := vmAPI.GetVM(ctx) + if err != nil { + return diag.FromErr(err) + } + if len(initialization) > 0 { tflog.Trace(ctx, "Preparing the CloudInit configuration") @@ -2008,11 +2013,6 @@ func vmCreateClone(ctx context.Context, d *schema.ResourceData, m interface{}) d initializationDatastoreID := initializationBlock[mkResourceVirtualEnvironmentVMInitializationDatastoreID].(string) initializationInterface := initializationBlock[mkResourceVirtualEnvironmentVMInitializationInterface].(string) - vmConfig, err := vmAPI.GetVM(ctx) - if err != nil { - return diag.FromErr(err) - } - existingInterface := findExistingCloudInitDrive(vmConfig, vmID, "ide2") if initializationInterface == "" { initializationInterface = existingInterface @@ -2131,9 +2131,11 @@ func vmCreateClone(ctx context.Context, d *schema.ResourceData, m interface{}) d } hookScript := d.Get(mkResourceVirtualEnvironmentVMHookScriptFileID).(string) + currentHookScript := vmConfig.HookScript + if len(hookScript) > 0 { updateBody.HookScript = &hookScript - } else { + } else if currentHookScript != nil { del = append(del, "hookscript") } @@ -2147,7 +2149,7 @@ func vmCreateClone(ctx context.Context, d *schema.ResourceData, m interface{}) d disk := d.Get(mkResourceVirtualEnvironmentVMDisk).([]interface{}) efiDisk := d.Get(mkResourceVirtualEnvironmentVMEFIDisk).([]interface{}) - vmConfig, e := vmAPI.GetVM(ctx) + vmConfig, e = vmAPI.GetVM(ctx) if e != nil { if strings.Contains(e.Error(), "HTTP 404") || (strings.Contains(e.Error(), "HTTP 500") && strings.Contains(e.Error(), "does not exist")) {