Skip to content

QUADS 1.1.5

Compare
Choose a tag to compare
@sadsfae sadsfae released this 18 May 15:09

About 1.1.5

QUADS 1.1.5 is a feature and bugfix release with a dozen new features/enhancements and fixes. In particular we are focusing on much tighter integration/automation with JIRA as we use it internally for handling requests and workflow.

🌞 1.1.5 arrives just in time for the Summer! 🌞

Major Feature Highlights

  • Added JIRA enhancements/integration to QUADS via jira.py and jira_watchers.py
  • Added --host-list for quads-cli --add-schedule, this is utilized with and tied into JIRA functionality exclusively at present.
    • This will auto-update an associated JIRA ticket with all the scheduling details.
    • This will also set JIRA ticket "status" to "scheduled" if you have your project setup using these status phases.
    • This will also auto-update the respective ticket with optional routable VLAN associations if your QUADS deployment is set-up with this functionality.
quads-cli --add-schedule --host-list /tmp/hosts --schedule-start "2021-04-20 22:00" --schedule-end "2021-05-02 22:00" --schedule-cloud cloud20 --cloud-ticket 12345
  • We now have a new host-level MongoDB flag added to the interfaces model - pxe_boot #357
    • This allows you to set per-host pxe_boot ordering for generated instackenv.json but also you can set a lab or deployment-level default (see Notable Changes and Upgrade Notes below)
  • New tool added for populating interfaces data from badfish in quads/tools/populate_interfaces.py
  • Added color-coding for stdout in --ls-available
    • This is a substantial enhancement as it also sorts the return of available future systems by first presenting ones that would not be coming out of an existing assignment first, thereby limiting the risk of taking system from tenants who were late on submitting extensions.
  • verify_switchconf.py can now operate at both the host and cloud level. #373
  • --retire --unretire and --ls-retire host features added to manage decommissioning systems #364
  • Added logic to --filter for handling boolean key/value pairs such as --filter "retired==False" #374
  • New tool modify_switch_conf.py for ad-hoc management of individual VLAN ports on hosts

Major Bug Fixes

  • fix: handling for missing --add-schedule or --mod-schedule #356 #355
  • fix: datetime search on Flask available UI #363
  • fix: removed health check plus better ssh helper exceptions
  • fix: set power state on the HPE DL360
  • fix: hardcoded links for vlans on jira ticket assignment
  • fix: verify switch conf on last nic and vlans
  • fix: cosmetic stdout bug with verify_switchconf #372

Other Notable Changes and Upgrade Notes

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

  • The following /opt/quads/conf/quads.yml configuration file has new options required if you want to use --host-list with --add-schedule
    • JIRA-related changes:
jira_url: https://projects.engineering.example.com/rest/api/2
jira_username: admin
jira_password: password
jira_docs_links: http://wiki.example.com/faq/,http://wiki.example.com/usage/,http://docs.example.com/wiki/ScaleLabTipsAndTricks
jira_vlans_docs_links: http://wiki.example.com/vlans/,http://wiki.example.com/public-vlans/

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

  • This should be set to the default PXE interface in --ls-interfaces --host $host and is a deployment-wide setting unless overridden by pxe_boot.
default_pxe_interface: em2

Upgrade Notes / Changes

  • The following commands need to be run to seed pxe_boot settings for each host in MongoDB after upgrading.
  • em2 here would be the default QUADS internal interface standard you use for PXE booting, also reflected in the above quads.yml setting.
$ cd /opt/quads
$ python
>>> from quads.model import Host
>>> Host.objects(interfaces__name="em2").update(set__interfaces__S__pxe_boot=True)
  • With the inclusion of --retire this will also be needed for upgraded installations only.
$ cd /opt/quads
$ python
>>> from quads.model import Host
>>> hosts = Host.objects()
>>> for host in hosts:
...    if not host.retired:
...        host.update(retired=False)

Full Change List