- Updated various dependencies.
- Applied code style fixes reported by rustc and clippy.
- Replace calls of deprecated APIs of
chrono
. - MSRV is bumped to 1.71 to match dependencies.
- Updated various dependencies.
- Applied code style fixes reported by clippy.
- Update tests for new Fedora releases.
- Derive
Default
implementations for enums where possible. - Revert back to using rpassword v5 in example code for now.
This release contains a few small improvements and updates to match changes in bodhi server code.
Added:
- added
eol
field to theRelease
struct - added
critpath_gtoups
field to theUpdate
struct
Changed:
- dropped the
oldtime
feature ofchrono
to remove the dependency on the obsolete version 0.1 of thetime
crate - adapted tests for new and out-of-date Fedora releases
- mark structs with the
#[non_exhaustive]
attribute instead of using private fields - ported from
lazy_static
toonce_cell
Fixed:
- fixed the
deprecated(since)
annotation for thecomposes
field of theRelease
struct
This release contains a few small improvements and fixes for upcoming bodhi server behaviour changes:
The OpenID endpoint for logging into bodhi servers will be deprecated with bodhi
6.0 servers, but will remain available under a different URL for now. The
primary method of authentication will be OpenID Connect, which is not going to
be supported in the fedora
crate anytime soon, as it does not look like it
will support headless authentication, but will require the user to sign on via a
web browser window to retrieve an authentication token. With version 2.0.1 of
this crate, the authentication method was changed to explicitly use the
deprecated OpenID endpoint, until OpenID connect support can be implemented in a
way that works for this crate and its users.
Additionally, bodhi servers will no longer include the composes
field when
serializing Release
objects. As a result, the struct field has been marked as
deprecated
, but otherwise it remains the same for backwards compatibility.
However, because JSON server responses will no longer include this field, it
will always contain a value of None
, and should no longer be used.
The changes since 2.0.0 also include additions to the test dataset and test suite that cover the latest Fedora releases:
- remove Fedora 33 and EPEL-6 from the lists of active releases
- add missing tests and test data for Fedora 36 and 37 releases
This release contains no code changes compared to the previous beta. The only
changes are some updated crate dependencies (to match the versions that are
available from Fedora repositories at the time of publishing), and simplified
doctests (making it possible to drop the dev-dependency on tokio-test
, which
was only used in some doctests that were not even run, but only compiled).
For a complete list of changes since v1.1.1
, read the release notes for the
last two beta releases.
This beta release only includes some code cleanups and small improvements for error messages and documentation.
This version is an almost-complete rewrite of the entire crate, with numerous changes and improvements.
Most notably, all network calls that use the underlying fedora
crate are now
non-blocking / async
.
The API for making requests has been completely rewritten with simplified traits, and it is now explicit when which requests will be processed as paginated queries based on the trait they implement.
The rewritten API also makes it very easy to expose requests for specific pages of paginated results, which was not the case in older versions of this crate.
The FedoraRelease
type has been converted from an enumerated value (which
made it necessary to release new versions of this crate for new Fedora or EPEL
releases) to a newtype wrapper around string types with a validated format. This
is intended to be a more future-proof solution, as only the format of release
identifier strings is now validated, but the strings themselves are not compared
to a list of hard-coded known release identifiers.
Overview of changes since version 1.1.1:
- ported to use asynchronous network calls exposed by
fedora
v2.0.0+ - ported all examples and tests to use
#[tokio::test]
, though all library code of this crate is runtime-agnostic - use re-exported
reqwest
andurl
fromfedora
, since those crates are part of the public API and version needs to match the one exposed by thefedora
crate - renamed
BodhiService
toBodhiClient
, as that matches what it does - removed all specialized traits for
Query
/PaginatedQuery
,Create
, andEdit
in favor of using onlyRequest
andPaginatedRequest
- simplified error types (removed
ServiceError
, its variants have been merged into theQueryError
type), and added a specific error for invalid input data - reimplemented
FedoraRelease
enum as a newtype wrapper around string types, making the crate more future-proof, as this does not require code changes for supporting new Fedora or EPEL releases every few months - make it impossible to construct most "output-only" types outside this crate
- expose APIs for running single-page queries for specific result pages
Development-specific changes:
- python scripts for generating integration tests have been rewritten to use Jinja2 templates, making the code moch more easy to maintain or adapt
- added property-based tests for validating the regular expressions used to
parse and validate
FedoraRelease
values from strings
Additionally, every line of documentation has been rewritten from scratch to
make sure it matches the latest state of the crate. The NEWS.md
changelog is
now also imported into the crate's documentation.
Changes:
- add EPEL 9 (
EPEL-9
andEPEL-9N
) variants toFedoraRelease
- add workarounds for slightly broken generated deserialization tests
Changes:
- require
fedora = ^1.1
for better OpenID session / cookie cache support
Improvements:
- add all F35 and F36 variants to
FedoraRelease
Improvements:
- add
EPEL8N
as validFedoraRelease
variant
Improvements:
- add
F35
as validFedoraRelease
variant - add
F35C
as validFedoraRelease
variant - add
F34F
as validFedoraRelease
variant - add
F34M
as validFedoraRelease
variant
Internal changes:
- updated
reqwest
from0.10
to0.11
- updated
fedora
from0.2.1
to1.0
- port from
failure
tothiserror
This is a routine update with no user-facing changes.
The attached test data for offline tests contains a data dump of the Fedora bodhi instance from Nov. 30, 2020, just after the fedora 31 EOL date.
This is the first "stable" release of bodhi-rs.
Compared to 0.6.4, it brings only some minor API changes, primarily to no longer hide some Vec allocations, which allows writing more efficient code in some situations: Query arguments that allow multiple arguments now take a Vec of values directly instead of being callable multiple times. Of course, all examples and tests were adapted to reflect this change.
This release only contains non-code changes:
- exclude both the
.github
folder andrustfmt.toml
from published crates
Improvements:
F34C
as validFedoraRelease
variant- minor code cleanups thanks to clippy
Improvements:
- add
F33F
as validFedoraRelease
variant - add
F33M
as validFedoraRelease
variant
Improvements:
- add
F34
as validFedoraRelease
variant
Bug fixes:
- adapt to bodhi API response schema changes (causes a minor API change)
Improvements:
- add
ELN
as validFedoraRelease
variant
New features:
- add new magic
__archived__
,__pending__
, and__current__
releases
They can be used as shortcuts when querying updates for currently archived, pending, or current releases.
Improvements:
- add
F32F
as validFedoraRelease
variant
Improvements:
- add
F33C
as validFedoraRelease
variant
Improvements:
- add
F32M
as validFedoraRelease
variant
Improvements:
- add
F33
as validFedoraRelease
variant - add
F33
test targets
New features:
- add
url()
method onBug
(link to Red Hat Bugzilla ticket) - add
url()
method onTestCase
(link to https://fedoraproject.org wiki)
Bump retry
and serde_url_params
dependencies.
Fix exclude
pattern in Cargo.toml
so only the /tests
directory in the
project root is excluded, and not the src/tests
module. Now tests can be
run from the crate downloaded from https://crates.io.
Finally: Fixed providing bug and testcase feedback with comments.
Bugfixes:
- rename
title
anddisplay_name
attributes ofUpdates
, following upstream changes (title
is now a computed attribute) - no longer lose custom
display_name
attribute of updates when editing them - rename methods for querying and editing
title
todisplay_name
accordingly
These changes affected the public API, so the version was bumped to indicate an incompatible change, as well.
New features:
- implement
TryFrom<&str>
andFromStr
for every enumerated type
This allows using str::parse()
for all enum values (for example, for
structopt
arguments).
Refactored test suite into multiple features:
offline-tests
: enabled by defaultonline-tests
: require internet access, disabled by defaultdata-tests
: deserialization tests, require local data, disabled by default
Bugfixes:
- remove a stray
println!()
call left over from debugging
Revert breaking API changes from the 0.3.0 release.
DO NOT USE THIS RELEASE
New features:
- implement
TryFrom<DateTime<Utc>>
forBodhiDate
(it's only a wrapper ...)
New features:
- derive
Serialize
for all data types, as well - new
Serialize
implementation forBodhiDate
Small improvements:
- if present, invoke progress callback function first with
0/?
as well
Small improvements:
- add possibility to supply a progress callback to long-running queries
- more attempts to fix submitting bug and testcase feedback with comments
Small improvements:
- more fixes creating test case feedback
Small improvements:
- add example for waiving update test results
- add example for requesting update state change
- start fixing code for providing
Bug
andTestCase
feedback with comments - implement
Eq
andOrd
forBodhiDate
, so things can be sorted by dates
Small improvements:
- clean up examples and properly read password from commandline with
rpassword
- some more
impl Display
cleanups - add convenience methods for directly creating update status requests and
result waive requests from an existing
Update
Small improvements:
- removed
Checkpoints
struct, which was useless and not working - cleaned up
Display
implementations for structs
Bugfixes:
- manually implement
Display
for enums instead of relying onserde_json::to_string()
, which doesn't work as expected
Include some new convenience methods:
- commenting on an existing
Update
- creating a buildroot override from an existing
Build
- editing a buildroot override from an existing
Override
- editing an update from an existing
Update
Other small improvements:
- fixed
impl Display
forFedoraRelease
- make some internally used items private again
- method to construct URL of a BugZilla bug for
Bug
instances
Small improvements:
- mark
FedoraRelease
enum
as#[non_exhaustive]
- implement
TryFrom<&str>
forFedoraRelease
Multiple changes and improvements:
- refactored public API to be more approachable
- take references instead of owned types, where possible
- implementations for querying, creating, and editing done (and working)
- added a lot of tests to check both data type definitions and query logic
The test data is not committed into git, since it's 2GB+ large.
Incremental improvements:
- add missing
EPEL-8M
release to list and tests - adapt to
fedora-rs
API changes with release 0.0.7
Incremental improvements:
- implement simple conversions from strings to enums and vice versa
Incremental improvements:
- introduce pretty error handling that does more than string concatenation
- simplify code for queries
- start implementations for creating comments and overrides
- adapt to bodhi 4.1.0 changes and new fedora release targets
Incremental improvements:
- fix copypasta issue in
UpdateType
enum definition - simplify code for disambiguating "not found" from "error" situations
- retry queries if the server returned an error
- more complete test coverage
- adapt struct definitions to changed JSON response schemas with bodhi 4.0.0
Incremental improvements:
- abstract over inconsistent Update ID type (numerical ID vs. string alias)
- add small example program for showing off API usage
- refactor tests
Incremental improvements:
- return
None
if querying for exactly one item by ID / name / NVR and no item with that identifier exists
Small maintenance release with incremental improvements:
- implement clippy suggestions
- move tests from
bodhi
binary totests
module - define
enum
s for common enumerated values - deserialize JSON strings to these new
enum
s - rename struct fields that are keywords in rust (
type
,override
, etc.)
Initial Release:
- all
GET
requests for queries are implemented and working - all public items are documented