diff --git a/go.sum b/go.sum index 9e58b8da..897d068e 100644 --- a/go.sum +++ b/go.sum @@ -43,12 +43,6 @@ github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugX github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= -github.com/Telmate/proxmox-api-go v0.0.0-20211022153530-57ee1e4bd869 h1:IcMtti6HuXLZwUUkv+sEQSKwia+OCaeaBt5HFfDi668= -github.com/Telmate/proxmox-api-go v0.0.0-20211022153530-57ee1e4bd869/go.mod h1:keBhXWLa+UBajvf79xvKcfiqeIc7vZL9wOqxuy1CBGw= -github.com/Telmate/proxmox-api-go v0.0.0-20211023205737-5ce2d5fbf04e h1:cL8732QTN0+DqhOiHAL4aDSD1hwrIvOPl9c1mpCJbco= -github.com/Telmate/proxmox-api-go v0.0.0-20211023205737-5ce2d5fbf04e/go.mod h1:keBhXWLa+UBajvf79xvKcfiqeIc7vZL9wOqxuy1CBGw= -github.com/Telmate/proxmox-api-go v0.0.0-20211025150448-0cc61e17eed6 h1:NOMF/RS2IMr4ljhKUK0q8xi16a3K5tMi0mAwCzdfp90= -github.com/Telmate/proxmox-api-go v0.0.0-20211025150448-0cc61e17eed6/go.mod h1:keBhXWLa+UBajvf79xvKcfiqeIc7vZL9wOqxuy1CBGw= github.com/Telmate/proxmox-api-go v0.0.0-20211101191122-8bbe30eb7171 h1:XHB+u94AWr9xDbQXqzCIeuGvq7devG5FS8OmAL3clQM= github.com/Telmate/proxmox-api-go v0.0.0-20211101191122-8bbe30eb7171/go.mod h1:keBhXWLa+UBajvf79xvKcfiqeIc7vZL9wOqxuy1CBGw= github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= @@ -235,8 +229,6 @@ github.com/hashicorp/terraform-plugin-sdk/v2 v2.8.0 h1:GSumgrL6GGcRYU37YuF1CC59h github.com/hashicorp/terraform-plugin-sdk/v2 v2.8.0/go.mod h1:6KbP09YzlB++S6XSUKYl83WyoHVN4MgeoCbPRsdfCtA= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493 h1:brI5vBRUlAlM34VFmnLPwjnCL/FxAJp9XvOdX6Zt+XE= -github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/hashicorp/yamux v0.0.0-20211028200310-0bc27b27de87 h1:xixZ2bWeofWV68J+x6AzmKuVM/JWCQwkWm6GW/MUR6I= github.com/hashicorp/yamux v0.0.0-20211028200310-0bc27b27de87/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= @@ -322,8 +314,6 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.25.0 h1:Rj7XygbUHKUlDPcVdoLyR91fJBsduXj5fRxyqIQj/II= -github.com/rs/zerolog v1.25.0/go.mod h1:7KHcEGe0QZPOm2IE4Kpb5rTh6n1h2hIgS5OOnu1rUaI= github.com/rs/zerolog v1.26.0 h1:ORM4ibhEZeTeQlCojCK2kPz1ogAY4bGs4tD+SaAdGaE= github.com/rs/zerolog v1.26.0/go.mod h1:yBiM87lvSqX8h0Ww4sdzNSkVYZ8dL2xjZJG1lAuGZEo= github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= @@ -355,14 +345,11 @@ github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6e github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty v1.8.4/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= -github.com/zclconf/go-cty v1.9.1 h1:viqrgQwFl5UpSxc046qblj78wZXVDFnSOufaOTER+cc= -github.com/zclconf/go-cty v1.9.1/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty v1.10.0 h1:mp9ZXQeIcN8kAwuqorjH+Q+njbJKjLrvB2yIh4q7U+0= github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= @@ -449,8 +436,6 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211020060615-d418f374d309 h1:A0lJIi+hcTR6aajJH4YqKWwohY4aW9RO7oRMcdv+HKI= -golang.org/x/net v0.0.0-20211020060615-d418f374d309/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211101193420-4a448f8816b3 h1:VrJZAjbekhoRn7n5FBujY31gboH+iB3pdLxn3gE9FjU= golang.org/x/net v0.0.0-20211101193420-4a448f8816b3/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -508,14 +493,6 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211020174200-9d6173849985 h1:LOlKVhfDyahgmqa97awczplwkjzNaELFg3zRIJ13RYo= -golang.org/x/sys v0.0.0-20211020174200-9d6173849985/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211023085530-d6a326fbbf70 h1:SeSEfdIxyvwGJliREIJhRPPXvW6sDlLT+UQ3B0hD0NA= -golang.org/x/sys v0.0.0-20211023085530-d6a326fbbf70/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211025112917-711f33c9992c h1:i4MLwL3EbCgobekQtkVW94UBSPLMadfEGtKq+CAFsEU= -golang.org/x/sys v0.0.0-20211025112917-711f33c9992c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 h1:2B5p2L5IfGiD7+b9BOoRMC6DgObAVZV+Fsp050NqXik= -golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211102192858-4dd72447c267 h1:7zYaz3tjChtpayGDzu6H0hDAUM5zIGA2XW7kRNgQ0jc= golang.org/x/sys v0.0.0-20211102192858-4dd72447c267/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= @@ -570,8 +547,6 @@ golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200713011307-fd294ab11aed/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.7 h1:6j8CgantCy3yc8JGBqkDLMKWqZ0RDU2g1HVgacojGWQ= golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -632,10 +607,6 @@ google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1m google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200711021454-869866162049/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20211021150943-2b146023228c h1:FqrtZMB5Wr+/RecOM3uPJNPfWR8Upb5hAPnt7PU6i4k= -google.golang.org/genproto v0.0.0-20211021150943-2b146023228c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211026145609-4688e4c4e024 h1:aePO4E0x+Urj9V5NQHjqOpaNG4oMeHQq0l2ob05z5tI= -google.golang.org/genproto v0.0.0-20211026145609-4688e4c4e024/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211102202547-e9cf271f7f2c h1:UQDUEuW1R2dcciOjiFmuzE4skW4n/zGGNMU0RhU3hQI= google.golang.org/genproto v0.0.0-20211102202547-e9cf271f7f2c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -654,8 +625,6 @@ google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.41.0 h1:f+PlOh7QV4iIJkPrx5NQ7qaNGFQ3OTse67yaDHfju4E= -google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= google.golang.org/grpc v1.42.0 h1:XT2/MFpuPFsEX2fWh3YQtHkZ+WYZFQRfaUgLZYj/p6A= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= diff --git a/proxmox/resource_lxc.go b/proxmox/resource_lxc.go index 9173e354..56693581 100644 --- a/proxmox/resource_lxc.go +++ b/proxmox/resource_lxc.go @@ -655,14 +655,13 @@ func resourceLxcUpdate(d *schema.ResourceData, meta interface{}) error { } func resourceLxcRead(d *schema.ResourceData, meta interface{}) error { - pconf := meta.(*providerConfiguration) - lock := pmParallelBegin(pconf) - defer lock.unlock() return _resourceLxcRead(d, meta) } func _resourceLxcRead(d *schema.ResourceData, meta interface{}) error { pconf := meta.(*providerConfiguration) + lock := pmParallelBegin(pconf) + defer lock.unlock() client := pconf.Client _, _, vmID, err := parseResourceId(d.Id()) if err != nil { diff --git a/proxmox/resource_vm_qemu.go b/proxmox/resource_vm_qemu.go index 6b0850a4..e80d5bea 100755 --- a/proxmox/resource_vm_qemu.go +++ b/proxmox/resource_vm_qemu.go @@ -72,10 +72,10 @@ func resourceVmQemu() *schema.Resource { Description: "VM autostart on boot", }, "oncreate": { - Type: schema.TypeBool, - Optional: true, - Default: true, - Description: "VM autostart on create", + Type: schema.TypeBool, + Optional: true, + Default: true, + Description: "VM autostart on create", }, "tablet": { Type: schema.TypeBool, @@ -669,7 +669,7 @@ func resourceVmQemuCreate(d *schema.ResourceData, meta interface{}) error { pconf := meta.(*providerConfiguration) lock := pmParallelBegin(pconf) - defer lock.unlock() + //defer lock.unlock() client := pconf.Client vmName := d.Get("name").(string) vga := d.Get("vga").(*schema.Set) @@ -790,36 +790,12 @@ func resourceVmQemuCreate(d *schema.ResourceData, meta interface{}) error { log.Print("[DEBUG][QemuVmCreate] cloning VM") err = config.CloneVm(sourceVmr, vmr, client) - if err != nil { return err } - //CLONE VM SHOULD RETURN ONLY IF THE TASK ENDED! - // Waiting for the clone to become ready and - // read back all the current disk configurations from proxmox - // this allows us to receive updates on the post-clone state of the vm we're building - log.Print("[DEBUG][QemuVmCreate] Waiting for clone becoming ready") - var config_post_clone *pxapi.ConfigQemu - cloneTimeout := d.Timeout(schema.TimeoutCreate) - cloneWaitEnd := time.Now().Add(time.Duration(cloneTimeout)) - log.Printf("[DEBUG][clone] retrying for at most %v minutes before giving up\n", cloneTimeout) - log.Printf("[DEBUG][clone] retries will end at %s\n", cloneWaitEnd) - - for time.Now().Before(cloneWaitEnd) { - // // Wait until we can actually retrieve the config from the cloned machine - config_post_clone, err = pxapi.NewConfigQemuFromApi(vmr, client) - if config_post_clone != nil { - break - // to prevent an infinite loop we check for any other error - // this error is actually fine because the clone is not ready yet - } else if err.Error() != "[DEBUG][clone] vm locked, could not obtain config" { - return err - } - time.Sleep(5 * time.Second) - log.Print("[DEBUG][clone] Clone still not ready, checking again") - } + time.Sleep(30 * time.Second) - config_post_clone, err = pxapi.NewConfigQemuFromApi(vmr, client) + config_post_clone, err := pxapi.NewConfigQemuFromApi(vmr, client) if err != nil { return err } @@ -854,6 +830,7 @@ func resourceVmQemuCreate(d *schema.ResourceData, meta interface{}) error { err = prepareDiskSize(client, vmr, qemuDisks) if err != nil { + d.SetId(resourceId(targetNode, "qemu", vmr.VmId())) return err } @@ -918,23 +895,23 @@ func resourceVmQemuCreate(d *schema.ResourceData, meta interface{}) error { log.Print("[DEBUG][QemuVmCreate] oncreate = false, not starting VM") } - err := initConnInfo(d, pconf, client, vmr, &config, lock) - if err != nil { - return err - } - - return _resourceVmQemuRead(d, meta) + // err := initConnInfo(d, pconf, client, vmr, &config, lock) + // if err != nil { + // return err + // } + log.Print("[DEBUG][QemuVmCreate] vm creation done!") + lock.unlock() + return resourceVmQemuRead(d, meta) } func resourceVmQemuUpdate(d *schema.ResourceData, meta interface{}) error { pconf := meta.(*providerConfiguration) + lock := pmParallelBegin(pconf) + //defer lock.unlock() // create a logger for this function logger, _ := CreateSubLogger("resource_vm_update") - lock := pmParallelBegin(pconf) - defer lock.unlock() - client := pconf.Client _, _, vmID, err := parseResourceId(d.Id()) if err != nil { @@ -1205,20 +1182,21 @@ func resourceVmQemuUpdate(d *schema.ResourceData, meta interface{}) error { } else if err != nil { return err } - - return _resourceVmQemuRead(d, meta) + lock.unlock() + return resourceVmQemuRead(d, meta) } func resourceVmQemuRead(d *schema.ResourceData, meta interface{}) error { - pconf := meta.(*providerConfiguration) - lock := pmParallelBegin(pconf) - defer lock.unlock() return _resourceVmQemuRead(d, meta) } func _resourceVmQemuRead(d *schema.ResourceData, meta interface{}) error { pconf := meta.(*providerConfiguration) + lock := pmParallelBegin(pconf) + defer lock.unlock() client := pconf.Client + // create a logger for this function + logger, _ := CreateSubLogger("resource_vm_read") _, _, vmID, err := parseResourceId(d.Id()) if err != nil { @@ -1226,10 +1204,7 @@ func _resourceVmQemuRead(d *schema.ResourceData, meta interface{}) error { return fmt.Errorf("unexpected error when trying to read and parse the resource: %v", err) } - // create a logger for this function - logger, _ := CreateSubLogger("resource_vm_read") logger.Info().Int("vmid", vmID).Msg("Reading configuration for vmid") - vmr := pxapi.NewVmRef(vmID) // Try to get information on the vm. If this call err's out @@ -1240,12 +1215,24 @@ func _resourceVmQemuRead(d *schema.ResourceData, meta interface{}) error { d.SetId("") return nil } - config, err := pxapi.NewConfigQemuFromApi(vmr, client) if err != nil { return err } + vmState, err := client.GetVmState(vmr) + log.Printf("[DEBUG] VM status: %s", vmState["status"]) + if err == nil && vmState["status"] == "started" { + log.Printf("[DEBUG] VM is running, cheking the IP") + err = initConnInfo(d, pconf, client, vmr, config, lock) + if err != nil { + return err + } + } + if err != nil { + return err + } + logger.Debug().Int("vmid", vmID).Msgf("[READ] Received Config from Proxmox API: %+v", config) d.SetId(resourceId(vmr.Node(), "qemu", vmr.VmId())) @@ -1480,9 +1467,12 @@ func prepareDiskSize( logger.Debug().Int("diskId", diskID).Msgf("Checking disk sizing. Original '%+v', New '%+v'", diskSize, clonedDiskSize) if diskSize > clonedDiskSize { logger.Debug().Int("diskId", diskID).Msgf("Resizing disk. Original '%+v', New '%+v'", diskSize, clonedDiskSize) - _, err = client.ResizeQemuDiskRaw(vmr, diskName, diskConf["size"].(string)) - if err != nil { - return err + for ii := 0; ii < 5; ii++ { + _, err = client.ResizeQemuDisk(vmr, diskName, int(diskSize-clonedDiskSize)) + if err == nil { + break + } + time.Sleep(time.Duration(10) * time.Second) } } else if diskSize == clonedDiskSize || diskSize <= 0 { logger.Debug().Int("diskId", diskID).Msgf("Disk is same size as before, skipping resize. Original '%+v', New '%+v'", diskSize, clonedDiskSize) @@ -1764,7 +1754,7 @@ func initConnInfo( // } // Done with proxmox API, end parallel and do the SSH things - lock.unlock() + //lock.unlock() if sshHost == "" { return fmt.Errorf("cannot find any IP address") }