update_device: Revisit old changes and fix

There are 3 commits in this - 

Commits 1 & 2 were part of a change I started long ago that @cevich picked up and generated PR  1171 in virt-test before the split, see

https://github.com/autotest/virt-test/pull/1171

Since it's just been sitting there as the one test I don't run regularly - I figured it was time to pick the ball up and just get it work again - this is the result and is why there's a 3rd commit - to fix issues I found while working through the original changes.

Using these changes I get all 19 tests to pass

I'm ok with merging all these changes into one, but I thought it would be easier to compare where I started and where I finished up by splitting them up...