Revision be6c403e

b/NEWS
37 37
  a cluster from a machine by stopping all daemons, removing
38 38
  certificates and ssconf files. Unless the ``--no-backup`` option is
39 39
  given, copies of the certificates are made.
40
- Draining (``gnt-cluster queue drain``) and un-draining the job queue
41
  (``gnt-cluster queue undrain``) now affects all nodes in a cluster and
42
  the flag is not reset after a master failover.
40 43

  
41 44

  
42 45
Version 2.6.1
b/lib/jqueue.py
1800 1800
        logging.error("Failed to upload file %s to node %s: %s",
1801 1801
                      file_name, node_name, msg)
1802 1802

  
1803
    # Set queue drained flag
1804
    result = \
1805
      self._GetRpc(addrs).call_jobqueue_set_drain_flag([node_name],
1806
                                                       self._drained)
1807
    msg = result[node_name].fail_msg
1808
    if msg:
1809
      logging.error("Failed to set queue drained flag on node %s: %s",
1810
                    node_name, msg)
1811

  
1803 1812
    self._nodes[node_name] = node.primary_ip
1804 1813

  
1805 1814
  @locking.ssynchronized(_LOCK)
......
2123 2132
    @param drain_flag: Whether to set or unset the drain flag
2124 2133

  
2125 2134
    """
2135
    # Change flag locally
2126 2136
    jstore.SetDrainFlag(drain_flag)
2127 2137

  
2128 2138
    self._drained = drain_flag
2129 2139

  
2140
    # ... and on all nodes
2141
    (names, addrs) = self._GetNodeIp()
2142
    result = \
2143
      self._GetRpc(addrs).call_jobqueue_set_drain_flag(names, drain_flag)
2144
    self._CheckRpcResult(result, self._nodes,
2145
                         "Setting queue drain flag to %s" % drain_flag)
2146

  
2130 2147
    return True
2131 2148

  
2132 2149
  @_RequireOpenQueue
b/lib/rpc_defs.py
522 522
    ("jobqueue_rename", MULTI, None, constants.RPC_TMO_URGENT, [
523 523
      ("rename", None, None),
524 524
      ], None, None, "Rename job queue file"),
525
    ("jobqueue_set_drain_flag", MULTI, None, constants.RPC_TMO_URGENT, [
526
      ("flag", None, None),
527
      ], None, None, "Set job queue drain flag"),
525 528
    ]),
526 529
  "RpcClientBootstrap": _Prepare([
527 530
    ("node_start_master_daemons", SINGLE, None, constants.RPC_TMO_FAST, [
b/lib/server/noded.py
944 944
    # TODO: What if a file fails to rename?
945 945
    return [backend.JobQueueRename(old, new) for old, new in params[0]]
946 946

  
947
  @staticmethod
948
  @_RequireJobQueueLock
949
  def perspective_jobqueue_set_drain_flag(params):
950
    """Set job queue's drain flag.
951

  
952
    """
953
    (flag, ) = params
954

  
955
    return jstore.SetDrainFlag(flag)
956

  
947 957
  # hypervisor ---------------
948 958

  
949 959
  @staticmethod

Also available in: Unified diff