Skip to content

Releases: redhat-performance/quads

QUADS 2.2.4

30 Oct 17:44

Choose a tag to compare

About 2.2.4

🎃 QUADS 2.2.4 is a major feature release, jam-packed with tasty user facing UI enhancements, a litany of fixes and backend improvements and major refactors with lots of treats and no tricks.

Major Feature Highlights

  • Per-Server hardware details page, autogenerated and updated dynamically
  • New dynamic network connectivity diagram and topography map per environment
  • Modernized heat map and calendar visuals design
  • Added disk type, size, and count to the available UI
  • Added Network vendor and speed to the available UI
  • Major refactor of move_and_rebuild.py
  • Several tools were promoted to CLI commands
  • Replaced argparse with click for CLI commands
  • Added --ls-cpu and --ls-gpu in place of --ls-processors
  • Host metadata can be completely removed now via --rm-host-metadata
  • Removed unused driver types
  • Lots of cleanups and other fixes

Development Statistics

  • 56 x peer-reviewed Gerrithub patch-sets
  • 108 x changed files with 4,794 additions and 1,556 deletions.
  • Welcome new contributor @AlAtsal
  • Welcome back returning contributor @sjug
  • This is the 21st release of QUADS since 23-June 2016 when 1.0 was released

Full Change List

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 2.2.4 requires Fedora 41 or higher, upgrade your Fedora OS before trying to upgrade QUADS if you're below this requirement.
  • Upgrading from 2.2.2 to 2.2.4 performs a database migration, this happens automatically via the upgrade process for you.

Important

Be sure to address any changed configuration values prior to upgrading

Changed Configuration Values

  • Added to /opt/quads/conf/quadsweb.yml
nic_vendors: 
  - Mellanox Technologies
  - Broadcom Inc. and subsidiaries
  - Intel Corporation

Changed Command Structures

  • The following commands are now part of the QUADS CLI and **no longer called via Python site-packages
quads --ls-switch-conf
quads --verify-switch-conf
quads --mod-switch-conf

Checking Configuration File Differences

  • It's a good idea to diff the updated config files with your existing ones to make note of any breaking changes
diff -u /opt/quads/conf/quads.{yml,yml.rpmnew}
diff -u /opt/quads/conf/quadsweb.{yml,yml.rpmnew}
diff -u /opt/quads/conf/selfservice.{yml,yml.rpmnew}

Known Issues or Limitations

  • If tenants using the self-scheduling API abort their reservation after an assignment is created but before host schedule(s) are added then there is currently no cleanup that occurs automatically. We have added documentation on managing active but orphaned assignments and will be addressing this in RFE #605

Packaging and Support

Note that the RPM attached this release may contain some additional fixes since the 2.2.4 release in the future.

If you run into issues or have questions please open an Github issue or find us on libera.chat IRC #quads

QUADS 2.2.2

28 May 09:56

Choose a tag to compare

About 2.2.2

😎 QUADS 2.2.2 provides the ability to set/manage BIOS boot order modes for new future environments, fixes and improvements to the self-scheduling API and additional performance improvements. This is a minor feature release that focuses on simplifying some internal orchestration workflows as well and in some cases reduces the bare-metal release time by a whopping 25-30%.

