summaryrefslogtreecommitdiff
path: root/conmux
diff options
context:
space:
mode:
authorjadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4>2008-06-06 21:10:57 +0000
committerjadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4>2008-06-06 21:10:57 +0000
commit45510bde8d4a2c6d08b2331f723ec5d37b6cdbe2 (patch)
tree4e2892a8aa650003f797983621cfd86290ead6af /conmux
parente7e5318f8309211f07a3683fb168d21718f701a7 (diff)
Convert all python code to use four-space indents instead of eight-space tabs.
Signed-off-by: John Admanski <jadmanski@google.com> git-svn-id: svn://test.kernel.org/autotest/trunk@1658 592f7852-d20e-0410-864c-8624ca9c26a4
Diffstat (limited to 'conmux')
-rw-r--r--conmux/contrib/console_check.py516
1 files changed, 258 insertions, 258 deletions
diff --git a/conmux/contrib/console_check.py b/conmux/contrib/console_check.py
index eb0f37d3..7e450e81 100644
--- a/conmux/contrib/console_check.py
+++ b/conmux/contrib/console_check.py
@@ -7,8 +7,8 @@ _author_ = 'Scott Zawalski (scottz@google.com)'
Checks if machines are not only connected to conmux but also
responding in an expected way
- Supports options to show all, good, bad, unknown and add them
- to autotest as well.
+ Supports options to show all, good, bad, unknown and add them
+ to autotest as well.
*In order for the power update option to work you have to have
access to the etc directory of the conmux server
@@ -19,285 +19,285 @@ from optparse import OptionParser
def main(argv):
- consoles = {}
- consoles['good'] = []
- consoles['bad'] = []
- consoles['unknown'] = []
- # 0, 1, 2 status
- STATUS = [ 'good', 'bad', 'unknown']
- parser = OptionParser()
- parser.add_option('--conmux-server', dest="conmux_server",
- default='localhost',
- help="Conmux server to connect to")
- parser.add_option('--conmux-dir', dest="conmux_dir",
- default='/usr/local/conmux',
- help="Conmux server to connect to")
- parser.add_option('--console-binary', dest="console_binary",
- default='/usr/local/conmux/bin/console',
- help="Conmux console binary location")
- parser.add_option('--autotest-cli-dir', dest="autotest_cli_dir",
- default='/usr/local/autotest/cli',
- help="Autotest CLI dir")
- parser.add_option('--add-hosts',
- action="store_true", dest="add_hosts",
- default=False,
- help="If host not on autotest server try to add it")
- parser.add_option('--power-label', dest="power_label",
- default='remote-power',
- help="Label to add to hosts that support hard reset")
- parser.add_option('--console-label', dest="console_label",
- default='console',
- help="Label to add to hosts that support console")
- parser.add_option('--update-console-label',
- action="store_true", dest="update_console_label",
- default=False,
- help="Update console label on autotest server")
- parser.add_option('--update-power-label',
- action="store_true", dest="update_power_label",
- default=False,
- help="Update power label on autotest server" +\
- "*Note this runs then exists no consoles are checked")
- parser.add_option('--verbose',
- action="store_true", dest="verbose",
- default=False,
- help="Verbose output")
- parser.add_option('--show-bad',
- action="store_true", dest="show_bad",
- default=False,
- help="Show consoles that are no longer functioning")
- parser.add_option('--show-good',
- action="store_true", dest="show_good",
- default=False,
- help="Show consoles that are functioning properly")
- parser.add_option('--show-unknown',
- action="store_true", dest="show_unknown",
- default=False,
- help="Show consoles that are in an unknown state")
- parser.add_option('--show-all',
- action="store_true", dest="show_all",
- default=False,
- help="Show status of all consoles")
- options, args = parser.parse_args()
- if len(argv) == 2 and options.verbose:
- parser.print_help()
- return 1
- elif len(argv) < 2:
- parser.print_help()
- return 1
-
- if options.update_power_label:
- remove_create_label(options.power_label,
- options.autotest_cli_dir)
- update_power_label(options.power_label, options.conmux_dir,
- options.autotest_cli_dir, options.add_hosts)
- return
- print options.console_binary
- if not os.path.exists(options.console_binary):
- print "Error %s does not exist, please specify another path" %\
- options.console_binary
- return 1
- hosts = get_console_hosts(options.console_binary, options.conmux_server)
- for host in hosts:
- rc = check_host(host, options.console_binary)
- if options.verbose is True:
- print "%s status: %s" % (host, STATUS[rc])
- consoles[STATUS[rc]].append(host)
-
- if options.show_all:
- for status in consoles:
- print "--- %s ---" % status
- for host in consoles[status]:
- print host
- if options.show_good:
- print "--- good ---"
- for host in consoles['good']:
- print host
- if options.show_bad:
- print "--- bad ---"
- for host in consoles['bad']:
- print host
- if options.show_unknown:
- print "--- unknown ---"
- for host in consoles['unknown']:
- print host
-
- if options.update_console_label:
- remove_create_label(options.console_label,
- options.autotest_cli_dir)
- update_console_label(options.console_label, consoles['good'],
- options.autotest_cli_dir, options.add_hosts)
-
+ consoles = {}
+ consoles['good'] = []
+ consoles['bad'] = []
+ consoles['unknown'] = []
+ # 0, 1, 2 status
+ STATUS = [ 'good', 'bad', 'unknown']
+ parser = OptionParser()
+ parser.add_option('--conmux-server', dest="conmux_server",
+ default='localhost',
+ help="Conmux server to connect to")
+ parser.add_option('--conmux-dir', dest="conmux_dir",
+ default='/usr/local/conmux',
+ help="Conmux server to connect to")
+ parser.add_option('--console-binary', dest="console_binary",
+ default='/usr/local/conmux/bin/console',
+ help="Conmux console binary location")
+ parser.add_option('--autotest-cli-dir', dest="autotest_cli_dir",
+ default='/usr/local/autotest/cli',
+ help="Autotest CLI dir")
+ parser.add_option('--add-hosts',
+ action="store_true", dest="add_hosts",
+ default=False,
+ help="If host not on autotest server try to add it")
+ parser.add_option('--power-label', dest="power_label",
+ default='remote-power',
+ help="Label to add to hosts that support hard reset")
+ parser.add_option('--console-label', dest="console_label",
+ default='console',
+ help="Label to add to hosts that support console")
+ parser.add_option('--update-console-label',
+ action="store_true", dest="update_console_label",
+ default=False,
+ help="Update console label on autotest server")
+ parser.add_option('--update-power-label',
+ action="store_true", dest="update_power_label",
+ default=False,
+ help="Update power label on autotest server" +\
+ "*Note this runs then exists no consoles are checked")
+ parser.add_option('--verbose',
+ action="store_true", dest="verbose",
+ default=False,
+ help="Verbose output")
+ parser.add_option('--show-bad',
+ action="store_true", dest="show_bad",
+ default=False,
+ help="Show consoles that are no longer functioning")
+ parser.add_option('--show-good',
+ action="store_true", dest="show_good",
+ default=False,
+ help="Show consoles that are functioning properly")
+ parser.add_option('--show-unknown',
+ action="store_true", dest="show_unknown",
+ default=False,
+ help="Show consoles that are in an unknown state")
+ parser.add_option('--show-all',
+ action="store_true", dest="show_all",
+ default=False,
+ help="Show status of all consoles")
+ options, args = parser.parse_args()
+ if len(argv) == 2 and options.verbose:
+ parser.print_help()
+ return 1
+ elif len(argv) < 2:
+ parser.print_help()
+ return 1
+
+ if options.update_power_label:
+ remove_create_label(options.power_label,
+ options.autotest_cli_dir)
+ update_power_label(options.power_label, options.conmux_dir,
+ options.autotest_cli_dir, options.add_hosts)
+ return
+ print options.console_binary
+ if not os.path.exists(options.console_binary):
+ print "Error %s does not exist, please specify another path" %\
+ options.console_binary
+ return 1
+ hosts = get_console_hosts(options.console_binary, options.conmux_server)
+ for host in hosts:
+ rc = check_host(host, options.console_binary)
+ if options.verbose is True:
+ print "%s status: %s" % (host, STATUS[rc])
+ consoles[STATUS[rc]].append(host)
+
+ if options.show_all:
+ for status in consoles:
+ print "--- %s ---" % status
+ for host in consoles[status]:
+ print host
+ if options.show_good:
+ print "--- good ---"
+ for host in consoles['good']:
+ print host
+ if options.show_bad:
+ print "--- bad ---"
+ for host in consoles['bad']:
+ print host
+ if options.show_unknown:
+ print "--- unknown ---"
+ for host in consoles['unknown']:
+ print host
+
+ if options.update_console_label:
+ remove_create_label(options.console_label,
+ options.autotest_cli_dir)
+ update_console_label(options.console_label, consoles['good'],
+ options.autotest_cli_dir, options.add_hosts)
+
def update_console_label(console_label, consoles, cli_dir, add_hosts=False):
- """Update CONSOLE_LABEL on your autotest server.
- This removes the label and recreates it, then populating the label
- with all the machines your conmux server knows about.
-
- *Note If the hosts do not exist they are created.
- Args:
- console_label:
- string, describes the autotest label to add to machines.
- consoles:
- list, all the consoles that have confirmed console support.
- """
- # TODO: Update to new CLI and change logic until then
- # this is the best way to ensure a machine is added i.e. one at a time
-
- for host in consoles:
- if not host_label_add(host, console_label, cli_dir):
- # Try to create host
- if add_hosts:
- if host_create(host, cli_dir):
- host_label_add(host, power_label,
- cli_dir)
- else:
- print "Unable to add host " + host
+ """Update CONSOLE_LABEL on your autotest server.
+ This removes the label and recreates it, then populating the label
+ with all the machines your conmux server knows about.
+
+ *Note If the hosts do not exist they are created.
+ Args:
+ console_label:
+ string, describes the autotest label to add to machines.
+ consoles:
+ list, all the consoles that have confirmed console support.
+ """
+ # TODO: Update to new CLI and change logic until then
+ # this is the best way to ensure a machine is added i.e. one at a time
+
+ for host in consoles:
+ if not host_label_add(host, console_label, cli_dir):
+ # Try to create host
+ if add_hosts:
+ if host_create(host, cli_dir):
+ host_label_add(host, power_label,
+ cli_dir)
+ else:
+ print "Unable to add host " + host
def update_power_label(power_label, conmux_dir, cli_dir, add_hosts=False):
- """Look in CONSOLE_DIR/etc and grab known power commands
- Then remove POWER_LABEL and add machines to that label
- """
- # remove label and add it
- for host in hard_reset_hosts(conmux_dir):
- rc = label_add_host(host, power_label, cli_dir)
- if not rc:
- # Try to create the host
- if add_hosts:
- if host_create(host, cli_dir):
- rc = label_add_host(host, power_label,
- cli_dir)
- else:
- print "Unable to add host " + host
-
-
-def hard_reset_hosts(conmux_dir):
- """Go through conmux dir and find hosts that have reset commands"""
- config_dir = os.path.join(conmux_dir, "etc")
- hosts = []
- for file in os.listdir(config_dir):
- if not file.endswith(".cf"):
- continue
- file_path = os.path.join(config_dir, file)
- try:
- try:
- f = open(file_path)
- for line in f:
- if "reset" in line:
- hosts.append(file.rstrip(".cf"))
- except IOError:
- pass
- finally:
- f.close()
- return hosts
+ """Look in CONSOLE_DIR/etc and grab known power commands
+ Then remove POWER_LABEL and add machines to that label
+ """
+ # remove label and add it
+ for host in hard_reset_hosts(conmux_dir):
+ rc = label_add_host(host, power_label, cli_dir)
+ if not rc:
+ # Try to create the host
+ if add_hosts:
+ if host_create(host, cli_dir):
+ rc = label_add_host(host, power_label,
+ cli_dir)
+ else:
+ print "Unable to add host " + host
+
+
+def hard_reset_hosts(conmux_dir):
+ """Go through conmux dir and find hosts that have reset commands"""
+ config_dir = os.path.join(conmux_dir, "etc")
+ hosts = []
+ for file in os.listdir(config_dir):
+ if not file.endswith(".cf"):
+ continue
+ file_path = os.path.join(config_dir, file)
+ try:
+ try:
+ f = open(file_path)
+ for line in f:
+ if "reset" in line:
+ hosts.append(file.rstrip(".cf"))
+ except IOError:
+ pass
+ finally:
+ f.close()
+ return hosts
def host_create(host, cli_dir):
- """Create a host
- Return:
- True, if successfuly false if failed
- """
- cmd = "%s/host-create %s" % (cli_dir, host)
- status, output = commands.getstatusoutput(cmd)
- return status == 0
+ """Create a host
+ Return:
+ True, if successfuly false if failed
+ """
+ cmd = "%s/host-create %s" % (cli_dir, host)
+ status, output = commands.getstatusoutput(cmd)
+ return status == 0
def label_add_host(host, label, cli_dir):
- """Add a host to a label"""
- host_cmd = "%s/label-add-hosts %s %s" % (cli_dir, label, host)
- (status, output) = commands.getstatusoutput(host_cmd)
- if status != 0:
- return False
+ """Add a host to a label"""
+ host_cmd = "%s/label-add-hosts %s %s" % (cli_dir, label, host)
+ (status, output) = commands.getstatusoutput(host_cmd)
+ if status != 0:
+ return False
- return True
+ return True
def remove_create_label(label, cli_dir):
- """Remove and recreate a given label"""
- cmd = "%s/label-rm %s" % (cli_dir, label)
- status, output = commands.getstatusoutput(cmd)
- if status != 0:
- raise Exception("Error deleting label: " + label)
+ """Remove and recreate a given label"""
+ cmd = "%s/label-rm %s" % (cli_dir, label)
+ status, output = commands.getstatusoutput(cmd)
+ if status != 0:
+ raise Exception("Error deleting label: " + label)
- cmd = "%s/label-create %s" % (cli_dir, label)
- status, output = commands.getstatusoutput(cmd)
- if status != 0:
- raise Exception("Error creating label: " + label + output)
+ cmd = "%s/label-create %s" % (cli_dir, label)
+ status, output = commands.getstatusoutput(cmd)
+ if status != 0:
+ raise Exception("Error creating label: " + label + output)
- return True
+ return True
def get_console_hosts(console_binary, conmux_server):
- """Use console to collect console hosts and return a list.
-
- Args:
- console_binary:
- string, location of the conmux console binary
- conmux_server:
- string, hostname of the conmux server
-
- Returns:
- A List of console conmux is currently running on.
- """
-
- hosts_list = []
- cmd = "%s --list %s" % (console_binary, conmux_server)
- for line in commands.getoutput(cmd).split('\n'):
- host = (line.split(' '))[0]
- hosts_list.append(host)
-
- return hosts_list
+ """Use console to collect console hosts and return a list.
+
+ Args:
+ console_binary:
+ string, location of the conmux console binary
+ conmux_server:
+ string, hostname of the conmux server
+
+ Returns:
+ A List of console conmux is currently running on.
+ """
+
+ hosts_list = []
+ cmd = "%s --list %s" % (console_binary, conmux_server)
+ for line in commands.getoutput(cmd).split('\n'):
+ host = (line.split(' '))[0]
+ hosts_list.append(host)
+
+ return hosts_list
def check_host(host, console_binary):
- """Check hosts for common errors and return the status.
-
- Args:
- host:
- string, the console host identifier
-
- console_binary:
- string, location of the conmux console binary
- Returns:
- int, 0: Machine state is good
- int, 1: Machine state is bad
- int, 2: Machine state is unknown
- """
- RESPONSES = [ host + ' login:',
- 'ENOENT entry not found',
- 'login:',
- 'Connection refused',
- '<<<NOT CONNECTED>>>',
- 'Authentication failure',
- 'Give root password for maintenance', ]
-
- cmd = '%s %s' % (console_binary, host)
- shell = pexpect.spawn(cmd)
-
- shell.send('\r\n')
- shell.send('\r\n')
- shell.send('\r\n')
- try:
- # May need to increase the timeout but good so far
- response = shell.expect(RESPONSES, 1)
- except pexpect.TIMEOUT:
- shell.sendline('~$')
- shell.expect('>')
- shell.sendline('quit')
- return 1
- except pexpect.EOF:
- # unknown error
- shell.sendline('~$')
- shell.expect('>')
- shell.sendline('quit')
- return 2
- # TODO: Change actions based on what server returned
- if response == 0:
- # OK response
- return 0
- else:
- return 1
+ """Check hosts for common errors and return the status.
+
+ Args:
+ host:
+ string, the console host identifier
+
+ console_binary:
+ string, location of the conmux console binary
+ Returns:
+ int, 0: Machine state is good
+ int, 1: Machine state is bad
+ int, 2: Machine state is unknown
+ """
+ RESPONSES = [ host + ' login:',
+ 'ENOENT entry not found',
+ 'login:',
+ 'Connection refused',
+ '<<<NOT CONNECTED>>>',
+ 'Authentication failure',
+ 'Give root password for maintenance', ]
+
+ cmd = '%s %s' % (console_binary, host)
+ shell = pexpect.spawn(cmd)
+
+ shell.send('\r\n')
+ shell.send('\r\n')
+ shell.send('\r\n')
+ try:
+ # May need to increase the timeout but good so far
+ response = shell.expect(RESPONSES, 1)
+ except pexpect.TIMEOUT:
+ shell.sendline('~$')
+ shell.expect('>')
+ shell.sendline('quit')
+ return 1
+ except pexpect.EOF:
+ # unknown error
+ shell.sendline('~$')
+ shell.expect('>')
+ shell.sendline('quit')
+ return 2
+ # TODO: Change actions based on what server returned
+ if response == 0:
+ # OK response
+ return 0
+ else:
+ return 1
if __name__ == '__main__':
- main(sys.argv)
+ main(sys.argv)