blob: 97bc3966ef801a41bc339da66d265541f82b0424 [file] [log] [blame]
#!/usr/bin/env python
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Simple utility script to read slave names and output their information."""
import argparse
import json
import os
import sys
# Install infra environment.
SCRIPTS_ROOT = os.path.abspath(os.path.join(
os.path.dirname(__file__), os.pardir))
sys.path.insert(0, SCRIPTS_ROOT)
from common import env
env.Install()
from common import chromium_utils
def main(args):
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--input', metavar='PATH',
type=argparse.FileType('r'), default=None,
help='Read slave names from this file (use - for STDIN).')
parser.add_argument('slave_names', nargs='*',
help='Individual names of slaves. Leave blank to read from STDIN.')
opts = parser.parse_args(args)
slave_names = set(opts.slave_names)
if not slave_names and not opts.input:
opts.input = sys.stdin
if opts.input:
slave_names.update(s.strip() for s in opts.input.read().split())
opts.input.close()
slaves = {}
for path in chromium_utils.ListMastersWithSlaves():
for slave in chromium_utils.GetSlavesFromMasterPath(path):
hostname = slave.get('hostname')
if hostname in slave_names:
slaves[hostname] = slave
json.dump(slaves, sys.stdout, indent=1, sort_keys=True)
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))