Major Feature Highlights

  • We have revamped how BIOS boot order management works so that it's now configurable, with the default now being foreman but still supporting director boot mode for OpenStack workloads still using ironic-based PXE orchestration. This provides the following tenant and operator benefits via #599
    • Reduction of bare-metal systems delivery time by 25-30%, eliminating a reboot cycle if using foreman_default_boot_order: foreman which is our default
    • Reduction of tenant post-delivery and day zero orchestration needs by eliminating the need to perform badfish --boot-to calls for re-provisioning in Foreman (it's enough to mark for build and reboot now).
  • Additional performance improvements be removing some sleep mechanics if boot order matches what's requested #590
  • Removed a few unneeded dependencies and files
  • Additional fixes to self-scheduling API

Development Statistics

  • 25 x peer-reviewed Gerrithub patch-sets
  • 31 x changed files with 508 additions and 199 deletions.
  • This is the 20th release of QUADS since 23-June 2016 when 1.0 was released

Full Change List

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 2.2.2 requires Fedora 41 or higher, upgrade your Fedora OS before trying to upgrade QUADS.
  • Upgrading from 2.2.0 to 2.2.2 performs a database migration, this happens automatically via the upgrade process for you.

Important

Be sure to address any changed configuration values prior to upgrading

Changed Configuration Values

  • Added to /opt/quads/conf/quads.yml
foreman_default_boot_order: foreman
badfish_interfaces_path: /opt/quads/conf/idrac_interfaces.yml
  • Added to /opt/quads/conf/selfservice.yml
ssm_description_prefix: "[SSM]"

Checking Configuration File Differences

  • It's a good idea to diff the updated config files with your existing ones to make note of any breaking changes
diff -u /opt/quads/conf/quads.{yml,yml.rpmnew}
diff -u /opt/quads/conf/quadsweb.{yml,yml.rpmnew}
diff -u /opt/quads/conf/selfservice.{yml,yml.rpmnew}

Known Issues or Limitations

  • If tenants using the self-scheduling API abort their reservation after an assignment is created but before host schedule(s) are added then there is currently no cleanup that occurs automatically. We have added documentation on managing active but orphaned assignments and will be addressing this in RFE #605

Packaging and Support

Note that the RPM attached this release may contain some additional fixes since the 2.2.2 release in the future.

If you run into issues or have questions please open an Github issue or find us on libera.chat IRC #quads

QUADS 2.2.0

14 Apr 16:17

Choose a tag to compare

About 2.2.0

🐰 QUADS 2.2 delivers breakthrough enhancements such as the long-awaited self-scheduling API feature and GPU awareness to compliment AI workloads. This release is primarily a major feature release with a slew of fixes as well and a sleek looking dark theme for quads-web

Major Feature Highlights

  • New self-scheduling feature via the RestAPI! You can talk directly to the API or use our new Python client library
  • QUADS is now aware of GPU devices and they can be added to the metadata model for filtering and systems selection.
  • You can now use any hostname convention you like as rack, u-location and blade are part of defining new hosts
  • quads-web now has a dark theme
  • Performance improvements to validate_env
  • You can now select a different OS from the default for future clouds from anything available in your Foreman via --os and you can use --os-list to list available operating systems from your Foreman.
  • Packaging enhancements: quads-server and quads-web will now auto restart after upgrading and run any database migrations for you.

Development Statistics

  • 86 x peer-reviewed Gerrithub patch-sets
  • 117 x changed files with 3,929 additions and 1,175 deletions.
  • Welcome our 13th contributor, @sjug
  • This is the 19th release of QUADS since 23-June 2016 when 1.0 was released

Full Change List

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

New Configuration Files

  • Configuration files have been split out into two new files:
    • /opt/quads/conf/quadsweb.yml (UI specific options go here now)
    • /opt/quads/conf/selfservice.yml (options for self-scheduling feature, disabled by default)

Changed Configuration Values

  • Removed from /opt/quads/conf/quads.yml
lab_name:
ticket_url:
ticket_queue:
visual_web_dir:
web_content_path:
web_exclude_dirs:
racks:
  • Added to /opt/quads/conf/quadsweb.yml
web_content_path:
web_exclude_dirs:
visual_web_dir:
ticket_url:
ticket_queue:
lab_name:

Checking Configuration File Differences

  • It's a good idea to diff the updated config files with your existing ones to make note of any breaking changes
diff -u /opt/quads/conf/quads.{yml,yml.rpmnew}
diff -u /opt/quads/conf/quadsweb.{yml,yml.rpmnew}
diff -u /opt/quads/conf/selfservice.{yml,yml.rpmnew}

Migrating from 2.1.6

Important

You will need to run the following conversion script to migrate existing hosts to use rack, ulocation and blade location metadata derived from their hostnames:

curl https://gist.githubusercontent.com/grafuls/49ac6e9958da66c0ef749a103ef37594/raw/771b7f9210104d1f821a74a5759b76e0526a0b25/hostname2meta.py --output hostname2meta.py
python3 ./hostname2meta.py

Known Issues

  • None at this time

Packaging and Support

Note that the RPM attached this release may contain some additional fixes since the 2.2.0 release in the future.

If you run into issues or have questions please open an Github issue or find us on libera.chat IRC #quads

QUADS 2.1.6

10 Dec 11:02

Choose a tag to compare

About 2.1.6

🎄 Just before Christmas this release brings several major admin and tooling features as well as more production-tested bug-fixes within the 2.1 series. This is primarily a small feature release with a few bug fixes too, plus some performance improvements for quads-web when dealing with a large amount of hosts (>1000).

Major Feature Highlights

  • New tenant contact tool: notify_tenant.py
  • New commands --ls-notifications and --mod-notifications are available.
  • lab_name now allows you to set your QUADS environment name within the quads-web service
  • Visual heatmaps are now rendered in-band of flask / quads-web
  • Visual heatmaps should render the full month now
  • quads-web now uses async to speed up content renders
  • quads-web ajax lazy loading will abort to load other link navigation faster
  • quads-web now loads jquery assets locally and does not require access to the internet
  • quads-web and its /available endpoint for searching system availability can now have its Date Range manually edited.
  • quads --summary now works with the --date command
  • quads-web now has a dark theme!
  • Several other bug fixes

Development Statistics

  • 23 x peer-reviewed Gerrithub patch-sets
  • 31 x changed files with 930 additions and 484 deletions.
  • This is the 18th release of QUADS since 23-June 2016 when 1.0 was released

Full Change List

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

  • A supported version of Fedora Server is required if using our RPM packages
  • Recommended VM with 8 x vcpu and 8 x GB of memory.
  • For full features, an existing Foreman that manages your DNS, DHCP, PXE and systems lifecycle

Migrating from 2.1.5

  • New configuration value lab_name is required in /opt/quads/conf/quads.yml

Migrating from 2.0.5

  • Several conf/quads.yml changes have been completed removed or changed.
  • Nginx vhost configuration files have changed.

Migrating from 1.1.8

Configuration File Changes

Removed Values from 2.1
wp_wiki: https://wiki.example.com
wp_username: wikiadmin
wp_password: wikipassword
wp_wiki_main_title: Lab Dashboard
wp_wiki_main_page_id: 4
wp_wiki_assignments_title: assignments
wp_wiki_assignments_page_id: 357
wp_wiki_vlans_title: Public VLAN Allocations
wp_wiki_vlans_page_id: 14244
wp_wiki_git_manage: false
wp_wiki_git_repo_path: /opt/quads/git/wiki
wiki_url: https://wiki.example.com
Changed Values in 2.1
json_web_path: /opt/quads/web/instack
visual_web_dir: /opt/quads/web/visual
New Values in 2.1
web_content_path: /opt/quads/web
web_exclude_dirs: .git static instack visual any-git-content-dir-you-have README.md
quads_url:  https://quads.example.com
lab_name: Lab

Nginx Proxy Changes in 2.1

We are now routing URL and API endpoints directly through Flask @app.route functionality therefore if you were using a modified TLS/SSL vhost configuration file you'll need to set it up again with the new format.

systemctl stop nginx
cd /etc/nginx/conf.d/
mv apiv3_ssl.conf apiv3_ssl.conf.2.0.old
cp apiv3_ssl.conf.example apiv3_ssl.conf
servername=$(hostname) ; sed -i -e "s/quads.example.com/$servername/" /etc/nginx/conf.d/apiv3_ssl.conf
systemctl start nginx

At this point if you are using TLS you'll need to re-edit your apiv3_ssl.conf file again with the correct TLS key and certificate names

systemctl restart nginx

Known Issues

  • None at this time

Packaging and Support

Note that the RPM attached this release may contain some additional fixes since the 2.1.6 release in the future.

If you run into issues or have questions please open an Github issue or find us on libera.chat IRC #quads

QUADS 2.1.5

15 Nov 20:51

Choose a tag to compare

About 2.1.5

🦃 Building on our 2.1 design this release brings a slew of production-tested bugfixes, performance improvements and a few features too just in time for Thanksgiving!

Major Feature Highlights

  • Major quads-web UI performance improvements using Ajax / lazy loading
  • quads-web updates for /available UI
  • quads-web navigation bar is now rendered at service start time
  • Several major cloud define and notifications bugs fixed after running 2.1.0 for quite some time in production
  • quads --foreman-rbac now runs from the move_and_rebuild phase
  • QUADS Badfish library will now auto unmount ISO media for Dell systems
  • verify_switch_conf fixes
  • lshw and metadata import fixes and updates
  • Refactoring to use SQLAlchemy DB calls in some places over direct API for heavy lifting
  • Contributing sandbox steps remove container orchestration, focus on venv workflows for easy testing
  • Pre-commit hooks are now in place for development workflows

Development Statistics

  • 36 x peer-reviewed Gerrithub patch-sets
  • 112 x changes files with 2,558 additions and 2,049 deletions
  • This is the 17th release of QUADS since 23-June 2016 when 1.0 was released

Full Change List

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

  • A supported version of Fedora Server is required if using our RPM packages
  • Recommended VM with 8 x vcpu and 8 x GB of memory.
  • For full features, an existing Foreman that manages your DNS, DHCP, PXE and systems lifecycle

Migrating from 1.1.8

Migrating from 2.0.5

  • Several conf/quads.yml changes have been completed removed or changed.
  • Nginx vhost configuration files have changed.

Migrating from 2.1.0

  • No changes

Configuration File Changes

Removed Values from 2.1
wp_wiki: https://wiki.example.com
wp_username: wikiadmin
wp_password: wikipassword
wp_wiki_main_title: Lab Dashboard
wp_wiki_main_page_id: 4
wp_wiki_assignments_title: assignments
wp_wiki_assignments_page_id: 357
wp_wiki_vlans_title: Public VLAN Allocations
wp_wiki_vlans_page_id: 14244
wp_wiki_git_manage: false
wp_wiki_git_repo_path: /opt/quads/git/wiki
wiki_url: https://wiki.example.com
Changed Values in 2.1
json_web_path: /opt/quads/web/instack
visual_web_dir: /opt/quads/web/visual
New Values in 2.1
web_content_path: /opt/quads/web
web_exclude_dirs: .git static instack visual any-git-content-dir-you-have README.md
quads_url:  https://quads.example.com
lab_name: Lab

Nginx Proxy Changes in 2.1

We are now routing URL and API endpoints directly through Flask @app.route functionality therefore if you were using a modified TLS/SSL vhost configuration file you'll need to set it up again with the new format.

systemctl stop nginx
cd /etc/nginx/conf.d/
mv apiv3_ssl.conf apiv3_ssl.conf.2.0.old
cp apiv3_ssl.conf.example apiv3_ssl.conf
servername=$(hostname) ; sed -i -e "s/quads.example.com/$servername/" /etc/nginx/conf.d/apiv3_ssl.conf
systemctl start nginx

At this point if you are using TLS you'll need to re-edit your apiv3_ssl.conf file again with the correct TLS key and certificate names

systemctl restart nginx

Known Issues

  • None at this time

Packaging and Support

Note that the RPM attached this release may contain some additional fixes since the 2.1.5 release in the future.

If you run into issues or have questions please open an Github issue or find us on libera.chat IRC #quads

QUADS 2.1.0

02 Oct 13:14

Choose a tag to compare

About 2.1

:shipit: Huge design improvements and simplification are at the forefront of this major release by completely removing our WordPress component and bringing everything directly back to Flask and quads-web. This greatly reduces our design complexity and adds a plethora of foundational improvements for future features.

The features included in this release were the culmination of over ~6months of parallel design and development before and throughout the 2.0 releases of QUADS. Moving our core automated wiki and inventory to Flask creates the foundation for many more exciting features.

Major Feature Highlights

  • Full removal of Wordpress as the QUADS wiki component
  • Removal of large parts of the code-base dedicated to automating the sync of QUADS status/wiki/inventory over the WordPress XMLRPC/Python API.
  • The quads-web service will now handle our dynamic inventory and wiki component directly via Flask
  • Wiki content and navigation menus are now instantly generated
  • Ability to serve your own static content and menus is documented here
  • Overall much easier adoption for new users

Development Statistics

  • 12+ x peer-reviewed Gerrithub patch-sets
  • 74 x changes files with 1,724 additions and 2,045 deletions
  • This is the 16th release of QUADS since 23-June 2016 when 1.0 was released

Full Change List

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

  • A supported version of Fedora Server is required if using our RPM packages
  • Recommended VM with 8 x vcpu and 8 x GB of memory.
  • For full features, an existing Foreman that manages your DNS, DHCP, PXE and systems lifecycle

Migrating from 1.1.8

Migrating from 2.0.5

  • Several conf/quads.yml changes have been completed removed or changed.
  • Nginx vhost configuration files have changed.

Configuration File Changes

Removed Values
wp_wiki: https://wiki.example.com
wp_username: wikiadmin
wp_password: wikipassword
wp_wiki_main_title: Lab Dashboard
wp_wiki_main_page_id: 4
wp_wiki_assignments_title: assignments
wp_wiki_assignments_page_id: 357
wp_wiki_vlans_title: Public VLAN Allocations
wp_wiki_vlans_page_id: 14244
wp_wiki_git_manage: false
wp_wiki_git_repo_path: /opt/quads/git/wiki
wiki_url: https://wiki.example.com
Changed Values
json_web_path: /opt/quads/web/instack
visual_web_dir: /opt/quads/web/visual
New Values
web_content_path: /opt/quads/web
web_exclude_dirs: .git static instack visual any-git-content-dir-you-have README.md
quads_url:  https://quads.example.com

Nginx Proxy Changes

We are now routing URL and API endpoints directly through Flask @app.route functionality therefore if you were using a modified TLS/SSL vhost configuration file you'll need to set it up again with the new format.

systemctl stop nginx
cd /etc/nginx/conf.d/
mv apiv3_ssl.conf apiv3_ssl.conf.2.0.old
cp apiv3_ssl.conf.example apiv3_ssl.conf
servername=$(hostname) ; sed -i -e "s/quads.example.com/$servername/" /etc/nginx/conf.d/apiv3_ssl.conf
systemctl start nginx

At this point if you are using TLS you'll need to re-edit your apiv3_ssl.conf file again with the correct TLS key and certificate names

systemctl restart nginx

Known Issues

Routable VLAN Error on Assignment Reclamation

  • In some cases hosts moving back to the resource pool that had an optional routable VLAN may error like so:
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/quads/tools/verify_switchconf.py", line 155, in <module>
    verify(args.cloud, args.host, args.change)
  File "/usr/lib/python3.12/site-packages/quads/tools/verify_switchconf.py", line 104, in verify
    if _assignment.vlan and last_nic:
       ^^^^^^^^^^^^^^^^
  • FIX use /usr/lib/python3.12/site-packages/quads/tools/modify_switch_conf.py to set the correct port / VLAN manually to what /usr/lib/python3.12/site-packages/quads/tools/verify_switch_conf.py thinks it should be and it will be restored.

Packaging and Support

Note that the RPM attached this release may contain some additional fixes since the 2.1.0 release in the future.

If you run into issues or have questions please open an Github issue or find us on libera.chat IRC #quads

QUADS 2.0.5

19 Sep 12:26

Choose a tag to compare

About 2.0.5

🍂 With Summer behind us and Autumn on the way we've got a new bugfix and minor feature release of the QUADS 2.x series. This release is a bugfix and minor feature release that also ensures compatibility with the latest versions of the Flask framework.

This will most likely be the last QUADS release that utilizes Wordpress as the QUADS wiki component as the upcoming 2.1 versions of QUADS will centralize all dynamic wiki and inventory directly into QUADS itself via quads-web, greatly simplifying the architecture and new installations.

Major Feature Highlights

  • Support for Flask 3.0+
  • Multiple roles support added to authentication
  • Huge performance improvement to quads --regen-heatmap
  • SELinux support
  • Filtering is supported on the available API endpoint
  • Systems availability WebUI updates and fixes
  • Packaging Fixes
  • Many other bug fixes

Development Statistics

  • 25+ x peer-reviewed Gerrithub patchsets
  • 70 x changes files with 794 additions and 386 deletions
  • This is the 15th release of QUADS since 23-June 2016 when 1.0 was released

Full Change List

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
  • Recommended VM with 8 x vcpu and 8 x GB of memory.

Migrating from 1.1.8

  • QUADS 2.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.0.5 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.5 host too

On New QUADS 2.0.5 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 may contain some additional fixes since the 2.0.5 release in the future.

If you run into issues or have questions please open an Github issue or find us on libera.chat IRC #quads

QUADS 2.0

21 Jun 14:08

Choose a tag to compare

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

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

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

QUADS 1.1.8

31 Oct 11:49

Choose a tag to compare

About 1.1.8

🎃 This is an extra spooky QUADS release and likely the last ™️ of the 1.1 series before the next-generation 2.0 series of QUADS 🎃

QUADS 1.1.8 is a mostly bugfix release with a few new creature comfort features baked in.

Major Feature Highlights

  • New argparse options for validate_env for skipping systems validation via --skip-network, --skip-system or --skip-hosts host01 host02
  • Better Python logger sorting of broken or retired systems display via quads-cli 4c3f98a
  • Better host build checks during validation #445
  • The --ls-available command can now be filtered via --cloud environment #432
  • Host metadata collection is now output to a temporary file for your convenience 4c3f98a

Major Bug Fixes

  • Make move and rebuild process non-blocking when returning to it's resource pool 2c1ab22
  • Fix JIRA API status transitions 0715946
  • Fix condition when validate_env does not properly set switch_config_applied 63f3845
  • Fix --shrink not updating the schedule.end data #433
  • Fix interface order on make_instack_env process cc593dc
  • GHA security fixes to tighten up variable scope and usage 132c463
  • Lock container compose Python images to 3.11 due to upstream aiohttp build issue 6ff0261
  • Fix for --mod-interface not updating the switch_ip data #443
  • Fix for not applying proper MTU (set in juniper.py) when removing and re-adding optional routable VLAN networks 513557f

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}

