Skip to content

Commit f6f8a26

Browse files
cfergeaudmacvicar
andauthored
Rework NetworkUpdate workaround (#950)
* Switch from github.com/libvirt/libvirt-go-xml to libvirt.org/go/libvirtxml This is the same go module, it was renamed so that it can start following go module versioning (only change major version if there are API/ABI breakages). github.com/libvirt/libvirt-go-xml is no longer maintained/updated. * Remove NetworkUpdate workaround The libvirt version check which is currently to decide whether to swap libvirt.NetworkUpdate arguments is not enough. The fix was backported to older libvirt in RHEL/CentOS (for example in libvirt-6.0.0-37.1.module+el8.5.0+13858+39fdc467 ), and the current version checking code would be swapping the arguments when it's no longer needed. This commit uses NetworkUpdateCompat which was recently introduced in digitalocean/go-libvirt, and which takes care of this by checking libvirt connection features. * update golangci-lint Co-authored-by: Duncan Mac-Vicar P <[email protected]>
1 parent 5b04aff commit f6f8a26

22 files changed

+35
-60
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
- name: golangci-lint
2828
uses: golangci/golangci-lint-action@v2
2929
with:
30-
version: v1.43.0
30+
version: v1.46.2
3131
only-new-issues: true
3232
build:
3333
name: Build

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@ require (
44
github.com/c4milo/gotoolkit v0.0.0-20170704181456-e37eeabad07e // indirect
55
github.com/coreos/go-semver v0.3.0 // indirect
66
github.com/davecgh/go-spew v1.1.1
7-
github.com/digitalocean/go-libvirt v0.0.0-20210723161134-761cfeeb5968
7+
github.com/digitalocean/go-libvirt v0.0.0-20220616141158-7ed4ed4decd9
88
github.com/fatih/color v1.10.0 // indirect
99
github.com/google/uuid v1.1.2
1010
github.com/hashicorp/terraform-plugin-sdk v1.9.0
1111
github.com/hooklift/assert v0.0.0-20170704181755-9d1defd6d214 // indirect
1212
github.com/hooklift/iso9660 v1.0.0
13-
github.com/libvirt/libvirt-go-xml v7.4.0+incompatible
1413
github.com/mattn/goveralls v0.0.2
1514
github.com/pborman/uuid v1.2.0 // indirect
1615
github.com/stretchr/testify v1.7.0
@@ -19,6 +18,7 @@ require (
1918
golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce
2019
golang.org/x/lint v0.0.0-20200302205851-738671d3881b
2120
gopkg.in/yaml.v2 v2.4.0 // indirect
21+
libvirt.org/go/libvirtxml v1.8003.0
2222
)
2323

2424
replace git.apache.org/thrift.git => github.com/apache/thrift v0.0.0-20180902110319-2566ecd5d999

go.sum

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
6363
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
6464
github.com/digitalocean/go-libvirt v0.0.0-20210723161134-761cfeeb5968 h1:ZdYBqLPrXioo+1Z97PWaTK4+jRcS45BI6JlepKtkPKI=
6565
github.com/digitalocean/go-libvirt v0.0.0-20210723161134-761cfeeb5968/go.mod h1:o129ljs6alsIQTc8d6eweihqpmmrbxZ2g1jhgjhPykI=
66+
github.com/digitalocean/go-libvirt v0.0.0-20220616141158-7ed4ed4decd9 h1:sORhX0pmJTbieCx5NMHcpTESQTQIJry+OGlSDZO7yKQ=
67+
github.com/digitalocean/go-libvirt v0.0.0-20220616141158-7ed4ed4decd9/go.mod h1:o129ljs6alsIQTc8d6eweihqpmmrbxZ2g1jhgjhPykI=
6668
github.com/dmacvicar/golang-x-crypto v0.0.0-20220126233154-a96af8f07497 h1:LBVsZYaxAt1v07hCDdhjL7F13238aw7ZLUOypcj/Uh8=
6769
github.com/dmacvicar/golang-x-crypto v0.0.0-20220126233154-a96af8f07497/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
6870
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
@@ -180,8 +182,6 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
180182
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
181183
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
182184
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
183-
github.com/libvirt/libvirt-go-xml v7.4.0+incompatible h1:+BBo2XjlT8pAK4pm+aSX8mC/6nc/rdRac10ZukpW31U=
184-
github.com/libvirt/libvirt-go-xml v7.4.0+incompatible/go.mod h1:oBlgD3xOA01ihiK5stbhFzvieyW+jVS6kbbsMVF623A=
185185
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
186186
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
187187
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
@@ -448,4 +448,6 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh
448448
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
449449
honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
450450
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
451+
libvirt.org/go/libvirtxml v1.8003.0 h1:7mwIQNem9/2xaRZONhUUh6z3W1do/6SqEHWlv5B6tes=
452+
libvirt.org/go/libvirtxml v1.8003.0/go.mod h1:7Oq2BLDstLr/XtoQD8Fr3mfDNrzlI3utYKySXF2xkng=
451453
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=

libvirt/disk_def.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"fmt"
55
"math/rand"
66

7-
"github.com/libvirt/libvirt-go-xml"
7+
"libvirt.org/go/libvirtxml"
88
)
99

1010
const oui = "05abcd"

libvirt/domain.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515
libvirt "github.com/digitalocean/go-libvirt"
1616
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
1717
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
18-
libvirtxml "github.com/libvirt/libvirt-go-xml"
18+
"libvirt.org/go/libvirtxml"
1919
)
2020

