[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