Full Change List

Breaking Changes / Migrations

  • If upgrading from earlier than 1.1.7 only
  • Due to schema changes the following code needs to be run after the package upgrade but before you start quads-server service.
  • New installations do not need this.
# cd /opt/quads/
# python3
>>> from quads.model import Host
>>> hosts = Host.objects()
>>> for host in hosts:
...     for iface in host.interfaces:
...             Host.objects(name=host.name, interfaces__name=iface.name).update(set__interfaces__S__switch_ip=iface.ip_address)

  • Hit enter on empty line to continue above, should see 1 displayed in stdout knowing it was successful.

QUADS 1.1.7

16 Feb 14:33

Choose a tag to compare

About 1.1.7

💟 coming in hot on the heels of Valentine's day with a lot of love from your QUADS development team 💟

QUADS 1.1.7 is a major bugfix and feature release. In particular we are focusing on core functionality fixes, several new high-profile features and other enhancements containing over a year of development since the last release.

QUADS 1.1.7 will be the last 1.1 series release barring any critical fixes as we focus on QUADS 2.0 (Bowie) and the new upcoming APIv3, completing the move to Flask and SQLAlchemy/PostgreSQL.

This release includes around 59+ code reviewed patches bringing new features/improvements and bug fixes.

NOTE We have backported a few fixes into the RPM package attached to this changelog since 2023-04-21 found after the general GA.

