Resolves errors in #1141 and #1150.
To avoid this in the future, we need a feature similar to dependabot/dependabot-core#1296, or which lets us gate updates on (in this case) `pete`.
* verify aad tenants, primarily needed in multi-tenant deployments
* add logging and fix trailing slash for issuer
* handle call_if* not supporting additional argument callbacks
* add logging
* include new datatype in webhook docs
* fix pytypes unit tests
Co-authored-by: Brian Caswell <bmc@shmoo.com>
This makes sure debug_keep_node is reset and the rest of the reimage processing occurs regardless of reimage_requested and delete_requested being set.
Without this, nodes that are marked `debug_keep_node` do not get reimaged/deleted.
Currently, if a pool or scaleset is set to `shutdown`, it cannot be set to `halt`.
While moving from `halt` to `shutdown` would cause issues, moving from `shutdown` to `halt` is fine.
The SignalR integration from Azure Functions does not have automatic retry. When the SignalR instance has issues, all other APIs fail.
To make the service resilient to SignalR outages, this bounces SignalR events through an Azure Storage queue.
NOTE: This PR does not remove the integration from all of the functions. That is intended to be done as a follow-on PR.
In order to reduce how frequently the IMS is hit from the service, the service caches the azure-mgmt clients between API calls. While the management APIs should have some amount of authentication expiration redundancy built in, not all of them do.
This is seen with `ClientAuthenticationError`, most often with the nested exception record of `ExpiredAuthenticationToken`.
This wraps all of the compute layer functionality with a wrapper that checks if there has been an exception, and retries the request.
This PR removes PII from Jobs, Tasks, and Repros after 18 months.
This PR also removes notifications tied to a container that has not been used in a task for 18 months. This is done due to notifications having arbitrarily complex mechanisms for storing PII (typically the "assignee").
This adds an example script and tool that enables LLVM source-based coverage using the `generic_analysis` task.
This provides:
1. sample python script that launches the template and then the analysis task
1. sample `analysis_exe` wrapper script that launches the LLVM coverage tools
1. sample libfuzzer target for the example
1. walk through submitting the jobs and inspecting the results