From 0c5cd9c0460accc52e7bdca625d455741f1f6b3a Mon Sep 17 00:00:00 2001 From: Flavio Castelli Date: Sun, 18 Feb 2018 14:25:07 +0100 Subject: Ensure libvirt connection is released Deallocate the libvirt connect object before exit. Fixes issue #266 Signed-off-by: Flavio Castelli --- main.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'main.go') diff --git a/main.go b/main.go index 08194c95..d84366ac 100644 --- a/main.go +++ b/main.go @@ -3,11 +3,29 @@ package main import ( "github.com/dmacvicar/terraform-provider-libvirt/libvirt" "github.com/hashicorp/terraform/plugin" + "log" "math/rand" "time" ) func main() { + defer func() { + if libvirt.LibvirtClient != nil { + alive, err := libvirt.LibvirtClient.IsAlive() + if err != nil { + log.Printf("[ERROR] cannot determine libvirt connection status: %v", err) + } + if alive { + ret, err := libvirt.LibvirtClient.Close() + if err != nil { + log.Printf("[ERROR] cannot close libvirt connection %d - %v", ret, err) + } else { + libvirt.LibvirtClient = nil + } + } + } + }() + plugin.Serve(&plugin.ServeOpts{ ProviderFunc: libvirt.Provider, }) -- cgit v1.2.3