Merge pull request #219 from corey-hammerton/issue-218

puppetboard/app: Enabling environment filtering on overview metrics
This commit is contained in:
Corey Hammerton
2016-02-09 19:37:42 -05:00

View File

@@ -133,10 +133,15 @@ def index(env):
:type env: :obj:`string` :type env: :obj:`string`
""" """
envs = environments() envs = environments()
metrics = {
'num_nodes': 0,
'num_resources': 0,
'avg_resources_node': 0}
check_env(env, envs) check_env(env, envs)
# TODO: Would be great if we could parallelize this somehow, doing these if env == '*':
# requests in sequence is rather pointless. query = None
prefix = 'puppetlabs.puppetdb.query.population' prefix = 'puppetlabs.puppetdb.query.population'
num_nodes = get_or_abort( num_nodes = get_or_abort(
puppetdb.metric, puppetdb.metric,
@@ -147,18 +152,30 @@ def index(env):
avg_resources_node = get_or_abort( avg_resources_node = get_or_abort(
puppetdb.metric, puppetdb.metric,
"{0}{1}".format(prefix, ':type=default,name=avg-resources-per-node')) "{0}{1}".format(prefix, ':type=default,name=avg-resources-per-node'))
metrics = { metrics['num_nodes'] = num_nodes['Value']
'num_nodes': num_nodes['Value'], metrics['num_resources'] = num_resources['Value']
'num_resources': num_resources['Value'], metrics['avg_resources_node'] = "{0:10.0f}".format(
'avg_resources_node': "{0:10.0f}".format(avg_resources_node['Value']), avg_resources_node['Value'])
}
if env == '*':
query = None
else: else:
query = '["and", {0}]'.format( query = '["and", {0}]'.format(
", ".join('["=", "{0}", "{1}"]'.format(field, env) ", ".join('["=", "{0}", "{1}"]'.format(field, env)
for field in ['catalog_environment', 'facts_environment'])) for field in ['catalog_environment', 'facts_environment']))
num_nodes = get_or_abort(
puppetdb._query,
'nodes',
query='["extract", [["function", "count"]],["and", {0}]]'.format(
",".join('["=", "{0}", "{1}"]'.format(field, env)
for field in ['catalog_environment', 'facts_environment'])))
num_resources = get_or_abort(
puppetdb._query,
'resources',
query='["extract", [["function", "count"]],' \
'["=", "environment", "{0}"]]'.format(
env))
metrics['num_nodes'] = num_nodes[0]['count']
metrics['num_resources'] = num_resources[0]['count']
metrics['avg_resources_node'] = "{0:10.0f}".format(
(num_resources[0]['count'] / num_nodes[0]['count']))
nodes = get_or_abort(puppetdb.nodes, nodes = get_or_abort(puppetdb.nodes,
query=query, query=query,