Hi all,
Another one in the series, after Path off the Red Hat subscription surface, Path off styled-components and Path off Formik. This one is smaller than those and stranger, because the thing it removes was never running.
What Pendo is
Pendo is a product analytics service. AWX embedded its agent in the UI to report how the interface was used, behind a setting called User Analytics Tracking State with three values:
- off: the agent never loads
- anonymous: usage reported without identifying who produced it
- detailed: usage reported along with the user and their role
None of it has ever run in Ascender, and none of it could be made to.
Why it was already dead
The setting could not be changed. conf/registry.py pins it read only outright, with a comment saying it was read only under the open licence and that the open licence is the only one there is.
A read only setting never reaches the writable set, so it never appears in the PUT options for the UI category, and the edit screen skips any key those options do not carry. The control rendered nothing at all. The details screen still listed the value, so the product offered a row reporting a feature nobody could turn on.
Underneath that, the value is pinned to off in both settings files, and no API key ships in the asset variables. The helper that identifies the session short circuits on either of those, so even with the setting writable the agent would not have loaded.
The three choices were a fiction
Nothing has ever branched on anonymous against detailed. The only test in the code is for off, so both values would have sent the same payload: a visitor id of zero, a role, and an account id hardcoded to tower.ansible.com. The setting offered a granularity the implementation never had.
What goes
- the setting, its field class, and the special case that pinned it read only
- the two UI helpers that loaded and identified the agent, and the effect that called them
analytics_status from /api/v2/config/, and the line documenting it in that view's template
pendo_tracking from the ascender_system_info metric labels and from the host metric config report
- the API key from the asset variables
*.pendo.io from the installing page's Content Security Policy
Worth naming on its own: the installing page allowed pendo.io scripts and images, for an agent it never loads.
What it costs
analytics_status leaves the config endpoint, and pendo_tracking leaves the metric labels and the config.json inside the host metric tarball. I checked every ctrliq/ascender repository for a reader of either and found none, so what is left is a third party client reading the config endpoint.
Pull requests