Revision d0cd1368 lib/cmdlib/group.py
b/lib/cmdlib/group.py | ||
---|---|---|
28 | 28 |
from ganeti import errors |
29 | 29 |
from ganeti import locking |
30 | 30 |
from ganeti import objects |
31 |
from ganeti import opcodes |
|
31 | 32 |
from ganeti import qlang |
32 | 33 |
from ganeti import query |
33 | 34 |
from ganeti import utils |
... | ... | |
834 | 835 |
|
835 | 836 |
return (run_nodes, run_nodes) |
836 | 837 |
|
838 |
@staticmethod |
|
839 |
def _MigrateToFailover(op): |
|
840 |
"""Return an equivalent failover opcode for a migrate one. |
|
841 |
|
|
842 |
If the argument is not a failover opcode, return it unchanged. |
|
843 |
|
|
844 |
""" |
|
845 |
if not isinstance(op, opcodes.OpInstanceMigrate): |
|
846 |
return op |
|
847 |
else: |
|
848 |
return opcodes.OpInstanceFailover( |
|
849 |
instance_name=op.instance_name, |
|
850 |
instance_uuid=getattr(op, "instance_uuid", None), |
|
851 |
target_node=getattr(op, "target_node", None), |
|
852 |
target_node_uuid=getattr(op, "target_node_uuid", None), |
|
853 |
ignore_ipolicy=op.ignore_ipolicy, |
|
854 |
cleanup=op.cleanup) |
|
855 |
|
|
837 | 856 |
def Exec(self, feedback_fn): |
838 | 857 |
inst_names = list(self.owned_locks(locking.LEVEL_INSTANCE)) |
839 | 858 |
|
... | ... | |
856 | 875 |
self.LogInfo("Iallocator returned %s job(s) for evacuating node group %s", |
857 | 876 |
len(jobs), self.op.group_name) |
858 | 877 |
|
878 |
if self.op.force_failover: |
|
879 |
self.LogInfo("Will insist on failovers") |
|
880 |
jobs = [[self._MigrateToFailover(op) for op in job] for job in jobs] |
|
881 |
|
|
859 | 882 |
if self.op.sequential: |
860 | 883 |
self.LogInfo("Jobs will be submitted to run sequentially") |
861 | 884 |
for job in jobs[1:]: |
Also available in: Unified diff