[Pkg-ganeti-devel] [ganeti] 15/165: Don't use snapshots on exports with instance turned off

Apollon Oikonomopoulos apoikos at moszumanska.debian.org
Tue Aug 11 13:53:08 UTC 2015


This is an automated email from the git hooks/post-receive script.

apoikos pushed a commit to branch master
in repository ganeti.

commit 8acbd9ced8f1830421d845b8bf8661d960bbac48
Author: Aaron Karper <akarper at google.com>
Date:   Tue Oct 21 20:00:27 2014 +0200

    Don't use snapshots on exports with instance turned off
    
    Since snapshotting isn't supported for some of the storage types, this
    actually allows for new cross-cluster exports, for example RBD.
    
    Signed-off-by: Aaron Karper <akarper at google.com>
    Reviewed-by: Hrvoje Ribicic <riba at google.com>
---
 lib/cmdlib/backup.py    | 5 ++++-
 lib/masterd/instance.py | 9 +++++----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/lib/cmdlib/backup.py b/lib/cmdlib/backup.py
index 0bcb23c..b5fd26d 100644
--- a/lib/cmdlib/backup.py
+++ b/lib/cmdlib/backup.py
@@ -457,7 +457,10 @@ class LUBackupExport(LogicalUnit):
       helper = masterd.instance.ExportInstanceHelper(self, feedback_fn,
                                                      self.instance)
 
-      helper.CreateSnapshots()
+      will_be_shut_down = (self.instance.admin_state != constants.ADMINST_UP or
+                           self.op.shutdown)
+      if (not will_be_shut_down or self.op.mode == constants.EXPORT_MODE_LOCAL):
+        helper.CreateSnapshots()
       try:
         if (self.op.shutdown and
             self.instance.admin_state == constants.ADMINST_UP and
diff --git a/lib/masterd/instance.py b/lib/masterd/instance.py
index 380f824..7ae3716 100644
--- a/lib/masterd/instance.py
+++ b/lib/masterd/instance.py
@@ -1162,7 +1162,7 @@ class ExportInstanceHelper(object):
     self._feedback_fn = feedback_fn
     self._instance = instance
 
-    self._snap_disks = []
+    self._snap_disks = {}
     self._removed_snaps = [False] * len(instance.disks)
 
   def CreateSnapshots(self):
@@ -1209,7 +1209,8 @@ class ExportInstanceHelper(object):
                                logical_id=disk_id, iv_name=disk.iv_name,
                                params=disk_params)
 
-      self._snap_disks.append(new_dev)
+      assert idx not in self._snap_disks
+      self._snap_disks[idx] = new_dev
 
     assert len(self._snap_disks) == len(instance.disks)
     assert len(self._removed_snaps) == len(instance.disks)
@@ -1221,7 +1222,7 @@ class ExportInstanceHelper(object):
     @param disk_index: Index of the snapshot to be removed
 
     """
-    disk = self._snap_disks[disk_index]
+    disk = self._snap_disks.get(disk_index)
     if disk and not self._removed_snaps[disk_index]:
       src_node = self._instance.primary_node
       src_node_name = self._lu.cfg.GetNodeName(src_node)
@@ -1254,7 +1255,7 @@ class ExportInstanceHelper(object):
 
     transfers = []
 
-    for idx, dev in enumerate(self._snap_disks):
+    for idx, dev in self._snap_disks.items():
       if not dev:
         transfers.append(None)
         continue

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ganeti/ganeti.git



More information about the Pkg-ganeti-devel mailing list