diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/hostinfo | 55 |
1 files changed, 36 insertions, 19 deletions
diff --git a/bin/hostinfo b/bin/hostinfo index 8700be7..639102c 100755 --- a/bin/hostinfo +++ b/bin/hostinfo @@ -8,6 +8,8 @@ import os import pkg_resources from dns import resolver, reversename +from typing import Optional + OWN_DIRECTORY = os.path.dirname(os.path.abspath(os.path.realpath(__file__))) LIB = os.path.join(OWN_DIRECTORY, '..') if os.path.exists(os.path.join(LIB, 'hostinfo')): @@ -16,9 +18,11 @@ if os.path.exists(os.path.join(LIB, 'hostinfo')): from hostinfo import printer from hostinfo import utils + def _get_data(path): - stream = file(path, 'r') - return yaml.load(stream) + stream = open(path, 'r') + return yaml.safe_load(stream) + def _match_key(data, keys): if data is None: @@ -53,6 +57,7 @@ def _match_key(data, keys): return None + def _match(host, search_key, search_value, negate): search_keys = search_key.split('.') @@ -71,6 +76,7 @@ def _match(host, search_key, search_value, negate): return (search_key, result) return (search_key, None) + def _parse_search(search): if search[0] != '?': sys.stderr.write("Invalid search string.") @@ -90,10 +96,13 @@ def _parse_search(search): return (search, value, negate) -def print_search(basepath, flags, search, filter_key=None): + +def print_search(basepath: str, flags: argparse.Namespace, + search: str, filter_key: Optional[str] = None): def _get_label(host): if flags.short: - return host.replace('.spline.inf.fu-berlin.de','') + return host.replace('.spline.inf.fu-berlin.de', + '') return host metadata = os.path.join(basepath, 'metadata', 'hosts') @@ -110,7 +119,7 @@ def print_search(basepath, flags, search, filter_key=None): key, result = _match(data, search_key, search_value, negate) if result is not None: if flags.only_names: - print(_get_label(host)) + print((_get_label(host))) continue p = printer.Printer(data, flags) @@ -119,30 +128,32 @@ def print_search(basepath, flags, search, filter_key=None): maxlength=max(length), force=True) else: if key is None: - print(_get_label(host)) + print((_get_label(host))) else: p.info(key, label=_get_label(host), maxlength=max(length), force=True) + def print_info(path, flags, key=None): data = _get_data(path) p = printer.Printer(data, flags) p.info(key) + def print_keys(path): def _print_keys(data, prefix = ''): if isinstance(data, str): return - for key in data.keys(): - print "%s%s" % (prefix, key) + for key in list(data.keys()): + print("%s%s" % (prefix, key)) if key == 'addresses': - for k in utils.group_by(data[key], 'interface').keys(): - print "%s%s.%s" % (prefix, key, k) + for k in list(utils.group_by(data[key], 'interface').keys()): + print("%s%s.%s" % (prefix, key, k)) elif key == 'ports': - for k in utils.group_by(data[key], 'process', 'UNKNOWN').keys(): - print "%s%s.%s" % (prefix, key, k) + for k in list(utils.group_by(data[key], 'process', 'UNKNOWN').keys()): + print("%s%s.%s" % (prefix, key, k)) elif isinstance(data[key], dict): _print_keys(data[key], "%s%s." % (prefix, key)) elif isinstance(data[key], list): @@ -152,14 +163,15 @@ def print_keys(path): data = _get_data(path) _print_keys(data) -def print_hosts(path, short): + +def print_hosts(path: str, short: bool): metadata = os.path.join(path, 'metadata', 'hosts') if os.path.exists(metadata): - hosts = yaml.load(file(metadata, 'r')) + hosts = yaml.safe_load(open(metadata, 'r')) if 'hosts' in hosts: for host in hosts['hosts']: if short: - print(host.replace('.spline.inf.fu-berlin.de','')) + print((host.replace('.spline.inf.fu-berlin.de',''))) else: print(host) return True @@ -167,7 +179,8 @@ def print_hosts(path, short): sys.stderr.write("'%s' not found!\n" % metadata) return False -def find_host(basepath, host): + +def find_host(basepath: str, host: str): path = os.path.join(basepath, host) if os.path.exists(path): return path @@ -191,6 +204,7 @@ def find_host(basepath, host): return None + def print_version_and_exit(): ver = None try: @@ -202,10 +216,11 @@ def print_version_and_exit(): if ver is None: sys.stderr.write('Unable to identify the version information.') sys.exit(1) - print("hostinfo-tools %s" % ver) + print(("hostinfo-tools %s" % ver)) sys.exit(0) -def main(): + +def main() -> None: basepath = '/usr/local/share/hostinfo' if 'HOSTINFO_PATH' in os.environ and os.environ['HOSTINFO_PATH'] != '': basepath = os.environ['HOSTINFO_PATH'] @@ -256,7 +271,8 @@ def main(): if args.name.startswith('?'): # search - print_search(basepath, search=args.name, filter_key=args.filter, flags=args) + print_search(basepath, search=args.name, filter_key=args.filter, + flags=args) else: # info path = find_host(basepath, args.name) @@ -273,5 +289,6 @@ def main(): sys.exit(0) + if __name__ == '__main__': main() |