QUADS 1.1.8
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 setswitch_config_applied
63f3845 - Fix
--shrink
not updating theschedule.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 theswitch_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
- A full list of changes can be found here
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.