)]}'
{"ceilometer/storage/hbase/utils.py":[{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"680fc5c6ee253b4eb7a1bf019d621e998f89de9f","unresolved":false,"context_lines":[{"line_number":421,"context_line":""},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"def encode(data, encoding\u003d\u0027utf-8\u0027):"},{"line_number":424,"context_line":"    if type(data) in [str, unicode]:"},{"line_number":425,"context_line":"        return data.encode(encoding)"},{"line_number":426,"context_line":"    return data"},{"line_number":427,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_ccfe806b","line":424,"range":{"start_line":424,"start_character":22,"end_line":424,"end_character":25},"updated":"2014-09-30 13:12:38.000000000","message":"Do we really need to encode strings here? It is seems that data should be encoded only if it is unicode.","commit_id":"12a7139576d7125821b92ac1704db01fcf450fb6"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"b4be1f9d9d8927bfce5f0092f33984c694239c98","unresolved":false,"context_lines":[{"line_number":421,"context_line":""},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"def encode(data, encoding\u003d\u0027utf-8\u0027):"},{"line_number":424,"context_line":"    if type(data) in [str, unicode]:"},{"line_number":425,"context_line":"        return data.encode(encoding)"},{"line_number":426,"context_line":"    return data"},{"line_number":427,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_c76819f8","line":424,"range":{"start_line":424,"start_character":22,"end_line":424,"end_character":25},"in_reply_to":"baa201ad_ccfe806b","updated":"2014-09-30 13:51:45.000000000","message":"Yes, you are right. I\u0027ll fix it as soon as possible.","commit_id":"12a7139576d7125821b92ac1704db01fcf450fb6"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"680fc5c6ee253b4eb7a1bf019d621e998f89de9f","unresolved":false,"context_lines":[{"line_number":427,"context_line":""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"def decode(data, encoding\u003d\u0027utf-8\u0027):"},{"line_number":430,"context_line":"    if type(data) in [str, unicode]:"},{"line_number":431,"context_line":"        return data.decode(encoding)"},{"line_number":432,"context_line":"    return data"},{"line_number":433,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_0c3fa826","line":430,"updated":"2014-09-30 13:12:38.000000000","message":"The same question. Do we need to decode unicode strings?","commit_id":"12a7139576d7125821b92ac1704db01fcf450fb6"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"b4be1f9d9d8927bfce5f0092f33984c694239c98","unresolved":false,"context_lines":[{"line_number":427,"context_line":""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"def decode(data, encoding\u003d\u0027utf-8\u0027):"},{"line_number":430,"context_line":"    if type(data) in [str, unicode]:"},{"line_number":431,"context_line":"        return data.decode(encoding)"},{"line_number":432,"context_line":"    return data"},{"line_number":433,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_e76d1d06","line":430,"in_reply_to":"baa201ad_0c3fa826","updated":"2014-09-30 13:51:45.000000000","message":"Also here.","commit_id":"12a7139576d7125821b92ac1704db01fcf450fb6"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"35672293650a36cec95d8e5b556dac46a7c90ce3","unresolved":false,"context_lines":[{"line_number":442,"context_line":"    decoded \u003d data"},{"line_number":443,"context_line":"    if type(data) is unicode:"},{"line_number":444,"context_line":"        decoded \u003d data.encode(encoding)"},{"line_number":445,"context_line":"    return decoded"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"def decode(data, encoding\u003d\u0027utf-8\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_08322d10","line":445,"updated":"2014-11-11 16:24:37.000000000","message":"return data.encode(encoding) if type(data) is unicode else data","commit_id":"45894db3176499915a33f99f259faa128c1dc5b1"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"a5098e5169db0aa98cffe1746f894d7962d751f4","unresolved":false,"context_lines":[{"line_number":442,"context_line":"    decoded \u003d data"},{"line_number":443,"context_line":"    if type(data) is unicode:"},{"line_number":444,"context_line":"        decoded \u003d data.encode(encoding)"},{"line_number":445,"context_line":"    return decoded"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"def decode(data, encoding\u003d\u0027utf-8\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_eea169aa","line":445,"in_reply_to":"5a890539_08322d10","updated":"2014-11-11 16:56:00.000000000","message":"Ok","commit_id":"45894db3176499915a33f99f259faa128c1dc5b1"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"35672293650a36cec95d8e5b556dac46a7c90ce3","unresolved":false,"context_lines":[{"line_number":448,"context_line":"def decode(data, encoding\u003d\u0027utf-8\u0027):"},{"line_number":449,"context_line":"    if type(data) is str:"},{"line_number":450,"context_line":"        return data.decode(encoding)"},{"line_number":451,"context_line":"    return data"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"# We don\u0027t want to have tzinfo in decoded json.This object_hook is"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_e82c01ae","line":451,"updated":"2014-11-11 16:24:37.000000000","message":"return data.decode(encoding) if type(data) is str else data\n\nmaybe we should consider python3 too....","commit_id":"45894db3176499915a33f99f259faa128c1dc5b1"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"a5098e5169db0aa98cffe1746f894d7962d751f4","unresolved":false,"context_lines":[{"line_number":448,"context_line":"def decode(data, encoding\u003d\u0027utf-8\u0027):"},{"line_number":449,"context_line":"    if type(data) is str:"},{"line_number":450,"context_line":"        return data.decode(encoding)"},{"line_number":451,"context_line":"    return data"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"# We don\u0027t want to have tzinfo in decoded json.This object_hook is"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_2e837105","line":451,"in_reply_to":"5a890539_e82c01ae","updated":"2014-11-11 16:56:00.000000000","message":"I\u0027ll check it at python3 before publishing new patchset","commit_id":"45894db3176499915a33f99f259faa128c1dc5b1"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"16f8f664819473d48983fa5c3174bd82eec93889","unresolved":false,"context_lines":[{"line_number":440,"context_line":""},{"line_number":441,"context_line":"def encode_unicode(data):"},{"line_number":442,"context_line":"    return (data.encode(\u0027utf-8\u0027)"},{"line_number":443,"context_line":"            if isinstance(data, six.text_type) else data)"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"def decode_unicode(data):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a890539_b635e0dc","line":443,"updated":"2014-11-12 14:16:01.000000000","message":"In Python3, the encode will get byte array, I\u0027m not sure if this is what we need.","commit_id":"fe1ac8c6e84f68755d74b862b5b12dc91fe5f53e"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"16f8f664819473d48983fa5c3174bd82eec93889","unresolved":false,"context_lines":[{"line_number":445,"context_line":""},{"line_number":446,"context_line":"def decode_unicode(data):"},{"line_number":447,"context_line":"    return (data.encode(\u0027utf-8\u0027)"},{"line_number":448,"context_line":"            if isinstance(data, six.text_type) else data)"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"# We don\u0027t want to have tzinfo in decoded json.This object_hook is"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a890539_760d3837","line":448,"updated":"2014-11-12 14:16:01.000000000","message":"I think this should be\n\n    return data.decode(\u0027utf-8\u0027) if not isinstance(data, six.text_type) else data","commit_id":"fe1ac8c6e84f68755d74b862b5b12dc91fe5f53e"}],"ceilometer/storage/impl_hbase.py":[{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"7fdafd76198710d733db58881a76b8a0fe8d36d0","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            # automatically \u0027on the top\u0027. It is needed to keep metadata"},{"line_number":172,"context_line":"            # up-to-date: metadata from newest samples is considered as actual."},{"line_number":173,"context_line":"            ts \u003d int(time.mktime(data[\u0027timestamp\u0027].timetuple()) * 1000)"},{"line_number":174,"context_line":"            resource_table.put(hbase_utils.encode_unicode(data[\u0027resource_id\u0027]),"},{"line_number":175,"context_line":"                               resource, ts)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"            # Rowkey consists of reversed timestamp, meter and a"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_f210d001","line":174,"updated":"2014-11-25 15:25:01.000000000","message":"If there any chance that we get resource_id with not ascii chars?","commit_id":"f35a14f23ea669f4e0b16ef77b7d7fb678234734"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"b9d08f7b4137ca00ec6141c61923a8c2888a9859","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            # automatically \u0027on the top\u0027. It is needed to keep metadata"},{"line_number":172,"context_line":"            # up-to-date: metadata from newest samples is considered as actual."},{"line_number":173,"context_line":"            ts \u003d int(time.mktime(data[\u0027timestamp\u0027].timetuple()) * 1000)"},{"line_number":174,"context_line":"            resource_table.put(hbase_utils.encode_unicode(data[\u0027resource_id\u0027]),"},{"line_number":175,"context_line":"                               resource, ts)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"            # Rowkey consists of reversed timestamp, meter and a"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_010168ae","line":174,"in_reply_to":"5a890539_f210d001","updated":"2014-11-26 10:46:14.000000000","message":"User can post samples via api. Posted samples may contain unicode resource_id how I think.","commit_id":"f35a14f23ea669f4e0b16ef77b7d7fb678234734"}],"ceilometer/tests/storage/test_storage_scenarios.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"35672293650a36cec95d8e5b556dac46a7c90ce3","unresolved":false,"context_lines":[{"line_number":3199,"context_line":"            name\u003du\u0027meter.accent\\xe9\\u0437\u0027,"},{"line_number":3200,"context_line":"            metadata\u003d{u\"metadata_key\\xe9\\u0437\": \"test\","},{"line_number":3201,"context_line":"                      u\"metadata_key\": u\"test\\xe9\\u0437\"},"},{"line_number":3202,"context_line":"            user_id\u003du\"user\\xe9\\u0437\","},{"line_number":3203,"context_line":"            project_id\u003du\"project\\xe9\\u0437\","},{"line_number":3204,"context_line":"            resource_id\u003du\"resource\\xe9\\u0437\","},{"line_number":3205,"context_line":"        ))"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_7313a65c","line":3202,"updated":"2014-11-11 16:24:37.000000000","message":"I don\u0027t think user_id, project_id can be unicode, since they are controlled by keystone. resource_id can be unicode because nova sometimes does, sigh","commit_id":"45894db3176499915a33f99f259faa128c1dc5b1"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"2b4ce711f90fc74c88f59be7215bfc54237669f9","unresolved":false,"context_lines":[{"line_number":3199,"context_line":"            name\u003du\u0027meter.accent\\xe9\\u0437\u0027,"},{"line_number":3200,"context_line":"            metadata\u003d{u\"metadata_key\\xe9\\u0437\": \"test\","},{"line_number":3201,"context_line":"                      u\"metadata_key\": u\"test\\xe9\\u0437\"},"},{"line_number":3202,"context_line":"            user_id\u003du\"user\\xe9\\u0437\","},{"line_number":3203,"context_line":"            project_id\u003du\"project\\xe9\\u0437\","},{"line_number":3204,"context_line":"            resource_id\u003du\"resource\\xe9\\u0437\","},{"line_number":3205,"context_line":"        ))"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_2eb531ee","line":3202,"in_reply_to":"5a890539_7313a65c","updated":"2014-11-11 16:55:08.000000000","message":"I may remove assert for user_id and project_id","commit_id":"45894db3176499915a33f99f259faa128c1dc5b1"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"35672293650a36cec95d8e5b556dac46a7c90ce3","unresolved":false,"context_lines":[{"line_number":3204,"context_line":"            resource_id\u003du\"resource\\xe9\\u0437\","},{"line_number":3205,"context_line":"        ))"},{"line_number":3206,"context_line":""},{"line_number":3207,"context_line":"    def test_unicode_sample(self):"},{"line_number":3208,"context_line":"        f \u003d storage.SampleFilter()"},{"line_number":3209,"context_line":"        results \u003d list(self.conn.get_samples(f))"},{"line_number":3210,"context_line":"        self.assertEqual(len(results), 1)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_d331baed","line":3207,"updated":"2014-11-11 16:24:37.000000000","message":"So this test case is going to verify all backend?","commit_id":"45894db3176499915a33f99f259faa128c1dc5b1"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"2b4ce711f90fc74c88f59be7215bfc54237669f9","unresolved":false,"context_lines":[{"line_number":3204,"context_line":"            resource_id\u003du\"resource\\xe9\\u0437\","},{"line_number":3205,"context_line":"        ))"},{"line_number":3206,"context_line":""},{"line_number":3207,"context_line":"    def test_unicode_sample(self):"},{"line_number":3208,"context_line":"        f \u003d storage.SampleFilter()"},{"line_number":3209,"context_line":"        results \u003d list(self.conn.get_samples(f))"},{"line_number":3210,"context_line":"        self.assertEqual(len(results), 1)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_ce310dee","line":3207,"in_reply_to":"5a890539_d331baed","updated":"2014-11-11 16:55:08.000000000","message":"Yep, only reassurance for mongodb and sql.","commit_id":"45894db3176499915a33f99f259faa128c1dc5b1"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"35672293650a36cec95d8e5b556dac46a7c90ce3","unresolved":false,"context_lines":[{"line_number":3205,"context_line":"        ))"},{"line_number":3206,"context_line":""},{"line_number":3207,"context_line":"    def test_unicode_sample(self):"},{"line_number":3208,"context_line":"        f \u003d storage.SampleFilter()"},{"line_number":3209,"context_line":"        results \u003d list(self.conn.get_samples(f))"},{"line_number":3210,"context_line":"        self.assertEqual(len(results), 1)"},{"line_number":3211,"context_line":"        expected \u003d self.msgs[0]"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_33f4bef1","line":3208,"updated":"2014-11-11 16:24:37.000000000","message":"very tiny nit; I suggest either make f a more meaningful name, or directly put this new object in get_sample()","commit_id":"45894db3176499915a33f99f259faa128c1dc5b1"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"2b4ce711f90fc74c88f59be7215bfc54237669f9","unresolved":false,"context_lines":[{"line_number":3205,"context_line":"        ))"},{"line_number":3206,"context_line":""},{"line_number":3207,"context_line":"    def test_unicode_sample(self):"},{"line_number":3208,"context_line":"        f \u003d storage.SampleFilter()"},{"line_number":3209,"context_line":"        results \u003d list(self.conn.get_samples(f))"},{"line_number":3210,"context_line":"        self.assertEqual(len(results), 1)"},{"line_number":3211,"context_line":"        expected \u003d self.msgs[0]"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_4ee35d07","line":3208,"in_reply_to":"5a890539_33f4bef1","updated":"2014-11-11 16:55:08.000000000","message":"ok, I\u0027ll move it to get_samples","commit_id":"45894db3176499915a33f99f259faa128c1dc5b1"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"16f8f664819473d48983fa5c3174bd82eec93889","unresolved":false,"context_lines":[{"line_number":3199,"context_line":"            name\u003du\u0027meter.accent\\xe9\\u0437\u0027,"},{"line_number":3200,"context_line":"            metadata\u003d{u\"metadata_key\\xe9\\u0437\": \"test\","},{"line_number":3201,"context_line":"                      u\"metadata_key\": u\"test\\xe9\\u0437\"},"},{"line_number":3202,"context_line":"            user_id\u003du\"user\\xe9\\u0437\","},{"line_number":3203,"context_line":"            project_id\u003du\"project\\xe9\\u0437\","},{"line_number":3204,"context_line":"            resource_id\u003du\"resource\\xe9\\u0437\","},{"line_number":3205,"context_line":"        ))"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a890539_f3f85b7e","line":3202,"updated":"2014-11-12 14:16:01.000000000","message":"see my comment is PS3","commit_id":"fe1ac8c6e84f68755d74b862b5b12dc91fe5f53e"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"16f8f664819473d48983fa5c3174bd82eec93889","unresolved":false,"context_lines":[{"line_number":3205,"context_line":"        ))"},{"line_number":3206,"context_line":""},{"line_number":3207,"context_line":"    def test_unicode_sample(self):"},{"line_number":3208,"context_line":"        f \u003d storage.SampleFilter()"},{"line_number":3209,"context_line":"        results \u003d list(self.conn.get_samples(f))"},{"line_number":3210,"context_line":"        self.assertEqual(len(results), 1)"},{"line_number":3211,"context_line":"        expected \u003d self.msgs[0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a890539_13f40786","line":3208,"updated":"2014-11-12 14:16:01.000000000","message":"ditto","commit_id":"fe1ac8c6e84f68755d74b862b5b12dc91fe5f53e"},{"author":{"_account_id":13273,"name":"Lena Novokshonova","email":"enovokshonova@mirantis.com","username":"enovokshonova"},"change_message_id":"ec7214a70666461c2f8dca95fb98c70e02dfe2c7","unresolved":false,"context_lines":[{"line_number":3244,"context_line":"    def test_unicode_sample(self):"},{"line_number":3245,"context_line":"        f \u003d storage.SampleFilter()"},{"line_number":3246,"context_line":"        results \u003d list(self.conn.get_samples(f))"},{"line_number":3247,"context_line":"        self.assertEqual(len(results), 1)"},{"line_number":3248,"context_line":"        expected \u003d self.msgs[0]"},{"line_number":3249,"context_line":"        actual \u003d results[0].as_dict()"},{"line_number":3250,"context_line":"        self.assertEqual(expected[\u0027counter_name\u0027], actual[\u0027counter_name\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_889842c1","line":3247,"updated":"2014-11-25 12:58:21.000000000","message":"I think it should be self.assertEqual(1, len(results))","commit_id":"f35a14f23ea669f4e0b16ef77b7d7fb678234734"}]}
