QUADS 1.1.7
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
- A full list of changes can be found here
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.