Skip to content

Commit 72ecd96

Browse files
Greg Dubickisebastianrakel
Greg Dubicki
authored andcommitted
Actually don't get the underlying data when UI elements are disabled
1 parent 235b4d3 commit 72ecd96

File tree

1 file changed

+85
-94
lines changed

1 file changed

+85
-94
lines changed

puppetboard/app.py

Lines changed: 85 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,21 @@ def index(env):
136136
:type env: :obj:`string`
137137
"""
138138
envs = environments()
139+
check_env(env, envs)
140+
139141
metrics = {
140142
'num_nodes': 0,
141143
'num_resources': 0,
142-
'avg_resources_node': 0}
143-
check_env(env, envs)
144+
'avg_resources_node': 0,
145+
}
146+
nodes_overview = []
147+
stats = {
148+
'changed': 0,
149+
'unchanged': 0,
150+
'failed': 0,
151+
'unreported': 0,
152+
'noop': 0
153+
}
144154

145155
if env == '*':
146156
query = app.config['OVERVIEW_FILTER']
@@ -153,21 +163,22 @@ def index(env):
153163
puppetdb.metric,
154164
"{0}{1}".format(prefix, ':%sname=num-nodes' % query_type),
155165
version=metric_version)
156-
num_resources = get_or_abort(
157-
puppetdb.metric,
158-
"{0}{1}".format(prefix, ':%sname=num-resources' % query_type),
159-
version=metric_version)
160166

161-
metrics['num_nodes'] = num_nodes['Value']
162-
metrics['num_resources'] = num_resources['Value']
163-
try:
164-
# Compute our own average because avg_resources_node['Value']
165-
# returns a string of the format "num_resources/num_nodes"
166-
# example: "1234/9" instead of doing the division itself.
167-
metrics['avg_resources_node'] = "{0:10.0f}".format(
168-
(num_resources['Value'] / num_nodes['Value']))
169-
except ZeroDivisionError:
170-
metrics['avg_resources_node'] = 0
167+
if app.config['RESOURCES_STATS_ENABLED']:
168+
num_resources = get_or_abort(
169+
puppetdb.metric,
170+
"{0}{1}".format(prefix, ':%sname=num-resources' % query_type),
171+
version=metric_version)
172+
173+
metrics['num_resources'] = num_resources['Value']
174+
try:
175+
# Compute our own average because avg_resources_node['Value']
176+
# returns a string of the format "num_resources/num_nodes"
177+
# example: "1234/9" instead of doing the division itself.
178+
metrics['avg_resources_node'] = "{0:10.0f}".format(
179+
(num_resources['Value'] / num_nodes['Value']))
180+
except ZeroDivisionError:
181+
metrics['avg_resources_node'] = 0
171182
else:
172183
query = AndOperator()
173184
query.add(EqualsOperator('catalog_environment', env))
@@ -179,55 +190,53 @@ def index(env):
179190
if app.config['OVERVIEW_FILTER'] is not None:
180191
query.add(app.config['OVERVIEW_FILTER'])
181192

182-
num_resources_query = ExtractOperator()
183-
num_resources_query.add_field(FunctionOperator('count'))
184-
num_resources_query.add_query(EqualsOperator("environment", env))
185-
186193
num_nodes = get_or_abort(
187194
puppetdb._query,
188195
'nodes',
189196
query=num_nodes_query)
190-
num_resources = get_or_abort(
191-
puppetdb._query,
192-
'resources',
193-
query=num_resources_query)
194-
metrics['num_nodes'] = num_nodes[0]['count']
195-
metrics['num_resources'] = num_resources[0]['count']
196-
try:
197-
metrics['avg_resources_node'] = "{0:10.0f}".format(
198-
(num_resources[0]['count'] / num_nodes[0]['count']))
199-
except ZeroDivisionError:
200-
metrics['avg_resources_node'] = 0
201-
202-
nodes = get_or_abort(puppetdb.nodes,
203-
query=query,
204-
unreported=app.config['UNRESPONSIVE_HOURS'],
205-
with_status=True,
206-
with_event_numbers=app.config['WITH_EVENT_NUMBERS'])
207197

208-
nodes_overview = []
209-
stats = {
210-
'changed': 0,
211-
'unchanged': 0,
212-
'failed': 0,
213-
'unreported': 0,
214-
'noop': 0
215-
}
198+
metrics['num_nodes'] = num_nodes[0]['count']
216199

217-
for node in nodes:
218-
if node.status == 'unreported':
219-
stats['unreported'] += 1
220-
elif node.status == 'changed':
221-
stats['changed'] += 1
222-
elif node.status == 'failed':
223-
stats['failed'] += 1
224-
elif node.status == 'noop':
225-
stats['noop'] += 1
226-
else:
227-
stats['unchanged'] += 1
200+
if app.config['RESOURCES_STATS_ENABLED']:
201+
202+
num_resources_query = ExtractOperator()
203+
num_resources_query.add_field(FunctionOperator('count'))
204+
num_resources_query.add_query(EqualsOperator("environment", env))
205+
206+
num_resources = get_or_abort(
207+
puppetdb._query,
208+
'resources',
209+
query=num_resources_query)
210+
211+
metrics['num_resources'] = num_resources[0]['count']
212+
try:
213+
metrics['avg_resources_node'] = "{0:10.0f}".format(
214+
(num_resources[0]['count'] / num_nodes[0]['count']))
215+
except ZeroDivisionError:
216+
metrics['avg_resources_node'] = 0
217+
218+
if app.config['NODES_STATUS_DETAIL_ENABLED']:
219+
220+
nodes = get_or_abort(puppetdb.nodes,
221+
query=query,
222+
unreported=app.config['UNRESPONSIVE_HOURS'],
223+
with_status=True,
224+
with_event_numbers=app.config['WITH_EVENT_NUMBERS'])
225+
226+
for node in nodes:
227+
if node.status == 'unreported':
228+
stats['unreported'] += 1
229+
elif node.status == 'changed':
230+
stats['changed'] += 1
231+
elif node.status == 'failed':
232+
stats['failed'] += 1
233+
elif node.status == 'noop':
234+
stats['noop'] += 1
235+
else:
236+
stats['unchanged'] += 1
228237

229-
if node.status != 'unchanged':
230-
nodes_overview.append(node)
238+
if node.status != 'unchanged':
239+
nodes_overview.append(node)
231240

232241
return render_template(
233242
'index.html',
@@ -626,50 +635,32 @@ def facts(env):
626635
"""
627636
envs = environments()
628637
check_env(env, envs)
638+
facts = []
639+
order_by = '[{"field": "name", "order": "asc"}]'
629640
facts = get_or_abort(puppetdb.fact_names)
630641

