From df3d4a5eaaceafc2c9c5e046992e9ef27205ff3a Mon Sep 17 00:00:00 2001 From: Corey Hammerton Date: Sat, 3 Sep 2016 17:11:28 -0400 Subject: [PATCH] puppetboard/app.py: Adding an environment filter for displaying Fact names (#295) This resolves #276 Current behaviour of the Facts page would query the fact_names endpoint regardless of environment. This update would query the Facts endpoint, extracting each unique fact name known to the environment. --- puppetboard/app.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/puppetboard/app.py b/puppetboard/app.py index 73cd00b..b789959 100644 --- a/puppetboard/app.py +++ b/puppetboard/app.py @@ -674,9 +674,24 @@ def facts(env): """ envs = environments() check_env(env, envs) + facts = [] + order_by = '[{"field": "name", "order": "asc"}]' + + if env == '*': + facts = get_or_abort(puppetdb.fact_names) + else: + query = ExtractOperator() + query.add_field(str('name')) + query.add_query(EqualsOperator("environment", env)) + query.add_group_by(str("name")) + + for names in get_or_abort(puppetdb._query, + 'facts', + query=query, + order_by=order_by): + facts.append(names['name']) facts_dict = collections.defaultdict(list) - facts = get_or_abort(puppetdb.fact_names) for fact in facts: letter = fact[0].upper() letter_list = facts_dict[letter]