Bläddra i källkod

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
Marek Marczykowski-Górecki 7 år sedan
förälder
incheckning
fd3f19d4a6
2 ändrade filer med 17 tillägg och 8 borttagningar
  1. 13 7
      qubes/storage/file.py
  2. 4 1
      qubes/storage/lvm.py

+ 13 - 7
qubes/storage/file.py

@@ -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:

+ 4 - 1
qubes/storage/lvm.py

@@ -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'