QUADS 3.0 Has Arrived!

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 cloud command.
  • 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

Links

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.