)]}'
{"doc/source/rest.j2":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bf5b8c86dd1287a702e92b271bd5b95b1e4b9dd3","unresolved":false,"context_lines":[{"line_number":210,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"Gnocchi allows to do on-the-fly aggregation of already aggregated data of"},{"line_number":213,"context_line":"metrics. This can be done filtering on resource attributes like this:"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"{{ scenarios[\u0027get-across-metrics-measures-by-attributes-lookup\u0027][\u0027doc\u0027] }}"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-jinja2","patch_set":17,"id":"da86d52c_c7ae1685","line":213,"updated":"2015-02-03 12:57:15.000000000","message":"by filtering","commit_id":"ca359bfa49111b20b4d50f8fcc2913d95073930a"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"590a2645bf4c22a547ed88557bb7b32110efa590","unresolved":false,"context_lines":[{"line_number":210,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"Gnocchi allows to do on-the-fly aggregation of already aggregated data of"},{"line_number":213,"context_line":"metrics. This can be done filtering on resource attributes like this:"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"{{ scenarios[\u0027get-across-metrics-measures-by-attributes-lookup\u0027][\u0027doc\u0027] }}"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-jinja2","patch_set":17,"id":"da86d52c_a2f590cc","line":213,"in_reply_to":"da86d52c_c7ae1685","updated":"2015-02-03 13:12:39.000000000","message":"Done","commit_id":"ca359bfa49111b20b4d50f8fcc2913d95073930a"}],"gnocchi/rest/__init__.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"6e1b6bc2d84becc2e5998787972d8891c2191ea4","unresolved":false,"context_lines":[{"line_number":818,"context_line":"                                       stop\u003dNone, aggregation\u003d\u0027mean\u0027,"},{"line_number":819,"context_line":"                                       needed_overlap\u003dNone):"},{"line_number":820,"context_line":"        if isinstance(metric, list):"},{"line_number":821,"context_line":"            metrics \u003d metric"},{"line_number":822,"context_line":"        else:"},{"line_number":823,"context_line":"            metrics \u003d [metric]"},{"line_number":824,"context_line":"        return AggregatedMetricController.get_cross_metric_measures("}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_146e8d01","line":821,"updated":"2014-12-18 13:15:56.000000000","message":"If there\u0027s only a single metric ID is specified, could this be optimized as a direct call to storage.get_measures() ... i.e. by-passing the aggregation logic?","commit_id":"75cb359845dcf0d552a3d8eb36f0e412614de769"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"d7715435b8c7d8996cb57fea87d725fb4ab79c7f","unresolved":false,"context_lines":[{"line_number":818,"context_line":"                                       stop\u003dNone, aggregation\u003d\u0027mean\u0027,"},{"line_number":819,"context_line":"                                       needed_overlap\u003dNone):"},{"line_number":820,"context_line":"        if isinstance(metric, list):"},{"line_number":821,"context_line":"            metrics \u003d metric"},{"line_number":822,"context_line":"        else:"},{"line_number":823,"context_line":"            metrics \u003d [metric]"},{"line_number":824,"context_line":"        return AggregatedMetricController.get_cross_metric_measures("}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_83d6adf0","line":821,"in_reply_to":"3a961159_146e8d01","updated":"2015-01-15 11:19:52.000000000","message":"Done","commit_id":"75cb359845dcf0d552a3d8eb36f0e412614de769"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"6e1b6bc2d84becc2e5998787972d8891c2191ea4","unresolved":false,"context_lines":[{"line_number":820,"context_line":"        if isinstance(metric, list):"},{"line_number":821,"context_line":"            metrics \u003d metric"},{"line_number":822,"context_line":"        else:"},{"line_number":823,"context_line":"            metrics \u003d [metric]"},{"line_number":824,"context_line":"        return AggregatedMetricController.get_cross_metric_measures("},{"line_number":825,"context_line":"            metrics, start, stop, aggregation, needed_overlap)"},{"line_number":826,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_1a0dd737","line":823,"updated":"2014-12-18 13:15:56.000000000","message":"Do we need to also check if the specified metrics are somehow compatible?\n\ne.g. it would be meaningless to aggregate disk.write.bytes with cpu_util\n\nSo should we, for example, check if the metric name is the same in each case?\n\n(yeah, I know that would probabely be awkward, as the name is an attribute of the resource:metric association as opposed to the metric itself, but that\u0027s the best compatibility test that I can think of)","commit_id":"75cb359845dcf0d552a3d8eb36f0e412614de769"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"d7715435b8c7d8996cb57fea87d725fb4ab79c7f","unresolved":false,"context_lines":[{"line_number":820,"context_line":"        if isinstance(metric, list):"},{"line_number":821,"context_line":"            metrics \u003d metric"},{"line_number":822,"context_line":"        else:"},{"line_number":823,"context_line":"            metrics \u003d [metric]"},{"line_number":824,"context_line":"        return AggregatedMetricController.get_cross_metric_measures("},{"line_number":825,"context_line":"            metrics, start, stop, aggregation, needed_overlap)"},{"line_number":826,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_e31691a6","line":823,"in_reply_to":"3a961159_1a0dd737","updated":"2015-01-15 11:19:52.000000000","message":"I don\u0027t think is really usefull. I add a todo :p ?","commit_id":"75cb359845dcf0d552a3d8eb36f0e412614de769"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"f13c181cd3c5b7bab26ae050d7b5e186e0d6cd31","unresolved":false,"context_lines":[{"line_number":801,"context_line":"    resource \u003d ResourcesController()"},{"line_number":802,"context_line":""},{"line_number":803,"context_line":"    _custom_actions \u003d {"},{"line_number":804,"context_line":"        \u0027aggregated_metric_measures\u0027: [\u0027GET\u0027]"},{"line_number":805,"context_line":"    }"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"    @pecan.expose(\u0027json\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_6fdb771b","line":804,"updated":"2014-12-18 16:28:39.000000000","message":"\"metric-aggregation\"\n\nWould be less pompeux. :)","commit_id":"35f0c74762d4274eeca98e5eada727d04a0569ae"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"6d9231321e78908c5a196b0059210a88c45c76b3","unresolved":false,"context_lines":[{"line_number":801,"context_line":"    resource \u003d ResourcesController()"},{"line_number":802,"context_line":""},{"line_number":803,"context_line":"    _custom_actions \u003d {"},{"line_number":804,"context_line":"        \u0027aggregated_metric_measures\u0027: [\u0027GET\u0027]"},{"line_number":805,"context_line":"    }"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"    @pecan.expose(\u0027json\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_91b19646","line":804,"in_reply_to":"3a961159_6fdb771b","updated":"2015-01-15 11:19:37.000000000","message":"Done","commit_id":"35f0c74762d4274eeca98e5eada727d04a0569ae"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"5719ed142325d8447521972833482519379fd7bc","unresolved":false,"context_lines":[{"line_number":825,"context_line":"        if isinstance(metric, list):"},{"line_number":826,"context_line":"            metrics \u003d metric"},{"line_number":827,"context_line":"        else:"},{"line_number":828,"context_line":"            metrics \u003d [metric]"},{"line_number":829,"context_line":"        return AggregatedMetricController.get_cross_metric_measures("},{"line_number":830,"context_line":"            metrics, start, stop, aggregation, needed_overlap)"},{"line_number":831,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_cc4fe0bc","line":828,"updated":"2015-01-15 14:07:57.000000000","message":"I don\u0027t understand the need for tolerating the non-list case, as aggregating over a single metric seems nonsensical.\n\nWould it be clearer to change the metric parameter to metric_ids and remove lines 825-828?","commit_id":"fda4ee36bb829e6386e497271713f1a1f733a1ed"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"f27773a8f523c5922ccacf5c4bf48b7fa9fb8b90","unresolved":false,"context_lines":[{"line_number":825,"context_line":"        if isinstance(metric, list):"},{"line_number":826,"context_line":"            metrics \u003d metric"},{"line_number":827,"context_line":"        else:"},{"line_number":828,"context_line":"            metrics \u003d [metric]"},{"line_number":829,"context_line":"        return AggregatedMetricController.get_cross_metric_measures("},{"line_number":830,"context_line":"            metrics, start, stop, aggregation, needed_overlap)"},{"line_number":831,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_a068b721","line":828,"in_reply_to":"3a961159_016c4a35","updated":"2015-01-16 09:13:37.000000000","message":"A-ha, got it, thanks for the clarification!","commit_id":"fda4ee36bb829e6386e497271713f1a1f733a1ed"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"59d4305cf961a6c4b7936d54ecc5e96c1a356fbe","unresolved":false,"context_lines":[{"line_number":825,"context_line":"        if isinstance(metric, list):"},{"line_number":826,"context_line":"            metrics \u003d metric"},{"line_number":827,"context_line":"        else:"},{"line_number":828,"context_line":"            metrics \u003d [metric]"},{"line_number":829,"context_line":"        return AggregatedMetricController.get_cross_metric_measures("},{"line_number":830,"context_line":"            metrics, start, stop, aggregation, needed_overlap)"},{"line_number":831,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_016c4a35","line":828,"in_reply_to":"3a961159_cc4fe0bc","updated":"2015-01-15 18:10:51.000000000","message":"This is enforced by the pecan/weboob behavior, if the user pass metric\u003dAAA you get metric\u003d\u0027AAA\u0027\nif he pass metric\u003dAAA\u0026metric\u003dBBB you get metric\u003d[\u0027AAA\u0027, \u0027BBB\u0027]","commit_id":"fda4ee36bb829e6386e497271713f1a1f733a1ed"}]}
