Open iansltx opened 2 weeks ago
cc: @noahtalerman, @lukeheath for prioritization.
Thanks Sharon! I pulled this eng initiated story off of the the drafting board (removed :product
).
It only needs ~engineering-initiated
to get into Luke's queue of engineering initiated stories.
@lukeheath This part of the issue appears to be a bug:
Potentially removing software installer downloads as part of the dry run, or at least using HEAD methods for file downloads to avoid pulling an entire installer 2x per place it's defined.
If a customer has a bunch of software installers, not only will GitOps take a long time, but it will also load the servers. This is a performance issue for customers.
We should not be downloading software at all. We should use a hash to determine if software changed from what Fleet knows about already.
Semi-related issue regarding use of ETags for caching: https://github.com/fleetdm/fleet/issues/17697
@getvictor @iansltx Should the bug portion be filed separately as a bug?
Yeah, we should split that part. This was a "get thoughts into GitHub" issue.
Goal
Context
What else should contributors keep in mind when working on this change? (Optional.)
This should just be an implementation (backend and maybe fleetctl) and docs change, unless we want to get fancy with exposing software update batch runs to users.
Items are:
Changes
Product
Engineering
For the single-run cancel endpoint, we could use
DELETE software_batch/{uuid}
, and for cancelling all WIP runs we could useDELETE software_batch/processing
.The easiest way to do bulk cancel would be using
KEYS
on Redis, but that would introduce load issues elsewhere as Redis would need to check every key in its database. To allow for efficient bulk cancel we'll need to switch how we store progress in Redis. This is a bit more of an undertaking so is probably a different task than the initial "cancel by UUID", and the bulk cancel would build on the single cancel work, which I believe wouldn't need to touch how we store things in Redis.QA
Risk assessment
Manual testing steps
TODO (will all be tested via GitOps)
Testing notes
Confirmation