Major Feature Highlights

  • Outgoing webhook notifications for environment releases d044d92
  • Add cloud environment to the --ls-available Flask GUI 2dd7ab5
  • Add lshw2meta tool for gathering hardware to important into host metadata model 854e638
  • lshw / lshw2meta tool imports and supports a lot more hardware metadata about your systems.
  • There is now a no-op list for move_and_rebuild network configuration tasks 3d2980f
  • validate_env can now take per-cloud arguments e611093
  • --ls-available now supports filtering certain clouds/environments e0367b5
  • --cloud-only now supports filtering hosts 11a264f
  • (Jira) notify submitter if ticket watchers are missing 1af1897
  • (Jira) automate moving of completed workload tickets 53586f0
  • Loads of refactoring and cleanup/simplification.

Major Bug Fixes

  • fix: add-schedule on non-existing hosts cf33b4c
  • fix: add filter for retired hosts on wiki regeneration 8b4cc61
  • fix: filtering retired hosts on verify_switchconf.py tool 20568e8
  • fix: clearing optional public routable VLAN association on cloud objects when terminating a schedule 57dab39
  • fix: race condition when switch reconfiguration fails 3166dd8
  • fix: ls_switch_conf.py is now aware of and checks for optional routable public VLANs
  • fix: notifications not all being cleared when shrink actions take place 414b43c
  • fix: lsh2meta not storing CPU metadata information d9a377b
  • fix: showing broken hosts in the --ls-retired retired host listings fcc81ee
  • fix: JIRA swimlane and subcategoryStatus API changes 0715946
  • fix: Don't block move host actions if IPM is unreachable if system(s) are returning to their default cloud 2c1ab22