2121
const domWaitLeaseStillWaiting = "waiting-addresses"

libvirt/domain_def.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77

88
libvirt "github.com/digitalocean/go-libvirt"
99
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
10-
libvirtxml "github.com/libvirt/libvirt-go-xml"
10+
"libvirt.org/go/libvirtxml"
1111
)
1212

1313
// from existing domain return its XMLdefintion

libvirt/helpers_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import (
1313
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
1414
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
1515
"github.com/hashicorp/terraform-plugin-sdk/terraform"
16-
libvirtxml "github.com/libvirt/libvirt-go-xml"
1716
"github.com/terraform-providers/terraform-provider-ignition/ignition"
17+
"libvirt.org/go/libvirtxml"
1818
)
1919

2020
// This file contain function helpers used for testsuite/testacc

libvirt/network.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
libvirt "github.com/digitalocean/go-libvirt"
1010
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
1111
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
12-
libvirtxml "github.com/libvirt/libvirt-go-xml"
12+
"libvirt.org/go/libvirtxml"
1313
)
1414

1515
func waitForNetworkActive(virConn *libvirt.Libvirt, network libvirt.Network) resource.StateRefreshFunc {

libvirt/network_def.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"net"
88

99
libvirt "github.com/digitalocean/go-libvirt"
10-
libvirtxml "github.com/libvirt/libvirt-go-xml"
10+
"libvirt.org/go/libvirtxml"
1111
)
1212

1313
// HasDHCP checks if the network has a DHCP server managed by libvirt
@@ -87,9 +87,9 @@ func addHost(virConn *libvirt.Libvirt, n libvirt.Network, ip, mac, name string,
8787
log.Printf("Adding host with XML:\n%s", xmlDesc)
8888
// From https://libvirt.org/html/libvirt-libvirt-network.html#virNetworkUpdateFlags
8989
// Update live and config for hosts to make update permanent across reboots
90-
//
91-
// See networkUpdateWorkAroundLibvirt for more information about why this wrapper method exists
92-
return (&networkUpdateWorkaroundLibvirt{virConn}).NetworkUpdate(n, uint32(libvirt.NetworkUpdateCommandAddLast), uint32(libvirt.NetworkSectionIPDhcpHost), int32(xmlIdx), xmlDesc, libvirt.NetworkUpdateAffectConfig|libvirt.NetworkUpdateAffectLive)
90+
return virConn.NetworkUpdateCompat(n, libvirt.NetworkUpdateCommandAddLast,
91+
libvirt.NetworkSectionIPDhcpHost, int32(xmlIdx), xmlDesc,
92+
libvirt.NetworkUpdateAffectConfig|libvirt.NetworkUpdateAffectLive)
9393
}
9494

9595
// Update a static host from the network
@@ -98,9 +98,9 @@ func updateHost(virConn *libvirt.Libvirt, n libvirt.Network, ip, mac, name strin
9898
log.Printf("Updating host with XML:\n%s", xmlDesc)
9999
// From https://libvirt.org/html/libvirt-libvirt-network.html#virNetworkUpdateFlags
100100
// Update live and config for hosts to make update permanent across reboots
101-
//
102-
// See networkUpdateWorkAroundLibvirt for more information about why this wrapper method exists
103-
return (&networkUpdateWorkaroundLibvirt{virConn}).NetworkUpdate(n, uint32(libvirt.NetworkUpdateCommandModify), uint32(libvirt.NetworkSectionIPDhcpHost), int32(xmlIdx), xmlDesc, libvirt.NetworkUpdateAffectConfig|libvirt.NetworkUpdateAffectLive)
101+
return virConn.NetworkUpdateCompat(n, libvirt.NetworkUpdateCommandModify,
102+
libvirt.NetworkSectionIPDhcpHost, int32(xmlIdx), xmlDesc,
103+
libvirt.NetworkUpdateAffectConfig|libvirt.NetworkUpdateAffectLive)
104104
}
105105

106106
// Get the network index of the target network

libvirt/network_def_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
"testing"
77

88
"github.com/davecgh/go-spew/spew"
9-
libvirtxml "github.com/libvirt/libvirt-go-xml"
9+
"libvirt.org/go/libvirtxml"
1010
)
1111

1212
func init() {

0 commit comments

Comments
 (0)