- The Errata Tool developers have removed the
use_quay_for_containers
attribute on Product Versions. This update removes any processing for that field. - The
Release
class now correctly populates the.name
attribute on objects that you create with theid
keyword argument. This allows users to look up a release's name using its ID number.
- The errata-tool CLI has a new
add-bugs
sub-command that allows users to add bugs to an advisory.
- The errata-tool CLI
push
sub-command has two new options:--wait-for-state
and--push-when-ready
. These allow release engineers to wait and push advisories based on state. - The
Errataum
class has two new methods:comments()
retrieves all comments for an advisory, andaddComment()
adds a new comment to advisories.
- Add new
Bug
andJiraIssue
classes to represent Bugzilla and Jira tickets. Use the newbug
andjiraissue
CLI sub-commands to access the data in these classes from shell scripts. - The
render()
method on theProductVersion
class now displays theuse_quay_for_containers
value for each Product Version. Thedump-config
command now prints this setting.
- Fix a
TypeError
when adding Jira and RHBZ issues together in the same advisory.
- Erratum instances have new
.addJiraIssues()
and.removeJIRAIssues()
methods. Use these methods to modify the list of Jira issues attached to the advisory.
- The
render()
method on theProductVersion
class now displays theallow_rhn_debuginfo
value for each Product Version. Thedump-config
command now prints this configuration setting.
- Erratum instances have a new
.jira_issues
attribute. This is a list of the jira ticket IDs attached to the advisory.
- CLI: do not print duplicate CDN repositories in
dump-config
sub-command. - README: Fix code examples for
metadataCdnRepos()
andtextOnlyRepos()
.
- CLI: add a new
dump-config
sub-command. This makes it easier to dump a product's existing Errata Tool configuration into a format that Ansible can read later. This makes it easier for release engineers to transition products to use errata-tool-ansible. - Add a new
releases()
method to theProduct
class. This returns a list of releases associated with a product. - Add a new
render()
method to theRelease
class. This makes it easier to obtain the data from this class in a structured way.
- Replace requests-kerberos dependency with requests-gssapi. requests-kerberos is not well-maintained upstream and Fedora is dropping it entirely. requests-gssapi is an up-to-date replacement.
- Remove the
._username
property from theErrataConnector
class. The purpose of this property was to discover the Kerberos username. This is unnecessary and difficult to support with the switch to python-requests-gssapi. - Add a new
product_versions()
method to theProduct
class. This returns a list of product versions associated with a product. - Update
Product
andProductVersion
classes to use the Errata Tool's newer v1 API endpoints. This provides more data fields on these classes. - Add a new
render()
method to theProduct
,ProductVersion
, andVariant
classes. This makes it easier to obtain the data from these classes in a structured way. - Make the unit test suite pass on EPEL 7's pytest 2.7.0.
- Add a new
CdnRepo
class to represent Errata Tool CDN repository records. Add a newcdn_repos()
method to theVariant
class to find a list of cdn repos associated with a product variant. - Add a new
variants()
method to theProductVersion
class to find the list of variants associated with a product version. - Add a new
params
kwarg to theErrataConnector._get()
method. This properly encodes values for query strings in GET urls. - Handle "+" characters in
Release
names. - Fix the ability to modify owner emails and manager emails on existing
advisories with
Erratum.update(owner_email=<value>)
orErratum.update(manager_email=<value>)
. - Improve project CI with GitHub Actions and codecov.io.
- Fix warnings in RPM packaging
- Respect the batch_id for an
Erratum
attribute when calculating.publish_date
and the classstr
representation. Theerrata-tool advisory get <advisory_id>
command now shows the batch ID if the advisory is part of a batch update. - Fix the ability to set a new severity value on existing advisories with
Erratum.update(security_impact=<value>)
. - CLI: code optimization make it easier to add new sub-commands.
- RPM packaging is Python 3-only on Fedora and RHEL 8.
Lazy-load full Erratum information within the
Build
class. Prior to this change, when users queried a build, python-errata-tool would immediately load a lot of information about every advisory for that build. With this change, theBuild
class only loads the full advisories when users access the.released_errata
property.Users can also access the advisory ID numbers without loading all of the information about each advisory. This change adds two new properties to the
Build
class:.released_errata_id
and.all_errata_ids
.Get paginated data in the
Erratum.externalTests()
method. Prior to this change,externalTests()
would only return the first few test results. TheexternalTests()
method now returns the entire list of test results.CLI: add a
--status OPEN
alias to theerrata-tool release list-advisories
command. This allows users to list all the in-progress advisories for a release.Erratum: fix a crash when the Errata Tool returns
None
for a SHIPPED_LIVE advisory'sactual_ship_date
.Clean up API documentation
Test suite improvements
This release deletes all references to PDC (rhbz#1692965). In particular this removes:
- The
.is_pdc
attribute fromRelease
class - The
.supports_pdc
attribute fromProduct
class - Support for reading or updating PDC-type advisories (
Erratum
class)
- Add a new
.get_erratum_data()
method to theErratum
class to query the server's JSON for an advisory. Use this when debugging interactions with the Errata Tool or when passing this data on to other non-Python tools. - Add a new
.publish_date_override
attribute to theErratum
class to get the overridden date for an advisory.
- Make the
.package_owner_email
attribute to theErratum
class correspond to the Errata Tool's "package owner" for an advisory. Prior to this change,.package_owner_email
was the advisory reporter, not the package owner. - Add a new
.reporter
attribute to theErratum
class to get the reporter email address for an advisory.
- Add a new
.manager_id
attribute to theErratum
class to get the manager for an advisory. You can now optionally set the manager for a new advisory using the manager ID number instead of an email address. This makes it easier to clone advisories. - Fix the
__str__
method for theUser
class to print a real value instead of crashing.
- Add a new
.releasedBuilds()
method to theProductVersion
class to query all the released builds for this Product Version. - Add a new
.product_versions
attribute to theRelease
class to get the Product Versions for a release. - Improve debugging information for HTTP errors.
- Add API documentation for
push()
andaddBuilds()
methods. - Fix an argparse crash in the errata-tool CLI when running on Python 3.
- Add a new
.text_only_cpe
attribute to theErratum
class to get or set the CPE text for a text-only RHSA.
- Add a new
.textOnlyRepos()
method to theErratum
class to set or get the CDN repositories for a text-only advisory. - Add a new
.batch_id
attribute to theErratum
class to identify batches for an advisory. - Add a new
.cve_names
attribute to theErratum
class to identify CVEs for an advisory. - Add API documentation at https://errata-tool.readthedocs.io/en/latest/
- Add a new
.missing_prod_listings
attribute to theErratum
class to find builds on an advisory that lack any product listings. - When receiving an HTTP 500 response from the Errata Tool, add the server's
specific message to the
ErrataException
that we raise. This allows callers to discover the specific error details.
- Add new
Build
andProductVersion
classes - Add new
build
CLI sub-command to query builds by NVR - The
create()
method to theRelease
class always creates non-PDC releases now.
- Build system: install errata_tool.cli
- Build system: fix syntax error in Makefile
- Build system: avoid stray files in tarball during sdist build
- Add RHSA support (new
security_impact
kwarg when creating advisories) - Add a new
reloadBuilds()
method to theErratum
class to reload an advisory's product listings. - Discover the Kerberos username in the
ErrataConnector
class. - Add a new
.content_types
attribute to theErratum
class to discover if an advisory is an RPM or Docker advisory. - Add a new
metadataCdnRepos()
method to theErratum
class to set or get the CDN repositories for a container advisory. - Add a new
externalTests()
method to theErratum
class to discover the state of RPMDiff tests. - Add a new
advisories()
method to theRelease
class to discover all advisories for a release. - Add a new
push()
method to theErratum
class to push content to the stage or live CDN. - Add basic
errata-tool
CLI. - Several documentation fixes
- Add new Product, User, and Release classes
- Disable mutual auth for all HTTPS requests
- Code linting cleanup
- Include tests and license in source distribution
- Remove rpmdiff support (rpmdiff is now decoupled from ET)
- More examples in README
- Fix traceback in
ProductList
if a release has no versions associated. - Fix ability to change an existing advisory to be text-only or non-text-only.
- Basic PDC support: Gracefully handle PDC prefixes for advisory types.
- New project URL: https://github.com/red-hat-storage/errata-tool
- Avoid re-adding the RHSA severity prefix to an advisory's synopsis when making unrelated updates.
- Fix setuptools packaging problem with latest requests and urllib3.
Add
.creation_date
,.ship_date
, and.age
attributes to advisories.Age is the number of days between creation and ship date, or creation date and "today" if an erratum is not shipped.
This is useful for assembling historical data.
Product list functional changes
- Fetch all versions and releases for active products, even disabled ones,
- Assume users don't want inactive versions or releases, but allow them to query them using disabled=True when passed to get_versions() and get_releases()
- Allow users to drop certain releases if they want,
- Don't muck with async releases by default.
Product table version bumped since 'enabled' is now part of version/release information.
Add new
addCC()
method to advisories. Use this to add someone to the CC list for an advisory.
- Add
changeDocsReviewer()
method to set the docs reviewer on advisories. - Add product, release, and version handling (new
ProductList
class). - Add Python 3 support.
- Build both python2 and python3 subpackages on Fedora so that errata-tool can be integrated with other py2 libraries and scripts.
- Add basic unit tests.
- Fix code examples in README.
- When creating or updating an advisory, do not update the QE Owner or QE Group
if
qe_email
orqe_group
have been set to empty strings.
- Centralize URL construction logic in
connector.py
. Methods can now use ErrataConnector'scanonical_url()
to determine the proper URL for an API endpoint. - Document
setState()
method, and give an example of setting an advisory to "QE" state. - Add
addFlags()
andremoveFlags()
Erratum methods. - Add ship target (
published_date_override
) to Erratum debug output. - Support setting an Erratum's QE group.
- Document example of using the staging ET server
Drop the client-side check to make sure advisory was NEW_FILES before it would attempt to change anything.
This appears to be a legacy check that is no longer needed. We now let the Errata Tool return server-side errors if an update is not allowed.
- connector: Fix logic causing extraneous tracebacks on PUT/POST
- Allow setting to REL_PREP state
- Add errata call timings (see
ErrataConnector.debug
andErrataConnector.timings
documentation in README)
- Add needs_distqa flag checking
- Don't double-add builds (avoids traceback)
ErrataConnector
is now a proper new-style class, to make it easier to inherit with child classes.- packaging:
setup.py bump
now takes a --version flag, to make it easier to adopt semver
- New internal method you may want to override in a subclass:
Erratum._check_bugs()
- If an advisory is an RHSA, the
current_flags
attribute can contain eitherrequest_security
orneeds_security
.
- Remove extra print from
errataum.addBuildsDirect()
- Refactor Erratum's internal _fetch method (code reorganization). This will
make it easier to subclass and extend functionality. New internal methods you may want to override:
Erratum._cache_bug_info()
Erratum._need_rel_prep()
- Prepend exceptions with erratum ID if possible
- Erratum instances have a new
.text_only
attribute that isTrue
if an advisory is text-only, andFalse
if an advisory is a "normal" one. This attribute is writable, and you can also set thetext_only=True
kwarg during theErratum
constructor when creating an entirely new advisory.
- Erratum instances have a new
.embargoed
attribute that isTrue
if an advisory is embargoed, andFalse
if an advisory is not embargoed.
addBuilds()
handles non-RPMs.add
setFileInfo()
This release changes the signature of
addBuilds()
slightly. Prior to this release, you could call it like so:advisory.addBuilds(['build1', 'build2'], product_version)
After this change, release must be specified as a kwarg:
advisory.addBuilds(['build1', 'build2'], release=product_version)
- RPM packaging fixes
- Add full MIT license text to git repository and packaging
- More documentation in README
- Verify HTTPS certs by default
- Fix flake8 style errors
- Add bare-bones test suite
- Remove RHOS-specific calls to
syncBugs()
- Initial release