[Libosinfo] [PATCH osinfo-db 2/6] Add scripts/osinfo-db-add-iso.py

Fabiano Fidêncio fidencio at redhat.com
Fri Mar 29 09:15:37 UTC 2019


On Fri, 2019-03-29 at 10:14 +0100, Fabiano Fidêncio wrote:
> On Wed, 2019-03-27 at 21:08 -0400, Cole Robinson wrote:
> > This script simplifies the process of adding new iso data to the
> > test suite and optionally filling in a <media> block for the <os>.
> > Call it like
> > 
> >   ./scripts/osinfo-db-add-iso.py SHORTID [--arch ARCH] ISOPATH
> > 
> > It will print a <media> block template to stdout, and generate a
> > correctly named data file in tests/isodata/
> > 
> > Signed-off-by: Cole Robinson <crobinso at redhat.com>
> > ---
> >  scripts/osinfo-db-add-iso.py | 113
> > +++++++++++++++++++++++++++++++++++
> >  1 file changed, 113 insertions(+)
> >  create mode 100755 scripts/osinfo-db-add-iso.py
> > 
> > diff --git a/scripts/osinfo-db-add-iso.py b/scripts/osinfo-db-add-
> > iso.py
> > new file mode 100755
> > index 0000000..8a16859
> > --- /dev/null
> > +++ b/scripts/osinfo-db-add-iso.py
> > @@ -0,0 +1,113 @@
> > +#!/usr/bin/env python3
> > +
> > +import argparse
> > +import distutils.spawn
> > +import os
> > +import sys
> > +import tempfile
> > +import time
> > +
> > +
> > +topdir = os.path.realpath(os.path.join(os.path.dirname(__file__),
> > ".."))
> > +datadir = os.path.join(topdir, "data")
> > +sys.path.insert(0, topdir)
> > +os.environ["INTERNAL_OSINFO_DB_DATA_DIR"] = datadir
> > +
> > +import tests.isodata
> > +import tests.util
> > +
> > +
> > +def fail(msg):
> > +    print(msg)
> > +    sys.exit(1)
> > +
> > +
> > +##############################
> > +# main() and option handling #
> > +##############################
> > +
> > +def _parse_args():
> > +    desc = ("Helper script for adding iso test data to the test "
> > +            "suite, and matching <os> <media> data to the DB")
> > +    parser = argparse.ArgumentParser(description=desc)
> > +
> > +    parser.add_argument("shortid", help="Which <os> short-id "
> > +            "the ISO is media for")
> > +    parser.add_argument("iso", help="The path to the ISO media")
> > +    parser.add_argument("--arch", default="x86_64",
> > +            help="The OS architecture the media is for.
> > default=x86_64")
> > +
> > +    options = parser.parse_args()
> > +    return options
> > +
> > +
> > +def _main():
> > +    """
> > +    This is a template for new command line programs. Copy and
> > edit
> > it!
> > +    """
> > +    options = _parse_args()
> > +
> > +    iso = os.path.realpath(os.path.abspath(options.iso))
> > +    isoinfobin = distutils.spawn.find_executable("isoinfo")
> > +    if not os.path.exists(iso):
> > +        fail("iso does not exist: %s" % iso)
> > +    if not isoinfobin:
> > +        fail("isoinfo is not installed")
> > +
> > +    osxml = None
> > +    for o in tests.util.DataFiles.oses():
> > +        if o.shortid == options.shortid:
> > +            osxml = o
> > +            break
> > +    if not osxml:
> > +        fail("Did not find any os shortid=%s" % options.shortid)
> > +        return
> 
> If I understand correctly, it'd simply abort in case I try to add a
> new
> version of an existing OS, right? For instance, the script would bail
> when trying to add the first fedora30 instance.
> 
> It's something we can definitely improve in the feature.

* future!

[snip]




More information about the Libosinfo mailing list