I found a solution for my own backups by using the retry approach. I
placed these directives in my jobdefs for the jobs that might fail
because the VM's (clients) are down:
RerunFailedLevels = yes
RescheduleOnError = yes
RescheduleInterval = 6 hours
RescheduleTimes = 3
AllowDuplicateJobs = no
CancelQueuedDuplicates = yes
The last 2 directives may not be necessary, but it helps prevent bogging
down bareos. So what this does is re-try error'd jobs 3 times: Once
after 6 hours, then 12 hours, and then 18 hours after the original
attempt failed. By the time the 4th re-try would re-occur, we are
already into the next day, so it would be pointless to retry it a 4th time.
You might read about these in the docs to fully understand them. BTW,
I've been using this "recipe" for about 3 years now without problems.
I'm running bareos 16.2 director and storage daemons, with varying
bareos-fd clients.
Good luck.