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