From 726304d2535b0e3d3a300945d17ecbefe896f577 Mon Sep 17 00:00:00 2001 From: Dominik Rimpf Date: Fri, 18 Jul 2025 03:26:42 +0200 Subject: [PATCH] add support for disk replication flag --- builder/proxmox/common/config.go | 3 +++ builder/proxmox/common/config.hcl2spec.go | 2 ++ builder/proxmox/common/step_start_vm.go | 8 ++++++++ builder/proxmox/common/step_start_vm_test.go | 12 +++++++++++- .../proxmox/common/diskConfig-not-required.mdx | 3 +++ 5 files changed, 27 insertions(+), 1 deletion(-) diff --git a/builder/proxmox/common/config.go b/builder/proxmox/common/config.go index fe4eb33f..b7e01d99 100644 --- a/builder/proxmox/common/config.go +++ b/builder/proxmox/common/config.go @@ -379,6 +379,9 @@ type diskConfig struct { // // This cannot work with virtio disks. SSD bool `mapstructure:"ssd"` + // Exclude disk from replication jobs. + // Defaults to false. + SkipReplication bool `mapstructure:"skip_replication"` } // Set the efidisk storage options. diff --git a/builder/proxmox/common/config.hcl2spec.go b/builder/proxmox/common/config.hcl2spec.go index 0743154b..60ed79f8 100644 --- a/builder/proxmox/common/config.hcl2spec.go +++ b/builder/proxmox/common/config.hcl2spec.go @@ -350,6 +350,7 @@ type FlatdiskConfig struct { ExcludeFromBackup *bool `mapstructure:"exclude_from_backup" cty:"exclude_from_backup" hcl:"exclude_from_backup"` Discard *bool `mapstructure:"discard" cty:"discard" hcl:"discard"` SSD *bool `mapstructure:"ssd" cty:"ssd" hcl:"ssd"` + SkipReplication *bool `mapstructure:"skip_replication" cty:"skip_replication" hcl:"skip_replication"` } // FlatMapstructure returns a new FlatdiskConfig. @@ -375,6 +376,7 @@ func (*FlatdiskConfig) HCL2Spec() map[string]hcldec.Spec { "exclude_from_backup": &hcldec.AttrSpec{Name: "exclude_from_backup", Type: cty.Bool, Required: false}, "discard": &hcldec.AttrSpec{Name: "discard", Type: cty.Bool, Required: false}, "ssd": &hcldec.AttrSpec{Name: "ssd", Type: cty.Bool, Required: false}, + "skip_replication": &hcldec.AttrSpec{Name: "skip_replication", Type: cty.Bool, Required: false}, } return s } diff --git a/builder/proxmox/common/step_start_vm.go b/builder/proxmox/common/step_start_vm.go index 3781c6b1..5a1d26d9 100644 --- a/builder/proxmox/common/step_start_vm.go +++ b/builder/proxmox/common/step_start_vm.go @@ -435,6 +435,10 @@ func generateProxmoxDisks(disks []diskConfig, isos []ISOsConfig, cloneSourceDisk if disks[idx].ExcludeFromBackup { backup = false } + replicate := true + if disks[idx].SkipReplication { + replicate = false + } switch disks[idx].Type { case "ide": @@ -448,6 +452,7 @@ func generateProxmoxDisks(disks []diskConfig, isos []ISOsConfig, cloneSourceDisk Discard: disks[idx].Discard, EmulateSSD: disks[idx].SSD, Backup: backup, + Replicate: replicate, }, } for { @@ -488,6 +493,7 @@ func generateProxmoxDisks(disks []diskConfig, isos []ISOsConfig, cloneSourceDisk EmulateSSD: disks[idx].SSD, IOThread: disks[idx].IOThread, Backup: backup, + Replicate: replicate, }, } for { @@ -521,6 +527,7 @@ func generateProxmoxDisks(disks []diskConfig, isos []ISOsConfig, cloneSourceDisk Discard: disks[idx].Discard, EmulateSSD: disks[idx].SSD, Backup: backup, + Replicate: replicate, }, } for { @@ -554,6 +561,7 @@ func generateProxmoxDisks(disks []diskConfig, isos []ISOsConfig, cloneSourceDisk Discard: disks[idx].Discard, IOThread: disks[idx].IOThread, Backup: backup, + Replicate: replicate, }, } for { diff --git a/builder/proxmox/common/step_start_vm_test.go b/builder/proxmox/common/step_start_vm_test.go index a228778b..75e27bf5 100644 --- a/builder/proxmox/common/step_start_vm_test.go +++ b/builder/proxmox/common/step_start_vm_test.go @@ -521,6 +521,7 @@ func TestGenerateProxmoxDisks(t *testing.T) { Discard: false, SSD: false, ExcludeFromBackup: false, + SkipReplication: false, }, }, []ISOsConfig{}, @@ -541,6 +542,7 @@ func TestGenerateProxmoxDisks(t *testing.T) { EmulateSSD: false, IOThread: false, Backup: true, + Replicate: true, }, }, }, @@ -560,6 +562,7 @@ func TestGenerateProxmoxDisks(t *testing.T) { Discard: false, SSD: false, ExcludeFromBackup: false, + SkipReplication: false, }, }, []ISOsConfig{}, @@ -580,6 +583,7 @@ func TestGenerateProxmoxDisks(t *testing.T) { EmulateSSD: false, IOThread: true, Backup: true, + Replicate: true, }, }, }, @@ -599,6 +603,7 @@ func TestGenerateProxmoxDisks(t *testing.T) { Discard: false, SSD: false, ExcludeFromBackup: false, + SkipReplication: false, }, }, []ISOsConfig{}, @@ -619,6 +624,7 @@ func TestGenerateProxmoxDisks(t *testing.T) { Discard: false, IOThread: true, Backup: true, + Replicate: true, }, }, }, @@ -638,6 +644,7 @@ func TestGenerateProxmoxDisks(t *testing.T) { Discard: false, SSD: false, ExcludeFromBackup: false, + SkipReplication: false, }, }, []ISOsConfig{}, @@ -658,13 +665,14 @@ func TestGenerateProxmoxDisks(t *testing.T) { Discard: false, IOThread: true, Backup: true, + Replicate: true, }, }, }, }, }, { - "exclude disk from backup", + "exclude disk from backup and skip for replication jobs", []diskConfig{ { Type: "virtio", @@ -676,6 +684,7 @@ func TestGenerateProxmoxDisks(t *testing.T) { Discard: false, SSD: false, ExcludeFromBackup: true, + SkipReplication: true, }, }, []ISOsConfig{}, @@ -695,6 +704,7 @@ func TestGenerateProxmoxDisks(t *testing.T) { Discard: false, IOThread: true, Backup: false, + Replicate: false, }, }, }, diff --git a/docs-partials/builder/proxmox/common/diskConfig-not-required.mdx b/docs-partials/builder/proxmox/common/diskConfig-not-required.mdx index 7e880550..c419b19e 100644 --- a/docs-partials/builder/proxmox/common/diskConfig-not-required.mdx +++ b/docs-partials/builder/proxmox/common/diskConfig-not-required.mdx @@ -41,4 +41,7 @@ This cannot work with virtio disks. +- `skip_replication` (bool) - Exclude disk from replication jobs. + Defaults to false. +