631-
# we consider a column label to count for ~5 lines
632-
column_label_height = 5
633-
634-
# 1 label per different letter and up to 3 more labels for letters spanning
635-
# multiple columns.
636-
column_label_count = 3 + len(set(map(lambda fact: fact[0].upper(), facts)))
637-
638-
break_size = (len(facts) + column_label_count * column_label_height) / 4.0
639-
next_break = break_size
640-
641-
facts_columns = []
642-
facts_current_column = []
643-
facts_current_letter = []
642+
facts_columns = [[]]
644643
letter = None
644+
letter_list = None
645+
break_size = (len(facts) / 4) + 1
646+
next_break = break_size
645647
count = 0
646-
647648
for fact in facts:
648649
count += 1
649650

650-
if count > next_break:
651-
next_break += break_size
652-
if facts_current_letter:
653-
facts_current_column.append(facts_current_letter)
654-
if facts_current_column:
655-
facts_columns.append(facts_current_column)
656-
facts_current_column = []
657-
facts_current_letter = []
658-
letter = None
659-
660-
if letter != fact[0].upper():
661-
if facts_current_letter:
662-
facts_current_column.append(facts_current_letter)
663-
facts_current_letter = []
651+
if letter != fact[0].upper() or not letter:
652+
if count > next_break:
653+
# Create a new column
654+
facts_columns.append([])
655+
next_break += break_size
656+
if letter_list:
657+
facts_columns[-1].append(letter_list)
658+
# Reset
664659
letter = fact[0].upper()
665-
count += column_label_height
666-
667-
facts_current_letter.append(fact)
660+
letter_list = []
668661

669-
if facts_current_letter:
670-
facts_current_column.append(facts_current_letter)
671-
if facts_current_column:
672-
facts_columns.append(facts_current_column)
662+
letter_list.append(fact)
663+
facts_columns[-1].append(letter_list)
673664

674665
return render_template('facts.html',
675666
facts_columns=facts_columns,
@@ -921,7 +912,7 @@ def metrics(env):
921912
metrics.append(domain + ':' + prop)
922913
else:
923914
raise ValueError("Unknown metric version {} for database version {}"
924-
.format(metric_version, db_version))
915+
.format(metric_version, database_version))
925916

926917
return render_template('metrics.html',
927918
metrics=sorted(metrics),

0 commit comments

Comments
 (0)