)]}'
{"manilaclient/tests/functional/client.py":[{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"60fe99b1db2e7f83311cc43ab7d8873a2487c8b5","unresolved":false,"context_lines":[{"line_number":590,"context_line":"    def update_all_share_metadata(self, share, data):"},{"line_number":591,"context_line":"        metadata_raw \u003d self._set_share_metadata(share, data, True)"},{"line_number":592,"context_line":"        metadata \u003d output_parser.details(metadata_raw)"},{"line_number":593,"context_line":"        return metadata"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"    def set_share_metadata(self, share, data):"},{"line_number":596,"context_line":"        return self._set_share_metadata(share, data, False)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a016987_b455c5fa","line":593,"updated":"2015-06-01 02:35:30.000000000","message":"Why does this method parse the output, while the following method does not?  (Not that it matters greatly, since no use of either method appears to use the return value.)","commit_id":"6dc96a13db9afdd8fa1775968ffef9858006428c"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"a824401fc9d3278c01e0dfcec1437aca47a1c5e6","unresolved":false,"context_lines":[{"line_number":590,"context_line":"    def update_all_share_metadata(self, share, data):"},{"line_number":591,"context_line":"        metadata_raw \u003d self._set_share_metadata(share, data, True)"},{"line_number":592,"context_line":"        metadata \u003d output_parser.details(metadata_raw)"},{"line_number":593,"context_line":"        return metadata"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"    def set_share_metadata(self, share, data):"},{"line_number":596,"context_line":"        return self._set_share_metadata(share, data, False)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a016987_8cd51d1d","line":593,"in_reply_to":"7a016987_b455c5fa","updated":"2015-06-01 07:29:06.000000000","message":"This one returns data, below one does not. Actually would be correct to say, we expect such behaviour. So, it could be verified in tests.","commit_id":"6dc96a13db9afdd8fa1775968ffef9858006428c"}],"manilaclient/tests/functional/test_shares_metadata.py":[{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"60fe99b1db2e7f83311cc43ab7d8873a2487c8b5","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self.assertIn(\u0027key1\u0027, metadata)"},{"line_number":44,"context_line":"        self.assertIn(\u0027key2\u0027, metadata)"},{"line_number":45,"context_line":"        self.assertEqual(md[\u0027key1\u0027], metadata[\u0027key1\u0027])"},{"line_number":46,"context_line":"        self.assertEqual(md[\u0027key2\u0027], metadata[\u0027key2\u0027])"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def test_set_and_get_metadata(self):"},{"line_number":49,"context_line":"        # Create share"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a016987_590a4c27","line":46,"updated":"2015-06-01 02:35:30.000000000","message":"Couldn\u0027t these 5 lines be replaced by:\n\nself.assertDictEqual(md, metadata)\n\nIt might also enhance readability to use values like \u0027metadata_in\u0027 and \u0027metadata_out\u0027 instead of \u0027metadata\u0027 and \u0027md\u0027.","commit_id":"6dc96a13db9afdd8fa1775968ffef9858006428c"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"a824401fc9d3278c01e0dfcec1437aca47a1c5e6","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self.assertIn(\u0027key1\u0027, metadata)"},{"line_number":44,"context_line":"        self.assertIn(\u0027key2\u0027, metadata)"},{"line_number":45,"context_line":"        self.assertEqual(md[\u0027key1\u0027], metadata[\u0027key1\u0027])"},{"line_number":46,"context_line":"        self.assertEqual(md[\u0027key2\u0027], metadata[\u0027key2\u0027])"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def test_set_and_get_metadata(self):"},{"line_number":49,"context_line":"        # Create share"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a016987_0cfc8db6","line":46,"in_reply_to":"7a016987_590a4c27","updated":"2015-06-01 07:29:06.000000000","message":"It is intentional. When we get assertion error using comparison of big dicts we are forced to analize parts that differ. In this case we get reference to error place explicitly like \"exactly that field does not match expected one\".","commit_id":"6dc96a13db9afdd8fa1775968ffef9858006428c"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"60fe99b1db2e7f83311cc43ab7d8873a2487c8b5","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        self.assertIn(\u0027key3\u0027, metadata)"},{"line_number":63,"context_line":"        self.assertIn(\u0027key4\u0027, metadata)"},{"line_number":64,"context_line":"        self.assertEqual(md[\u0027key3\u0027], metadata[\u0027key3\u0027])"},{"line_number":65,"context_line":"        self.assertEqual(md[\u0027key4\u0027], metadata[\u0027key4\u0027])"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def test_set_and_delete_metadata(self):"},{"line_number":68,"context_line":"        # Create share"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a016987_59236cbd","line":65,"updated":"2015-06-01 02:35:30.000000000","message":"Same as above.","commit_id":"6dc96a13db9afdd8fa1775968ffef9858006428c"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"a824401fc9d3278c01e0dfcec1437aca47a1c5e6","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        self.assertIn(\u0027key3\u0027, metadata)"},{"line_number":63,"context_line":"        self.assertIn(\u0027key4\u0027, metadata)"},{"line_number":64,"context_line":"        self.assertEqual(md[\u0027key3\u0027], metadata[\u0027key3\u0027])"},{"line_number":65,"context_line":"        self.assertEqual(md[\u0027key4\u0027], metadata[\u0027key4\u0027])"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def test_set_and_delete_metadata(self):"},{"line_number":68,"context_line":"        # Create share"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a016987_eccb7170","line":65,"in_reply_to":"7a016987_59236cbd","updated":"2015-06-01 07:29:06.000000000","message":"Answer above.","commit_id":"6dc96a13db9afdd8fa1775968ffef9858006428c"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"60fe99b1db2e7f83311cc43ab7d8873a2487c8b5","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        # Verify deletion of share metadata"},{"line_number":80,"context_line":"        metadata \u003d self.user_client.get_share_metadata(share[\"id\"])"},{"line_number":81,"context_line":"        self.assertEqual({}, metadata)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def test_set_and_add_metadata(self):"},{"line_number":84,"context_line":"        md \u003d {\u0027key5\u0027: \u0027value5\u0027}"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a016987_d91d1c74","line":81,"updated":"2015-06-01 02:35:30.000000000","message":"Probably OK here, but I still would have used assertDictEqual.","commit_id":"6dc96a13db9afdd8fa1775968ffef9858006428c"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"a824401fc9d3278c01e0dfcec1437aca47a1c5e6","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        # Verify deletion of share metadata"},{"line_number":80,"context_line":"        metadata \u003d self.user_client.get_share_metadata(share[\"id\"])"},{"line_number":81,"context_line":"        self.assertEqual({}, metadata)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def test_set_and_add_metadata(self):"},{"line_number":84,"context_line":"        md \u003d {\u0027key5\u0027: \u0027value5\u0027}"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a016987_ccc67567","line":81,"in_reply_to":"7a016987_d91d1c74","updated":"2015-06-01 07:29:06.000000000","message":"Answer above.","commit_id":"6dc96a13db9afdd8fa1775968ffef9858006428c"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"60fe99b1db2e7f83311cc43ab7d8873a2487c8b5","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        {\"k\" * 255: \"value\"},"},{"line_number":129,"context_line":"        {\"key\": \"v\"},"},{"line_number":130,"context_line":"        {\"key\": \"v\" * 1023})"},{"line_number":131,"context_line":"    def test_set_metadata_min_max_sizes_of_keys_and_values(self, metadata):"},{"line_number":132,"context_line":"        # Set share metadata"},{"line_number":133,"context_line":"        self.user_client.set_share_metadata(self.share[\"id\"], metadata)"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a016987_d42ba180","line":131,"updated":"2015-06-01 02:35:30.000000000","message":"Does it make sense to add negative tests for these size limits?","commit_id":"6dc96a13db9afdd8fa1775968ffef9858006428c"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"a824401fc9d3278c01e0dfcec1437aca47a1c5e6","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        {\"k\" * 255: \"value\"},"},{"line_number":129,"context_line":"        {\"key\": \"v\"},"},{"line_number":130,"context_line":"        {\"key\": \"v\" * 1023})"},{"line_number":131,"context_line":"    def test_set_metadata_min_max_sizes_of_keys_and_values(self, metadata):"},{"line_number":132,"context_line":"        # Set share metadata"},{"line_number":133,"context_line":"        self.user_client.set_share_metadata(self.share[\"id\"], metadata)"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a016987_0c236d57","line":131,"in_reply_to":"7a016987_d42ba180","updated":"2015-06-01 07:29:06.000000000","message":"For the moment mainlaclient does not have proper handling of negative cases. We will have one common exception.","commit_id":"6dc96a13db9afdd8fa1775968ffef9858006428c"}],"manilaclient/v1/shell.py":[{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"60fe99b1db2e7f83311cc43ab7d8873a2487c8b5","unresolved":false,"context_lines":[{"line_number":482,"context_line":"    \"\"\"Show metadata of given share.\"\"\""},{"line_number":483,"context_line":"    share \u003d _find_share(cs, args.share)"},{"line_number":484,"context_line":"    metadata \u003d cs.shares.get_metadata(share)._info"},{"line_number":485,"context_line":"    cliutils.print_dict(metadata, \u0027Property\u0027)"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"@cliutils.arg("}],"source_content_type":"text/x-python","patch_set":14,"id":"7a016987_743d0dc3","line":485,"updated":"2015-06-01 02:35:30.000000000","message":"Changes here seem unrelated, but OK.","commit_id":"6dc96a13db9afdd8fa1775968ffef9858006428c"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"a824401fc9d3278c01e0dfcec1437aca47a1c5e6","unresolved":false,"context_lines":[{"line_number":482,"context_line":"    \"\"\"Show metadata of given share.\"\"\""},{"line_number":483,"context_line":"    share \u003d _find_share(cs, args.share)"},{"line_number":484,"context_line":"    metadata \u003d cs.shares.get_metadata(share)._info"},{"line_number":485,"context_line":"    cliutils.print_dict(metadata, \u0027Property\u0027)"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"@cliutils.arg("}],"source_content_type":"text/x-python","patch_set":14,"id":"7a016987_acea19d6","line":485,"in_reply_to":"7a016987_743d0dc3","updated":"2015-06-01 07:29:06.000000000","message":"Here is the reason: https://github.com/openstack/tempest-lib/blob/b6596013/tempest_lib/cli/output_parser.py#L39","commit_id":"6dc96a13db9afdd8fa1775968ffef9858006428c"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"c26bb72000e061a0c791c2a3503744667d2fb107","unresolved":false,"context_lines":[{"line_number":482,"context_line":"    \"\"\"Show metadata of given share.\"\"\""},{"line_number":483,"context_line":"    share \u003d _find_share(cs, args.share)"},{"line_number":484,"context_line":"    metadata \u003d cs.shares.get_metadata(share)._info"},{"line_number":485,"context_line":"    cliutils.print_dict(metadata, \u0027Property\u0027)"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"@cliutils.arg("}],"source_content_type":"text/x-python","patch_set":14,"id":"7a016987_c26511af","line":485,"in_reply_to":"7a016987_acea19d6","updated":"2015-06-01 14:10:48.000000000","message":"Good to know, thanks.","commit_id":"6dc96a13db9afdd8fa1775968ffef9858006428c"}]}
