#!/usr/bin/env python3 import os import pprint import sys os.environ["OSINFO_SYSTEM_DIR"] = "/home/crobinso/src/osinfo-db/data" sys.path.insert(0, "/home/crobinso/src/virt-manager/") from virtinst import OSDB if len(sys.argv) != 2: print("USAGE: %s " % (os.path.basename(sys.argv[0]))) sys.exit(1) short_id = sys.argv[1] def smart_dir(_o): # Find all Libosinfo get_ functions for the passed object _dir = [] for f in dir(_o): if not f.startswith("get_"): continue if f.startswith("get_param_"): continue attr = getattr(_o, f) if (hasattr(attr, "get_namespace") and getattr(_o, f).get_namespace() == "Libosinfo"): _dir.append(f) return _dir o = OSDB.lookup_os(short_id)._os ldir = smart_dir(o) def p(fieldname, func): val = getattr(o, func)() ldir.remove(func) print("%-12s: %s" % (fieldname, val)) p("id", "get_id") p("vendor", "get_vendor") p("short-id", "get_short_id") p("name", "get_name") p("release-date", "get_release_date_string") p("eol-date", "get_eol_date_string") p("version", "get_version") p("codename", "get_codename") p("family", "get_family") p("distro", "get_distro") p("logo", "get_logo") p("release-status", "get_release_status") print("\nDevices:") devs = o.get_all_devices() for idx in range(devs.get_length()): devobj = devs.get_nth(idx) print(" name=%-20s class=%s" % (devobj.get_name(), devobj.get_class())) print("\nMinimum Resources:") resources = o.get_minimum_resources() for resobj in [resources.get_nth(i) for i in range(resources.get_length())]: print(" arch=%s: ram=%-5s cpu=%s n-cpus=%s storage=%s" % (resobj.get_architecture(), resobj.get_ram(), resobj.get_cpu(), resobj.get_n_cpus(), resobj.get_storage())) print("\nRecommended Resources:") resources = o.get_recommended_resources() for resobj in [resources.get_nth(i) for i in range(resources.get_length())]: print(" arch=%s: ram=%-5s cpu=%s n-cpus=%s storage=%s" % (resobj.get_architecture(), resobj.get_ram(), resobj.get_cpu(), resobj.get_n_cpus(), resobj.get_storage())) #pprint.pprint(ldir)