After over a year of planning and six intense months of parallel development QUADS 3.0 has arrived! This is a major feature release and the biggest, most ambitious release we have ever done. Three, that’s the magic number
What’s New
QUADS 3.0 introduces a plugin architecture, real-time move tracking, SSO authentication, and the new quads-client. The version output says it all:
# quads --version "QUADS version 3.0.0 maximilian"
Introducing quads-client
Alongside QUADS 3.0 we are announcing quads-client, a companion client that provides both a powerful interactive CLI and an intuitive multi-platform GUI for managing one or more QUADS servers. It features multi-server session management, SSO API token auth, smart tab completion, and live move-progress tracking. Install it from RPM or PyPI or see the quads-client repository for details.
Feature Milestones
- QUADS Plugin Architecture – 24ee8ff – plugin-based dispatchers, the foundation that new infrastructure providers plug into.
- Polling/status API – 1643d98 (#661) – track assignment and move progress in real time.
- Dayzero plugin structure and Cloud Command – 62c9b07 (#686) – bring a new cloud online with the
quads cloudcommand. - Google OAuth SSO with user profiles – 4ffc733 – SSO/OAuth2 profiles with domain restriction, configurable in
conf/oauth.yml.
Major Features
- Giant QUADS 3.0 docs sweep – +1256/-184 lines (dc5ceee) (#711)
- Batch schedule creation endpoint with JIRA integration and now keyword support (91cb7c5)
- Rich tables in reports and server-side utilization stats (911664a)
- Auto-bootstrap Foreman RBAC objects for QUADS (39d2109)
- API token authentication with CRUD endpoints, bearer auth support, and profile UI management (22f5732)
- SSM reporting and rich reports everywhere (a57bb0f) (#696)
- Config file checker (d67e415) (#699)
- Fix API timestamp serialization to emit real UTC (d87f2f6) (#709)
- Close TOCTOU race in schedule creation (5f5dec4) (#673)
- Return 400 JSON for invalid API inputs instead of 500 (57bbaf9) (#721)
- Migrate Jira client to async and register plugin dispatchers at app startup (0cd3749)
A full list of changes can be found here.
Development Statistics
- 93 x merged patch-sets
- 299 x changed files with 14,010 additions and 1,626 deletions
- Thank you to our contributors for this release: Will Foster, William Preston, Ted Logan, Kambiz Aghaiepour, Alekos Atsalakis, Marek Mahut, Gonzalo Rafuls
- This is the 23rd release of QUADS since 23-June 2016 when 1.0 was released
System and Infrastructure Requirements
- A supported version of Fedora is required if using our RPM packages
- Recommended VM with 8 x vcpu and 8 x GB of memory
- Foreman for managing your DNS, DHCP, PXE and systems lifecycle
Breaking Changes and Migrations
- QUADS 3.0.0 requires Fedora 43 or higher
- Upgrading from 2.2.6 to 3.0.0 performs a database migration automatically during the upgrade process (14 database migrations are included)
- New configuration files:
conf/oauth.yml,conf/plugins.yml - Modified configuration files:
conf/idrac_interfaces.yml,conf/quads.yml,conf/quadsweb.yml,conf/selfservice.yml
Be sure to address any changed configuration values prior to upgrading.
QUADS 2.2 to 3.0 Config Migration
A migration script that converts a QUADS 2.2.6 era monolithic config set to the 3.x plugin-architecture values is included in this release: quads2.2_to_3.0_config_migrate.py. See the release notes for usage and requirements.
Known Issues or Limitations
- No known issues
- Jetlag users should read through the authenticated calls documentation and look to migrate to SSO/OAuth2 token workflows for an easier experience with instack JSON assets
Links
- QUADS 3.0.0 release notes
- QUADS repository
- quads-client
- Open a GitHub issue or find us on libera.chat IRC
#quads