Revision b3989551 scripts/gnt-cluster

b/scripts/gnt-cluster
22 22
import sys
23 23
from optparse import make_option
24 24
import pprint
25
import os.path
25 26

  
26 27
from ganeti.cli import *
27 28
from ganeti import opcodes
......
29 30
from ganeti import errors
30 31
from ganeti import utils
31 32
from ganeti import bootstrap
33
from ganeti import ssh
34
from ganeti import ssconf
32 35

  
33 36

  
34 37
def InitCluster(opts, args):
......
156 159
    nodes - list containing the name of target nodes; if empty, all nodes
157 160

  
158 161
  """
159
  op = opcodes.OpClusterCopyFile(filename=args[0], nodes=opts.nodes)
160
  SubmitOpCode(op)
162
  filename = args[0]
163
  if not os.path.exists(filename):
164
    raise errors.OpPrereqError("No such filename '%s'" % filename)
165

  
166
  myname = utils.HostInfo().name
167

  
168
  op = opcodes.OpQueryNodes(output_fields=["name"], names=opts.nodes)
169
  results = [row[0] for row in SubmitOpCode(op) if row[0] != myname]
170
  srun = ssh.SshRunner()
171
  for node in results:
172
    if not srun.CopyFileToNode(node, filename):
173
      print >> sys.stderr, ("Copy of file %s to node %s failed" %
174
                            (filename, node))
175

  
161 176
  return 0
162 177

  
163 178

  
......
172 187

  
173 188
  """
174 189
  command = " ".join(args)
175
  nodes = opts.nodes
176
  op = opcodes.OpRunClusterCommand(command=command, nodes=nodes)
177
  result = SubmitOpCode(op)
178
  for node, output, exit_code in result:
190
  op = opcodes.OpQueryNodes(output_fields=["name"], names=opts.nodes)
191
  nodes = [row[0] for row in SubmitOpCode(op)]
192

  
193
  sstore = ssconf.SimpleStore()
194
  master_node = sstore.GetMasterNode()
195
  srun = ssh.SshRunner(sstore=sstore)
196

  
197
  if master_node in nodes:
198
    nodes.remove(master_node)
199
    nodes.append(master_node)
200

  
201
  for name in nodes:
202
    result = srun.Run(name, "root", command)
179 203
    print ("------------------------------------------------")
180
    print ("node: %s" % node)
181
    print ("%s" % output)
182
    print ("return code = %s" % exit_code)
204
    print ("node: %s" % name)
205
    print ("%s" % result.output)
206
    print ("return code = %s" % result.exit_code)
207

  
208
  return 0
183 209

  
184 210

  
185 211
def VerifyCluster(opts, args):

Also available in: Unified diff