storage: fix VM rename

When VM is renamed only volume.vid get updated, but not other attributes
calculated from it. Convert them to dynamic properties to not worry
about it.

QubesOS/qubes-issues#2256
This commit is contained in:
Marek Marczykowski-Górecki 2017-06-07 00:20:41 +02:00
parent 26f25aeecd
commit fd3f19d4a6
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724
2 changed files with 17 additions and 8 deletions

View File

@ -329,20 +329,26 @@ class FileVolume(qubes.storage.Volume):
raise qubes.storage.StoragePoolException(msg)
if self._is_snapshot:
self.path = os.path.join(self.dir_path, self.source + '.img')
img_name = self.source + '-cow.img'
self.path_source_cow = os.path.join(self.dir_path, img_name)
img_name = self.vid + '-cow.img'
self.path_cow = os.path.join(self.dir_path, img_name)
elif self._is_volume or self._is_volatile:
self.path = os.path.join(self.dir_path, self.vid + '.img')
pass
elif self._is_origin:
self.path = os.path.join(self.dir_path, self.vid + '.img')
img_name = self.vid + '-cow.img'
self.path_cow = os.path.join(self.dir_path, img_name)
pass
else:
assert False, 'This should not happen'
@property
def path(self):
if self._is_snapshot:
return os.path.join(self.dir_path, self.source + '.img')
return os.path.join(self.dir_path, self.vid + '.img')
@property
def path_cow(self):
img_name = self.vid + '-cow.img'
return os.path.join(self.dir_path, img_name)
def verify(self):
''' Verifies the volume. '''
if not os.path.exists(self.path) and not self._is_volatile:

View File

@ -362,12 +362,15 @@ class ThinVolume(qubes.storage.Volume):
msg = msg.format(self.name)
raise qubes.storage.StoragePoolException(msg)
self.path = '/dev/' + self.vid
if self.snap_on_start:
self._vid_snap = self.vid + '-snap'
self._size = size
@property
def path(self):
return '/dev/' + self.vid
@property
def revisions(self):
path = self.path + '-back'