Releases: redhat-performance/quads
QUADS 2.1.5
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
UIquads-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
fixeslshw
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
- A full list of changes can be found here
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
- You should follow the upgrade instructions from 2.0.5 for the steps and data migration needed to move to 2.1.
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
- The following configuration variables are now removed:
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
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
About 2.1
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
- A full list of changes can be found here
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
- You should follow the upgrade instructions from 2.0.5 for the steps and data migration needed to move to 2.1.
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
- The following configuration variables are now removed:
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
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
- A full list of changes can be found here
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
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
- A full list of changes can be found here
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
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
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.
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.
QUADS 1.1.6
About 1.1.6
QUADS 1.1.6
is a bugfix, refactor and feature release. In particular we are focusing on core functionality fixes and enhancements to visuals, reporting and operator quality-of-life activities. We've packed almost 8 months of development, features and testing into this release.
This release includes around 14x new features/improvements and 19 x bug fixes.
🍂 1.1.6
arrives just before Spring time! 🍂
Major Feature Highlights
- Jira token auth is now supported
- Optional Python3 XMLRPC SSL/TLS support for QUADS WP wiki automation #401
- Autocomplete for
quads-cli
viapython3-argcomplete
--skip-network
added tovalidate_env.py
for skipping network validations.--report-detailed
will give you a report on upcoming future, scheduled assignments--report-scheduled
will give you a report about systems and assignment utilization and scheduling over months or years- Additional usage reporting statistics on Wiki (daily usage) and visuals (systems usage tallies) #393
- Revamped and more extensible visuals using emoji instead of preset color patterns.
- Added
lshw.py
tool for gathering systems hardare information - Added
ls_switch_conf.py
tool for listing VLAN id to cloud mapping and other related network information. - VLANs can now be cleared with
--mod-cloud
#388 - Added page length dropdown on available GUI datatable Flask UI
Major Bug Fixes
- fix:
pxe_boot
always evaluating True. - fix: broken/retired being listed on report-available and wiki. #389 #390
- fix: don't trigger VLAN int check if value is null. #392
- fix: harden
create_input.py
when it encounters empty strings to not fail - fix: better sanity checks for foreman host params for overcloud. #379
- fix: manage new clouds better with
lock_reservation
- fix: address behavior with notification object on mod-cloud with new ticket.
Other Notable Changes and Upgrade Notes
- 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
- The previous key/value pairs for clouds can now be removed and are no longer used.
visual_colors:
cloud01: "#a9a9a9"
cloud02: "#e6194B"
cloud03: "#3cb44b"
cloud04: "#ffe119"
cloud05: "#4363d8"
<snip>
Jira Authentication Changes
- Added
jira_auth:
with options beingbasic
(default) ortoken
. - Added
jira_token:
XXXXYYYY
where if utilizing token auth you'll place your API token for Jira
Full Change List
- A full list of changes can be found here
QUADS 1.1.5
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
andjira_watchers.py
- Added
--host-list
forquads-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 generatedinstackenv.json
but also you can set a lab or deployment-level default (see Notable Changes and Upgrade Notes below)
- This allows you to set per-host
- 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 bypxe_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 abovequads.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
- A full list of changes can be found here
QUADS 1.1.4.1
About 1.1.4.1
QUADS 1.1.4.1 is a small feature enhancement release, fixing a few bugs as well.
🎅 1.1.4.1
arrives just in time for the Winter Holidays 🎅
Major Feature Highlights
- Added two major command-sets for managing extension and expiration of both hosts and cloud environments commit
--extend-cloud
is replaced by--extend
--extend
now comes with it's converse,--shrink
- Both
--extend
and--shrink
also support--date
now as well as--month
--weeks
and--year
- Both
--extend
and--shrink
can be used at the per-host or per-cloud environment level. - Some examples:
quads-cli --extend --cloud cloud02 --weeks 2 --check
quads-cli --extend --host host01.example.com --weeks 2 --check
quads-cli --shrink --cloud cloud02 --weeks 2 --check
quads-cli --shrink --host host02.example.com --now
(effectively terminates the end of schedule to current time)quads-cli --extend --cloud cloud04 --date "2021-01-31 22:00"
Major Bug Fixes
- Fixed traceback in some situations with
quads-cli --define-cloud
- #353 - Fixed cases where
--mod-cloud --no-wipe
does not take effect and generates an error - #351
Other Notable Changes and Upgrade Notes
--extend-cloud
is removed in favor of--extend
QUADS 1.1.4
About 1.1.4
QUADS 1.1.4 is a major enhancement and bugfix release for the 1.1 gaúcho
series and is highly recommended. This comes with around 7 months of development since 1.1.3
and building on the landmark, next-generation 1.1.0 series.
With almost 100 peer-reviewed commits to the codebase, 1.1.4
is comprised of around 25 x enhancements and 30+ bug fixes.
🦃 1.1.4
arrives just in time for Thanksgiving 🦃
Major Feature Highlights
-
Hardware Metadata Model: QUADS now populates useful characteristics about your hosts and keeps them in the MongoDB database.
- You will need to populate data about your systems to take advantage of this.
- This is baked into the serveral CLI options as well via the
--filter
commandquads-cli --ls-hosts --filter "interfaces.mac_address==ac:1f:62:2f:19:42"
quads-cli --ls-available --filter "model==FC640,interfaces__size==5"
-
QUADS Available UI (Tech Preview): Flask-based web UI for querying systems availability provided by new service
quads-web
- Runs on
TCP/5001
- Runs from the
quads-web
service if using RPM / systemd - Relies on the MongoDB metadata model for filtering based on model
- Runs on
-
New options for managing cloud extensions
- The following commands can be used for easier management of extensions
quads-cli --extend-cloud cloud02 --weeks 2 --check
quads-cli --extend-cloud cloud02 --weeks 2
- The following commands can be used for easier management of extensions
-
New commands for managing top-level cloud attributes
- The
--mod-cloud
command is now available to manage individual settings at the cloud assignment level
- The
-
Configurable time-lock for defining new environments is present
- To prevent against human race conditions and the potential for more than one operator to choose a cloud from
quads-cli --find-free-cloud
we've implemented configurable time locks that prevent future re-definition of a cloud environment for a period set incloud_reservation_lock
- To prevent against human race conditions and the potential for more than one operator to choose a cloud from
-
Management of broken hosts moved to MongoDB
- We no longer rely on Foreman host parameters to manage broken/faulty systems, this is now done in MongoDB and managed via QUADS CLI
quads-cli --ls-broken
quads-cli --mark-faulty --host host01
quads-cli --mark-repaired --host host01
- We no longer rely on Foreman host parameters to manage broken/faulty systems, this is now done in MongoDB and managed via QUADS CLI
-
validate_env.py
and our netcat health checks for validation are now fully using asyncio -
move_and_rebuild_hosts.py
will now also unmount virtual media ISO (SuperMicro) -
Network automation is now idempotent and will not run twice if not needed.
-
quads-cli --summary --detail
gives additional full-readout display of active assignments. -
Additional validation check added
quads/tools/netcat.py
which checks that a system is reachable via TCP/22, this also adds intelligence tovalidate_env.py
to try and better determine where a set of systems is in the baseline/provision process to enact smarter automation.
Major Bug Fixes
-
validate_env.py
reboot on marked for build commit -
Format error message for
--extend-cloud
commit -
simple_table_web.py
fixes for heat map visuals commit -
Fixes for summary listings commit
-
VLAN fixes for last interface for optional public VLANS commit
-
Notification fixes commit
-
Fix for old cloud objects not being cleared commit
-
Fixes for
verify_switchconf.py
and not processing the last interfaces commit -
Fixes for SuperMicro one-time boot commit
-
Fixes for
netcat.py
health checks socket prematurely closing commit -
Fixes for
--ls-available
filtering commit -
Fix for applying PXE persistence flags on SuperMicro commit
-
Q-in-Q argument fixes and extensibility commit
-
CloudHistory fixes with prep_data commit
-
VLAN ID fixes for CloudHistory commit
-
Please consult the full changelog of differences between the last release and current upstream codebase for full details of all fixes and enhancements.
New Configuration Options (Read before Migrating from 1.1.3)
The following are changes in /opt/quads/conf/quads.yml
you should adjust or add, it's a good idea to diff the updated quads.yml
with your existing one to make note of any breaking changes via diff -u /opt/quads/conf/quads.{yml,yml.rpmnew}
-
New entries for optional ticket system association with QUADS
ticket_url:
ticket_queue:
-
Optional value for inserting a preferred day-of-week deadline for tenants to submit extension requests.
quads_request_deadline_day:
-
Set default wipe policy (defaults to True)
default_wipe:
-
Reservation lock (defaults to 48hrs)
cloud_reservation_lock:
-
Models Information Added (comma separated list of supported models that match metadata model strings)
models: R620,R630,R640,R930,R730XD
-
Expiring cloud notification setting:
quads_notify_until_extended: True
Removed Configuration Options
The following are key/value pair configuration options that have been removed from QUADS
gather_dell_configs:
foreman_check_host_health:
rt_url:
(replaced byticket_url:
)report_dir:
Other Notable Changes and Upgrade Notes
Migrating Broken Hosts Management to Mongo
If you used Foreman host parameters to manage your broken systems before you can migrate them to Mongo with this command set
Migrating from 1.1.3 to 1.1.4 Reservation Locks
- If you see an issue with reservation locks not going away you may need a one-time adjustment of timestamp data outlined in the above issue.
Foreman RBAC Changes
We have moved to a more manageable method of juggling role-based access permissions for tenants using Foreman which is based on host ownership instead of a series of filters and roles individually added to each system.
foreman_heal.py
has been refactored to use this new approach so running it is enough but you can find the updated setup documentation here for more info.