Other Notable Changes and Upgrade Notes

Docker Compose and EL no longer maintained

  • Note that we have dropped official support for Docker/Container deployment and RHEL8/9 due to missing EPEL and distribution libraries. We stongly recommend using a modern Fedora Server OS for QUADS going forward. We will still keep container compose bits for CI purposes but do not have the resources to maintain three or more different installation platforms.

Wordpress Wiki Platform Updates

  • The associated Ansible playbook we use to deploy Wordpress/PHP-FPM/Nginx for QUADS wiki component requires Rocky 8 / RHEL8 / CentOS Stream 8 now. It received a major refactor from RHEL7/CentOS7 which has gotten quite old.

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}

Configuration Changes in /opt/quads/conf/quads.yml

  • You can now omit individual systems, clouds or domain names from running network switchport automation
omit_network_move:
  • You can set an outgoing webhook for release notifications
webhook_notify: true
webhook_url: https://chat.example.com/v1/spaces/AAABBBCCC

Full Change List

Breaking Changes / Migrations

  • Due to schema changes the following code needs to be run after the package upgrade but before you start quads-server service.
  • New installations do not need this.
# cd /opt/quads/
# python3
>>> from quads.model import Host
>>> hosts = Host.objects()
>>> for host in hosts:
...     for iface in host.interfaces:
...             Host.objects(name=host.name, interfaces__name=iface.name).update(set__interfaces__S__switch_ip=iface.ip_address)

  • Hit enter on empty line to continue above, should see 1 displayed in stdout knowing it was successful.