@@ -207,17 +207,28 @@ func (s *ProxmoxService) WaitForDisk(node string, vmid int, maxWait time.Duratio
207207 if configResp .HardDisk != "" {
208208 pendingReq := tools.ProxmoxAPIRequest {
209209 Method : "GET" ,
210- Endpoint : fmt .Sprintf ("/nodes/%s/qemu/%d/pending " , node , vmid ),
210+ Endpoint : fmt .Sprintf ("/nodes/%s/storage/%s/content?vmid=%d " , node , s . Config . StorageID , vmid ),
211211 }
212212
213- pendingResponse , err := s .RequestHelper .MakeRequest (pendingReq )
214- log .Printf ("Pending response for VMID %d on node %s: %s" , vmid , node , string (pendingResponse ))
215- if err != nil && strings .Contains (err .Error (), "does not exist" ) {
216- log .Printf ("Disk for VMID %d on node %s not ready yet: %v" , vmid , node , err )
217- continue // Disk not synced yet
213+ var diskResponse []PendingDiskResponse
214+ err := s .RequestHelper .MakeRequestAndUnmarshal (pendingReq , & diskResponse )
215+ if err != nil || len (diskResponse ) == 0 {
216+ log .Printf ("Error retrieving pending disk info for VMID %d on node %s: %v" , vmid , node , err )
217+ continue
218+ }
219+
220+ // Iterate through all disks, if all have valid Used and Size (not 0) consider available
221+ allAvailable := true
222+ for _ , disk := range diskResponse {
223+ if disk .Used == 0 || disk .Size == 0 {
224+ allAvailable = false
225+ break
226+ }
218227 }
219228
220- return nil // Disk is available
229+ if allAvailable {
230+ return nil // Disk is available
231+ }
221232 }
222233 }
223234
0 commit comments