Last change
on this file since 1308 was
1206,
checked in by broder, 16 years ago
|
Switch sipb-xen-base to build using a setup.py script
|
File size:
811 bytes
|
Line | |
---|
1 | from subprocess import PIPE, Popen |
---|
2 | from invirt.config import structs as config |
---|
3 | import yaml |
---|
4 | |
---|
5 | def bcast(cmd, hosts = [h.hostname for h in config.hosts]): |
---|
6 | """ |
---|
7 | Given a command and a list of hostnames or IPs, issue the command to all |
---|
8 | the nodes and return a list of (host, output) pairs (the order should be |
---|
9 | the same as the order of the hosts). |
---|
10 | """ |
---|
11 | pipes = [(host, |
---|
12 | Popen(['remctl', host, 'remote', 'web', cmd], stdout=PIPE)) |
---|
13 | for host in hosts] |
---|
14 | outputs = [(s, p.communicate()[0]) for (s, p) in pipes] |
---|
15 | for (s, p) in pipes: |
---|
16 | if p.returncode != 0: |
---|
17 | raise RuntimeError("remctl to host %s returned non-zero exit status %d" |
---|
18 | % (s, p.returncode)) |
---|
19 | return [(s, yaml.load(o, yaml.CSafeLoader)) for (s, o) in outputs] |
---|
Note: See
TracBrowser
for help on using the repository browser.