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