Skip to content

v1.7.7

Choose a tag to compare

@eth-man eth-man released this 18 Aug 06:19
· 29 commits to main since this release
f691b63

Fact filtering works. v1.7.6 shipped it doing nothing at all.

Fixed

The facts parameter reaches the query (#246). It was dropped in four places between the browser and the PQL. Unknown query parameters are ignored, so the request succeeded and returned the unfiltered estate — the filter appeared to work, and filtered nothing. If you tried "which nodes are Ubuntu 22.04" on v1.7.6 and got your whole estate back, this is why.

The value field offers the values it is sent. /fact-paths already returned a list of observed values per fact; the input only ever read the fact name. Knowing the fact is called os.name does not tell you whether this estate spells it Ubuntu or ubuntu — and a misspelt value renders identically to an empty estate. High-cardinality facts like networking.ip stay free text, deliberately.

The dev PuppetDB stand-in no longer hides this class of bug. Its query evaluator ended in default: return true, so any operator it did not implement matched every row — and fact filters compile to a subquery it had never implemented. Staging reported 48 of 48 nodes matching os.name = Nonsense, which reads as a broken feature and was a broken test fixture. An unknown operator is now a 400, the way real PuppetDB rejects one. Affects local development and CI only.

Verified

Checked on staging before tagging, with negative controls:

os.name is Ubuntu                    10
os.name is Nonsense  (MUST be 0)      0
nosuchfact is reported  (MUST be 0)   0
Ubuntu AND major 24.04               10
Ubuntu AND major 9   (MUST be 0)      0
malformed facts JSON               http 400

Upgrading

No migrations. No configuration changes.

Full changelog: v1.7.6...v1.7.7