)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e9b93bc4f538873d8bf8c4d917c00c81af851fdb","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Lena Novokshonova \u003cenovokshonova@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-11-27 17:39:35 +0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add groupby ability on resource_metadata"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"It would be useful to have groupby functionality to derive meters"},{"line_number":10,"context_line":"by their resource_metadata. In this patchset added groupby by"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5a890539_08a5c8b4","line":7,"updated":"2014-11-28 14:11:47.000000000","message":"I would suggest to change this first line like this:\n[MongoDB] Add groupby ability on resource_metadata","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e9b93bc4f538873d8bf8c4d917c00c81af851fdb","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add groupby ability on resource_metadata"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"It would be useful to have groupby functionality to derive meters"},{"line_number":10,"context_line":"by their resource_metadata. In this patchset added groupby by"},{"line_number":11,"context_line":"resource_metadata.instance_type for mongodb."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I26e7fb4fa2835d283cb6c83e0aec2dba4ac9bf00"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5a890539_28aa8485","line":10,"range":{"start_line":10,"start_character":28,"end_line":10,"end_character":50},"updated":"2014-11-28 14:11:47.000000000","message":"This commit adds","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e9b93bc4f538873d8bf8c4d917c00c81af851fdb","unresolved":false,"context_lines":[{"line_number":11,"context_line":"resource_metadata.instance_type for mongodb."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I26e7fb4fa2835d283cb6c83e0aec2dba4ac9bf00"},{"line_number":14,"context_line":"Related-Bug: 1331508"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5a890539_6893ac5c","line":14,"updated":"2014-11-28 14:11:47.000000000","message":"Related-Bug -\u003e Partially-Closes-Bug","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"}],"ceilometer/api/controllers/v2.py":[{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"b91166c67d213ac5962bedf654a9adb357c60e82","unresolved":false,"context_lines":[{"line_number":565,"context_line":""},{"line_number":566,"context_line":"    If all fields are valid, returns fields with duplicates removed."},{"line_number":567,"context_line":"    \"\"\""},{"line_number":568,"context_line":"    # NOTE(terriyu): Currently, metadata fields are supported in our"},{"line_number":569,"context_line":"    # group by statistics implementation only for mongodb"},{"line_number":570,"context_line":"    valid_fields \u003d set([\u0027user_id\u0027, \u0027resource_id\u0027, \u0027project_id\u0027, \u0027source\u0027,"},{"line_number":571,"context_line":"                        \u0027resource_metadata.instance_type\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_d192a84a","line":568,"updated":"2014-11-27 13:38:34.000000000","message":"So if user uses other backend validation will be successful?","commit_id":"c57b3462fa3a4b7bb1f8508b6d5ce0a5d1b7cadb"},{"author":{"_account_id":13273,"name":"Lena Novokshonova","email":"enovokshonova@mirantis.com","username":"enovokshonova"},"change_message_id":"27cf9b0bd92607fa05d17351a9db71f0c2c6f3e9","unresolved":false,"context_lines":[{"line_number":565,"context_line":""},{"line_number":566,"context_line":"    If all fields are valid, returns fields with duplicates removed."},{"line_number":567,"context_line":"    \"\"\""},{"line_number":568,"context_line":"    # NOTE(terriyu): Currently, metadata fields are supported in our"},{"line_number":569,"context_line":"    # group by statistics implementation only for mongodb"},{"line_number":570,"context_line":"    valid_fields \u003d set([\u0027user_id\u0027, \u0027resource_id\u0027, \u0027project_id\u0027, \u0027source\u0027,"},{"line_number":571,"context_line":"                        \u0027resource_metadata.instance_type\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_ff867eda","line":568,"in_reply_to":"5a890539_d192a84a","updated":"2014-11-28 07:56:20.000000000","message":"Currently for mysql and db2 we will have message:\"Unable to group by these fields\", in hbase:\"Group by not implemented.\"","commit_id":"c57b3462fa3a4b7bb1f8508b6d5ce0a5d1b7cadb"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"b91166c67d213ac5962bedf654a9adb357c60e82","unresolved":false,"context_lines":[{"line_number":1044,"context_line":"                   unit\u003d\u0027instance\u0027,"},{"line_number":1045,"context_line":"                   resource_id\u003d\u0027bd9431c1-8d69-4ad3-803a-8d4a6b89fd36\u0027,"},{"line_number":1046,"context_line":"                   project_id\u003d\u002735b17138-b364-4e6a-a131-8f3099c5be68\u0027,"},{"line_number":1047,"context_line":"                   user_id\u003d\u0027efd87807-12d2-4b38-9c70-5f5c2ac427ff\u0027,"},{"line_number":1048,"context_line":"                   source\u003d\u0027openstack\u0027"},{"line_number":1049,"context_line":"                   )"},{"line_number":1050,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_71c6546a","line":1047,"updated":"2014-11-27 13:38:34.000000000","message":"Unneeded change. A comma here helps to reduce an amount of new added lines in feature. E.g. if smth is added line 1046 should not be changed, only one line like \" new_field\u003d\u0027new_example\u0027,  \" may be added","commit_id":"c57b3462fa3a4b7bb1f8508b6d5ce0a5d1b7cadb"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e9b93bc4f538873d8bf8c4d917c00c81af851fdb","unresolved":false,"context_lines":[{"line_number":543,"context_line":""},{"line_number":544,"context_line":"    if metaquery and \u0027metaquery\u0027 in valid_keys:"},{"line_number":545,"context_line":"        kwargs[\u0027metaquery\u0027] \u003d metaquery"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"    if stamp:"},{"line_number":548,"context_line":"        q_ts \u003d _get_query_timestamps(stamp)"},{"line_number":549,"context_line":"        if \u0027start\u0027 in valid_keys:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_c89ae06d","line":546,"updated":"2014-11-28 14:11:47.000000000","message":"remove this empty line, it has no relationship to this change","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"ae118eec8ee04b0c6463f7f01a1b09a28a7258ae","unresolved":false,"context_lines":[{"line_number":543,"context_line":""},{"line_number":544,"context_line":"    if metaquery and \u0027metaquery\u0027 in valid_keys:"},{"line_number":545,"context_line":"        kwargs[\u0027metaquery\u0027] \u003d metaquery"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"    if stamp:"},{"line_number":548,"context_line":"        q_ts \u003d _get_query_timestamps(stamp)"},{"line_number":549,"context_line":"        if \u0027start\u0027 in valid_keys:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_fc983e1d","line":546,"in_reply_to":"5a890539_c89ae06d","updated":"2014-11-28 17:21:44.000000000","message":"But it can improve the readability, I think it is OK","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"ae118eec8ee04b0c6463f7f01a1b09a28a7258ae","unresolved":false,"context_lines":[{"line_number":568,"context_line":"    # NOTE(terriyu): Currently, metadata fields are supported in our"},{"line_number":569,"context_line":"    # group by statistics implementation only for mongodb"},{"line_number":570,"context_line":"    valid_fields \u003d set([\u0027user_id\u0027, \u0027resource_id\u0027, \u0027project_id\u0027, \u0027source\u0027,"},{"line_number":571,"context_line":"                        \u0027resource_metadata.instance_type\u0027])"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    invalid_fields \u003d set(groupby_fields) - valid_fields"},{"line_number":574,"context_line":"    if invalid_fields:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_fcbf5e5e","line":571,"updated":"2014-11-28 17:21:44.000000000","message":"I don\u0027t like the idea that just commenting in source code, but let end user request then fail\n\nSo meter related tables are in meter connection, and we can know which driver is used (read the code how connection is initialized), then we can add it into the valid_fields, if the back end is MongoDB. Then when users request API with groupby field on other back end, then they will get explicit 400 error with faultstring by which they will find the resource_metadata.instance_type is not in the valid field list.\n\nOr, is there any simpler way to do this?","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":13273,"name":"Lena Novokshonova","email":"enovokshonova@mirantis.com","username":"enovokshonova"},"change_message_id":"0d9a82f85f027366107a1c07aa88d88d3aa43828","unresolved":false,"context_lines":[{"line_number":568,"context_line":"    # NOTE(terriyu): Currently, metadata fields are supported in our"},{"line_number":569,"context_line":"    # group by statistics implementation only for mongodb"},{"line_number":570,"context_line":"    valid_fields \u003d set([\u0027user_id\u0027, \u0027resource_id\u0027, \u0027project_id\u0027, \u0027source\u0027,"},{"line_number":571,"context_line":"                        \u0027resource_metadata.instance_type\u0027])"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    invalid_fields \u003d set(groupby_fields) - valid_fields"},{"line_number":574,"context_line":"    if invalid_fields:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_4725e45a","line":571,"in_reply_to":"5a890539_fcbf5e5e","updated":"2014-12-01 11:45:37.000000000","message":"Currently, as i said, for mysql and db2 we will have message:\"Unable to group by these fields\", in hbase:\"Group by not implemented.\" One may add check that backend is mongodb, but i have some doubt that it more right than now","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"}],"ceilometer/storage/impl_mongodb.py":[{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"b9893c302603f7b424765b8ca1c105d6588478b7","unresolved":false,"context_lines":[{"line_number":326,"context_line":"                    period_end: values[0].period_end,"},{"line_number":327,"context_line":"                    duration_start: values[0].duration_start,"},{"line_number":328,"context_line":"                    duration_end: values[0].duration_end,"},{"line_number":329,"context_line":"                    resource_metadata: values[0].resource_metadata};"},{"line_number":330,"context_line":"        for ( var i\u003d1; i\u003cvalues.length; i++ ) {"},{"line_number":331,"context_line":"            %(aggregate_computation_val)s"},{"line_number":332,"context_line":"            if ( values[i].duration_start \u003c res.duration_start )"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_9e32d2f0","line":329,"updated":"2014-11-28 15:30:47.000000000","message":"We doesn\u0027t need to present metadata of first mapped sample in statistics, i think. Please, delete this.","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":13273,"name":"Lena Novokshonova","email":"enovokshonova@mirantis.com","username":"enovokshonova"},"change_message_id":"0d9a82f85f027366107a1c07aa88d88d3aa43828","unresolved":false,"context_lines":[{"line_number":326,"context_line":"                    period_end: values[0].period_end,"},{"line_number":327,"context_line":"                    duration_start: values[0].duration_start,"},{"line_number":328,"context_line":"                    duration_end: values[0].duration_end,"},{"line_number":329,"context_line":"                    resource_metadata: values[0].resource_metadata};"},{"line_number":330,"context_line":"        for ( var i\u003d1; i\u003cvalues.length; i++ ) {"},{"line_number":331,"context_line":"            %(aggregate_computation_val)s"},{"line_number":332,"context_line":"            if ( values[i].duration_start \u003c res.duration_start )"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_d3e51e39","line":329,"in_reply_to":"5a890539_9e32d2f0","updated":"2014-12-01 11:45:37.000000000","message":"Done","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"719fc7e83388943f58e93d2f50b4bfeff4dff1b3","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                    groupby: values[0].groupby,"},{"line_number":325,"context_line":"                    period_start: values[0].period_start,"},{"line_number":326,"context_line":"                    period_end: values[0].period_end,"},{"line_number":327,"context_line":"                    duration_start: values[0].duration_start,"},{"line_number":328,"context_line":"                    duration_end: values[0].duration_end};"},{"line_number":329,"context_line":"        for ( var i\u003d1; i\u003cvalues.length; i++ ) {"},{"line_number":330,"context_line":"            %(aggregate_computation_val)s"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_3f9a9cc5","line":327,"updated":"2014-12-01 14:39:49.000000000","message":"unrelated change","commit_id":"6f0822a94f7acc1783217dd6957334e8b2f563bf"}],"ceilometer/tests/storage/test_storage_scenarios.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"ae118eec8ee04b0c6463f7f01a1b09a28a7258ae","unresolved":false,"context_lines":[{"line_number":1547,"context_line":""},{"line_number":1548,"context_line":"    def test_group_by_metadata(self):"},{"line_number":1549,"context_line":"        # TODO(terriyu): test_group_by_metadata needs to be implemented."},{"line_number":1550,"context_line":"        # This test should check grouping by a single metadata field."},{"line_number":1551,"context_line":"        f \u003d storage.SampleFilter("},{"line_number":1552,"context_line":"            meter\u003d\u0027instance\u0027,"},{"line_number":1553,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_177b257c","line":1550,"updated":"2014-11-28 17:21:44.000000000","message":"remove the TODO comment","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":13273,"name":"Lena Novokshonova","email":"enovokshonova@mirantis.com","username":"enovokshonova"},"change_message_id":"0d9a82f85f027366107a1c07aa88d88d3aa43828","unresolved":false,"context_lines":[{"line_number":1547,"context_line":""},{"line_number":1548,"context_line":"    def test_group_by_metadata(self):"},{"line_number":1549,"context_line":"        # TODO(terriyu): test_group_by_metadata needs to be implemented."},{"line_number":1550,"context_line":"        # This test should check grouping by a single metadata field."},{"line_number":1551,"context_line":"        f \u003d storage.SampleFilter("},{"line_number":1552,"context_line":"            meter\u003d\u0027instance\u0027,"},{"line_number":1553,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_d38efe78","line":1550,"in_reply_to":"5a890539_177b257c","updated":"2014-12-01 11:45:37.000000000","message":"Done","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"ae118eec8ee04b0c6463f7f01a1b09a28a7258ae","unresolved":false,"context_lines":[{"line_number":1656,"context_line":"        pass"},{"line_number":1657,"context_line":""},{"line_number":1658,"context_line":"    def test_group_by_multiple_regular_metadata(self):"},{"line_number":1659,"context_line":"        # This test should check grouping by a combination of regular and"},{"line_number":1660,"context_line":"        # metadata fields."},{"line_number":1661,"context_line":"        f \u003d storage.SampleFilter("},{"line_number":1662,"context_line":"            meter\u003d\u0027instance\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_f7ecd92b","line":1659,"updated":"2014-11-28 17:21:44.000000000","message":"remove the comment or s/should check/checks/","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":13273,"name":"Lena Novokshonova","email":"enovokshonova@mirantis.com","username":"enovokshonova"},"change_message_id":"0d9a82f85f027366107a1c07aa88d88d3aa43828","unresolved":false,"context_lines":[{"line_number":1656,"context_line":"        pass"},{"line_number":1657,"context_line":""},{"line_number":1658,"context_line":"    def test_group_by_multiple_regular_metadata(self):"},{"line_number":1659,"context_line":"        # This test should check grouping by a combination of regular and"},{"line_number":1660,"context_line":"        # metadata fields."},{"line_number":1661,"context_line":"        f \u003d storage.SampleFilter("},{"line_number":1662,"context_line":"            meter\u003d\u0027instance\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_f3893a70","line":1659,"in_reply_to":"5a890539_f7ecd92b","updated":"2014-12-01 11:45:37.000000000","message":"Done","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"ae118eec8ee04b0c6463f7f01a1b09a28a7258ae","unresolved":false,"context_lines":[{"line_number":1685,"context_line":"                self.assertEqual(2, r.max)"},{"line_number":1686,"context_line":"                self.assertEqual(2, r.sum)"},{"line_number":1687,"context_line":"                self.assertEqual(2, r.avg)"},{"line_number":1688,"context_line":"            if r.groupby \u003d\u003d {\u0027user_id\u0027: \u0027user-1\u0027,"},{"line_number":1689,"context_line":"                             \u0027resource_metadata.instance_type\u0027: \u002784\u0027}:"},{"line_number":1690,"context_line":"                self.assertEqual(1, r.count)"},{"line_number":1691,"context_line":"                self.assertEqual(\u0027s\u0027, r.unit)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_57c20d87","line":1688,"updated":"2014-11-28 17:21:44.000000000","message":"elif","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":13273,"name":"Lena Novokshonova","email":"enovokshonova@mirantis.com","username":"enovokshonova"},"change_message_id":"0d9a82f85f027366107a1c07aa88d88d3aa43828","unresolved":false,"context_lines":[{"line_number":1685,"context_line":"                self.assertEqual(2, r.max)"},{"line_number":1686,"context_line":"                self.assertEqual(2, r.sum)"},{"line_number":1687,"context_line":"                self.assertEqual(2, r.avg)"},{"line_number":1688,"context_line":"            if r.groupby \u003d\u003d {\u0027user_id\u0027: \u0027user-1\u0027,"},{"line_number":1689,"context_line":"                             \u0027resource_metadata.instance_type\u0027: \u002784\u0027}:"},{"line_number":1690,"context_line":"                self.assertEqual(1, r.count)"},{"line_number":1691,"context_line":"                self.assertEqual(\u0027s\u0027, r.unit)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_13e88615","line":1688,"in_reply_to":"5a890539_57c20d87","updated":"2014-12-01 11:45:37.000000000","message":"Done","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"ae118eec8ee04b0c6463f7f01a1b09a28a7258ae","unresolved":false,"context_lines":[{"line_number":1774,"context_line":"                self.assertEqual(r.avg, 4)"},{"line_number":1775,"context_line":""},{"line_number":1776,"context_line":"    def test_group_by_metadata_with_query_filter(self):"},{"line_number":1777,"context_line":"        # This test should check grouping by a metadata field in combination"},{"line_number":1778,"context_line":"        # with a query filter."},{"line_number":1779,"context_line":"        f \u003d storage.SampleFilter("},{"line_number":1780,"context_line":"            meter\u003d\u0027instance\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_d7351da9","line":1777,"updated":"2014-11-28 17:21:44.000000000","message":"ditto","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":13273,"name":"Lena Novokshonova","email":"enovokshonova@mirantis.com","username":"enovokshonova"},"change_message_id":"0d9a82f85f027366107a1c07aa88d88d3aa43828","unresolved":false,"context_lines":[{"line_number":1774,"context_line":"                self.assertEqual(r.avg, 4)"},{"line_number":1775,"context_line":""},{"line_number":1776,"context_line":"    def test_group_by_metadata_with_query_filter(self):"},{"line_number":1777,"context_line":"        # This test should check grouping by a metadata field in combination"},{"line_number":1778,"context_line":"        # with a query filter."},{"line_number":1779,"context_line":"        f \u003d storage.SampleFilter("},{"line_number":1780,"context_line":"            meter\u003d\u0027instance\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_33ebc213","line":1777,"in_reply_to":"5a890539_d7351da9","updated":"2014-12-01 11:45:37.000000000","message":"Done","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"ae118eec8ee04b0c6463f7f01a1b09a28a7258ae","unresolved":false,"context_lines":[{"line_number":1967,"context_line":"                                     datetime.datetime(2013, 8, 1, 10, 11)])"},{"line_number":1968,"context_line":""},{"line_number":1969,"context_line":"    def test_group_by_metadata_with_period(self):"},{"line_number":1970,"context_line":"        # This test should check grouping by metadata fields in combination"},{"line_number":1971,"context_line":"        # with period grouping."},{"line_number":1972,"context_line":"        f \u003d storage.SampleFilter("},{"line_number":1973,"context_line":"            meter\u003d\u0027instance\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_17408506","line":1970,"updated":"2014-11-28 17:21:44.000000000","message":"ditto","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":13273,"name":"Lena Novokshonova","email":"enovokshonova@mirantis.com","username":"enovokshonova"},"change_message_id":"0d9a82f85f027366107a1c07aa88d88d3aa43828","unresolved":false,"context_lines":[{"line_number":1967,"context_line":"                                     datetime.datetime(2013, 8, 1, 10, 11)])"},{"line_number":1968,"context_line":""},{"line_number":1969,"context_line":"    def test_group_by_metadata_with_period(self):"},{"line_number":1970,"context_line":"        # This test should check grouping by metadata fields in combination"},{"line_number":1971,"context_line":"        # with period grouping."},{"line_number":1972,"context_line":"        f \u003d storage.SampleFilter("},{"line_number":1973,"context_line":"            meter\u003d\u0027instance\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_73f54aec","line":1970,"in_reply_to":"5a890539_17408506","updated":"2014-12-01 11:45:37.000000000","message":"Done","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"ae118eec8ee04b0c6463f7f01a1b09a28a7258ae","unresolved":false,"context_lines":[{"line_number":2164,"context_line":"                                     datetime.datetime(2013, 8, 1, 10, 11)])"},{"line_number":2165,"context_line":""},{"line_number":2166,"context_line":"    def test_group_by_metadata_with_query_filter_and_period(self):"},{"line_number":2167,"context_line":"        # This test should check grouping with metadata fields in combination"},{"line_number":2168,"context_line":"        # with a query filter and period grouping."},{"line_number":2169,"context_line":"        f \u003d storage.SampleFilter("},{"line_number":2170,"context_line":"            meter\u003d\u0027instance\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_b75091d5","line":2167,"updated":"2014-11-28 17:21:44.000000000","message":"ditto","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":13273,"name":"Lena Novokshonova","email":"enovokshonova@mirantis.com","username":"enovokshonova"},"change_message_id":"0d9a82f85f027366107a1c07aa88d88d3aa43828","unresolved":false,"context_lines":[{"line_number":2164,"context_line":"                                     datetime.datetime(2013, 8, 1, 10, 11)])"},{"line_number":2165,"context_line":""},{"line_number":2166,"context_line":"    def test_group_by_metadata_with_query_filter_and_period(self):"},{"line_number":2167,"context_line":"        # This test should check grouping with metadata fields in combination"},{"line_number":2168,"context_line":"        # with a query filter and period grouping."},{"line_number":2169,"context_line":"        f \u003d storage.SampleFilter("},{"line_number":2170,"context_line":"            meter\u003d\u0027instance\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_93db967c","line":2167,"in_reply_to":"5a890539_b75091d5","updated":"2014-12-01 11:45:37.000000000","message":"Done","commit_id":"a18fb1ff61fcef6dbabd03a46b969baaa2b4c1d4"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"719fc7e83388943f58e93d2f50b4bfeff4dff1b3","unresolved":false,"context_lines":[{"line_number":1544,"context_line":"            ceilometer.NotImplementedError,"},{"line_number":1545,"context_line":"            lambda: list(self.conn.get_meter_statistics(f, groupby\u003d[\u0027wtf\u0027]))"},{"line_number":1546,"context_line":"        )"},{"line_number":1547,"context_line":""},{"line_number":1548,"context_line":"    def test_group_by_metadata(self):"},{"line_number":1549,"context_line":"        # This test checks grouping by a single metadata field."},{"line_number":1550,"context_line":"        f \u003d storage.SampleFilter("}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_9f28f034","line":1547,"updated":"2014-12-01 14:39:49.000000000","message":"Maybe it\u0027s better to rename to test_group_by_metadata_instance_type and remove comment. Or add a note about \"instance_type\" to comment because now it\u0027s useless","commit_id":"6f0822a94f7acc1783217dd6957334e8b2f563bf"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"1a81c3c78ea5319a7fdd1914544c43e10c052119","unresolved":false,"context_lines":[{"line_number":1372,"context_line":"                project_id\u003dtest_sample[\u0027project\u0027],"},{"line_number":1373,"context_line":"                resource_id\u003dtest_sample[\u0027resource\u0027],"},{"line_number":1374,"context_line":"                timestamp\u003ddatetime.datetime(*test_sample[\u0027timestamp\u0027]),"},{"line_number":1375,"context_line":"                resource_metadata\u003d{\u0027flavor\u0027: test_sample[\u0027metadata_flavor\u0027],"},{"line_number":1376,"context_line":"                                   \u0027event\u0027: test_sample[\u0027metadata_event\u0027],"},{"line_number":1377,"context_line":"                                   \u0027instance_type\u0027:"},{"line_number":1378,"context_line":"                                       test_sample[\u0027metadata_instance_type\u0027]},"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_92fc5e41","line":1375,"updated":"2014-12-01 19:02:28.000000000","message":"you can get a bit neater code if move \u0027flavor\u0027 to a new line.","commit_id":"15d01c2ff27df7566097d42d8709b8b1732ef74e"}]}
