From f5dfbadb70453d751e6f0430dc5bbb692c18744d Mon Sep 17 00:00:00 2001 From: Kevin Fenzi Date: Apr 13 2019 21:24:25 +0000 Subject: Merge #7929 `Add script to populate fpdc releases` Signed-off-by: Kevin Fenzi --- diff --git a/scripts/fpdc/README.md b/scripts/fpdc/README.md new file mode 100644 index 0000000..2dd7fca --- /dev/null +++ b/scripts/fpdc/README.md @@ -0,0 +1,32 @@ +# Fedora Product Definition Center + +## Install fpdc-client + +Currently fpdc-client is only available on PyPI, so to use the scripts in this folder you need to use a virtual environment. + + $ python3 -m venv venv + $ source venv/bin/active + (venv) $ pip install fpdc-client + +## Add a new release in fpdc + +To add a new release in fpdc you can use the provided `create-new-release.py` script. + + (venv) $ python scripts/fpdc/create-new-release.py --releaseid fedora-28 --version 28 --release-date 2018-05-01 --eol-date 2019-06-01 --sigkey test + +The script has a flag to use the staging server for testing. + + (venv) $ python scripts/fpdc/create-new-release.py --staging --releaseid fedora-28 --version 28 --release-date 2018-05-01 --eol-date 2019-06-01 --sigkey test + + +## Authentication and Permissions + +fpdc is using FAS for authentication, when executing the script, you will be asked to login in the web browser using your FAS credentials. + +Once logged in fpdc will make sure that you have the correct permissions, currently members of the `releng-team` group are allowed to create/update/delete releases. + +## Deactivate the virtual environment + +When you are done you can leave the virtual environment. + + (venv) $ deactivate diff --git a/scripts/fpdc/create-new-release.py b/scripts/fpdc/create-new-release.py new file mode 100644 index 0000000..328a270 --- /dev/null +++ b/scripts/fpdc/create-new-release.py @@ -0,0 +1,72 @@ +""" create-new-release.py - Create a new release in FPDC. + +http://fpdc...fedoraproject.org/api/v1/release + +You can run this on your own machine and authenticate using your FAS credentials +You need to be a member of the releng FAS group to create new release. +""" + +import argparse + +from fpdc_client import FPDC, Release +from fpdc_client.base import STG_URL + +parser = argparse.ArgumentParser(description=__doc__) +parser.add_argument( + "--releaseid", + dest="releaseid", + required=True, + help="Name of the release (fedora-28, fedora-29, ..)", +) +parser.add_argument( + "--name", dest="name", default="Fedora", help="Name of the product (Fedora, EPEL, ..)" +) +parser.add_argument( + "--version", dest="version", required=True, help="Version (26, 27, ..)" +) +parser.add_argument( + "--release-date", + dest="releasedate", + required=True, + help="Date of the release (2017-11-14, ..)", +) +parser.add_argument( + "--eol-date", + dest="eoldate", + required=True, + help="Date of the release EOL (2018-11-30, ..)", +) +parser.add_argument("--sigkey", dest="sigkey", help="sigkey of the release") +parser.add_argument( + "--staging", dest="staging", help="Use FPDC staging instance", action="store_true" +) + +args = parser.parse_args() + + +if __name__ == "__main__": + + if args.staging: + server = FPDC(url=STG_URL) + else: + server = FPDC() + + server.connect() + server.login() + + new_release = Release.create( + { + "release_id": f"{args.releaseid}", + "short": f"f{args.version}", + "version": f"{args.version}", + "name": f"{args.name}", + "release_date": f"{args.releasedate}", + "eol_date": f"{args.eoldate}", + "sigkey": f"{args.sigkey}", + } + ) + + print(f"Release created:\t\t {new_release['release_id']}") + print(f"Release date:\t\t {new_release['release_date']}") + print(f"Release eol:\t\t {new_release['eol_date']}") + print(f"Release sigkey:\t\t {new_release['sigkey']}")