QUADS 2.0
About 2.0
🌞 Just in time for the Summer we're extremely excited to present QUADS 2.0.0 after a year of concurrent development alongside the 1.1 series. QUADS 2.0 is a major evolution in the architecture and design of QUADS, featuring the complete move from CherryPy to Flask, MongoDB to SQLAlchemy/Postgresql and incorporating our long-awaited APIv3.
APIv3 offers a fully open, RESTful JSON API with RBAC model and token auth to enable and empower near limitless tenant automation and new features that are on the horizon such as self-scheduling and our "Providers" framework for expanding and managing QUADS resources into abstracted and seamless hybrid cloud landscapes.
QUADS 2.0
is a substantial major version release and complete architecture and design revamp.
Major Feature Highlights
- New APIv3 with token auth for protected calls
- Full move to Flask and a Postgresql database backend via SQLAlchemy
- QUADS is now broken out into three services: quads-server, quads-web and quads-db
- Removal of python3-wordpress-xmlrpc, it's now done via native Python
- Incorporation of gunicorn and separate flask listeners/services for quads-web and quads-server
- Replacement of Apache with Nginx for reverse proxy of API and services
- Major QUADS service commands are now called directly from the CLI rather than tools
- Massive unit test coverage of nearly 100% across the codebase
- Enormous refactoring and overhaul of database structure and schema
Development Statistics
- 85 x peer-reviewed Gerrithub patchsets
- 523 x unit tests added
- 247 changed files with 24,850 additions and 6,627 deletions
- Over 128 x Github issues closed (RFE and bugs)
- This is the 14th release of QUADS since 23-June 2016 when 1.0 was released
Full Change List
- A full list of changes can be found here
Checking Configuration File Differences
- It's a good idea to diff the updated quads.yml with your existing one to make note of any breaking changes
diff -u /opt/quads/conf/quads.{yml,yml.rpmnew}
Breaking Changes and Migrations
System Requirements
- Fedora Server 39 or higher is required if using our RPM packages
Migrating from 1.1.8
- QUADS 2.0.0 schema and database is incompatible with the 1.1 series and there are many, many intrinsic design differences and changes
- Due to the the new architecture, design and system/code changes you should migrate to a new host for QUADS 2.0
- We have developed migration tools to assist in moving from a production QUADS 1.1 to a QUADS 2.0.0 deployment
- New installations do not need this.
On existing QUADS 1.1 Host
- You should first save and export your current hosts and metadata because you'll need to import them on your QUADS 2.0 host
quads-cli --export-host-details
Metadata successfully exported to /tmp/tmp6nuzaq_9.
Metadata successfully exported.
- Copy this file over to your QUADS 2 host
- Next, you need to use the 1.1 host current schedules export tool export your schedules
cd /opt/quads
python quads/tools/export_current_schedules.py --output 1.1-schedules.yml
- Now copy this over to the QUADS 2.0 host too
On New QUADS 2.0 Host
- Import your hosts data from the first step, the file
tmp6nuzaq_9
was our export from the other host.
quads --define-host-details --metadata /tmp/tmp6nuzaq_9
- Once all of your hosts are re-created, check they have their correct interfaces defined and metadata
- Proceed to import their current schedules
python /usr/lib/python3.12/site-packages/quads/tools/import_current_schedules.py --input 1.1-schedules.yml
- Check that everything looks good:
quads --ls-hosts
quads --summary
Note that the RPM attached this release will contain some additional fixes since the 2.0.0 release.
If you run into issues or have questions please open an Github issue or find us on libera.chat IRC #quads