Revision c92b310a lib/cmdlib.py

b/lib/cmdlib.py
74 74
    self.op = op
75 75
    self.cfg = cfg
76 76
    self.sstore = sstore
77
    self.__ssh = None
78

  
77 79
    for attr_name in self._OP_REQP:
78 80
      attr_val = getattr(op, attr_name, None)
79 81
      if attr_val is None:
......
89 91
          raise errors.OpPrereqError("Commands must be run on the master"
90 92
                                     " node %s" % master)
91 93

  
94
  def __GetSSH(self):
95
    """Returns the SshRunner object
96

  
97
    """
98
    if not self.__ssh:
99
      self.__ssh = ssh.SshRunner()
100
    return self.__ssh
101

  
102
  ssh = property(fget=__GetSSH)
103

  
92 104
  def CheckPrereq(self):
93 105
    """Check prerequisites for this LU.
94 106

  
......
1229 1241

  
1230 1242
    rpc.call_node_leave_cluster(node.name)
1231 1243

  
1232
    ssh.SSHCall(node.name, 'root', "%s stop" % constants.NODE_INITD_SCRIPT)
1244
    self.ssh.Run(node.name, 'root', "%s stop" % constants.NODE_INITD_SCRIPT)
1233 1245

  
1234 1246
    logger.Info("Removing node %s from config" % node.name)
1235 1247

  
......
1539 1551
                  constants.SSL_CERT_FILE, gntpem,
1540 1552
                  constants.NODE_INITD_SCRIPT))
1541 1553

  
1542
    result = ssh.SSHCall(node, 'root', mycommand, batch=False, ask_key=True)
1554
    result = self.ssh.Run(node, 'root', mycommand, batch=False, ask_key=True)
1543 1555
    if result.failed:
1544 1556
      raise errors.OpExecError("Remote command on node %s, error: %s,"
1545 1557
                               " output: %s" %
......
1597 1609
                                 " you gave (%s). Please fix and re-run this"
1598 1610
                                 " command." % new_node.secondary_ip)
1599 1611

  
1600
    success, msg = ssh.VerifyNodeHostname(node)
1612
    success, msg = self.ssh.VerifyNodeHostname(node)
1601 1613
    if not success:
1602 1614
      raise errors.OpExecError("Node '%s' claims it has a different hostname"
1603 1615
                               " than the one the resolver gives: %s."
......
1623 1635
    if self.sstore.GetHypervisorType() == constants.HT_XEN_HVM31:
1624 1636
      to_copy.append(constants.VNC_PASSWORD_FILE)
1625 1637
    for fname in to_copy:
1626
      if not ssh.CopyFileToNode(node, fname):
1638
      if not self.ssh.CopyFileToNode(node, fname):
1627 1639
        logger.Error("could not copy file %s to node %s" % (fname, node))
1628 1640

  
1629 1641
    logger.Info("adding node %s to cluster.conf" % node)
......
1767 1779
    for node in self.nodes:
1768 1780
      if node == myname:
1769 1781
        continue
1770
      if not ssh.CopyFileToNode(node, filename):
1782
      if not self.ssh.CopyFileToNode(node, filename):
1771 1783
        logger.Error("Copy of file %s to node %s failed" % (filename, node))
1772 1784

  
1773 1785

  
......
1810 1822
    """
1811 1823
    data = []
1812 1824
    for node in self.nodes:
1813
      result = ssh.SSHCall(node, "root", self.op.command)
1825
      result = self.ssh.Run(node, "root", self.op.command)
1814 1826
      data.append((node, result.output, result.exit_code))
1815 1827

  
1816 1828
    return data

Also available in: Unified diff