Skip to content

QUADS 1.1.8

Compare
Choose a tag to compare
@sadsfae sadsfae released this 31 Oct 11:49

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.