)]}'
{"openstackclient/common/format_columns.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"cfe1f36f815658d77a4ccee2985e789e09962ca8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3f044301_b403c60d","updated":"2017-05-04 09:14:04.000000000","message":"This module is no longer necessary as osc-lib 1.5.0 has been released.","commit_id":"fd9fcc4b36eb88edb33fc7c4123d1f1d1f88baef"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"0ee4914f4eef483e40dd2395ed36e4fa51f5fc0e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3f044301_ede7e7e3","in_reply_to":"3f044301_b403c60d","updated":"2017-05-09 09:05:03.000000000","message":"Yes, thanks, I will update to use osc-lib","commit_id":"fd9fcc4b36eb88edb33fc7c4123d1f1d1f88baef"}],"openstackclient/compute/v2/server.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"cfe1f36f815658d77a4ccee2985e789e09962ca8","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        )"},{"line_number":161,"context_line":"    # NOTE(dtroyer): novaclient splits these into separate entries..."},{"line_number":162,"context_line":"    # Format addresses in a useful way"},{"line_number":163,"context_line":"    # FIXME(RuiChen): Server addresses should be put in format column, but no"},{"line_number":164,"context_line":"    #                 suitable osc-lib format utils exist, fix it when related"},{"line_number":165,"context_line":"    #                 utils is ready. The format of server.networks is:"},{"line_number":166,"context_line":"    #                 {u\u0027public\u0027: [u\u00272001:db8::8\u0027, u\u0027172.24.4.6\u0027]}"},{"line_number":167,"context_line":"    info[\u0027addresses\u0027] \u003d _format_servers_list_networks(server.networks)"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f044301_516934bc","line":165,"range":{"start_line":163,"start_character":22,"end_line":165,"end_character":38},"updated":"2017-05-04 09:14:04.000000000","message":"Why not defining its own format column in this module?","commit_id":"fd9fcc4b36eb88edb33fc7c4123d1f1d1f88baef"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"0ee4914f4eef483e40dd2395ed36e4fa51f5fc0e","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        )"},{"line_number":161,"context_line":"    # NOTE(dtroyer): novaclient splits these into separate entries..."},{"line_number":162,"context_line":"    # Format addresses in a useful way"},{"line_number":163,"context_line":"    # FIXME(RuiChen): Server addresses should be put in format column, but no"},{"line_number":164,"context_line":"    #                 suitable osc-lib format utils exist, fix it when related"},{"line_number":165,"context_line":"    #                 utils is ready. The format of server.networks is:"},{"line_number":166,"context_line":"    #                 {u\u0027public\u0027: [u\u00272001:db8::8\u0027, u\u0027172.24.4.6\u0027]}"},{"line_number":167,"context_line":"    info[\u0027addresses\u0027] \u003d _format_servers_list_networks(server.networks)"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f044301_cd030b73","line":165,"range":{"start_line":163,"start_character":22,"end_line":165,"end_character":38},"in_reply_to":"3f044301_516934bc","updated":"2017-05-09 09:05:03.000000000","message":"Yes, it had been added in osc-lib, see https://github.com/openstack/osc-lib/blob/master/osc_lib/cli/format_columns.py#L29-L29","commit_id":"fd9fcc4b36eb88edb33fc7c4123d1f1d1f88baef"}],"openstackclient/tests/functional/compute/v2/test_server.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4f9c7a7edee94b13c4bf25225354d829b143cf43","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            \u0027server show -f json \u0027 +"},{"line_number":102,"context_line":"            name"},{"line_number":103,"context_line":"        ))"},{"line_number":104,"context_line":"        self.assertIsInstance(cmd_output[\u0027properties\u0027], dict)"},{"line_number":105,"context_line":"        self.assertIn(\u0027a\u0027, cmd_output[\u0027properties\u0027])"},{"line_number":106,"context_line":"        self.assertEqual(\u0027b\u0027, cmd_output[\u0027properties\u0027][\u0027a\u0027])"},{"line_number":107,"context_line":"        self.assertIn(\u0027c\u0027, cmd_output[\u0027properties\u0027])"},{"line_number":108,"context_line":"        self.assertEqual(\u0027d\u0027, cmd_output[\u0027properties\u0027][\u0027c\u0027])"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        raw_output \u003d self.openstack("},{"line_number":111,"context_line":"            \u0027server unset \u0027 +"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f044301_a2d70824","line":108,"range":{"start_line":104,"start_character":8,"end_line":108,"end_character":60},"updated":"2017-05-04 10:28:51.000000000","message":"I am not sure why we cannot use just assertEqual.\n\n  self.assertEqual({\u0027a\u0027: \u0027b\u0027, \u0027c\u0027: \u0027d\u0027}, cmd_output[\u0027properties\u0027])","commit_id":"fd9fcc4b36eb88edb33fc7c4123d1f1d1f88baef"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"0ee4914f4eef483e40dd2395ed36e4fa51f5fc0e","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            \u0027server show -f json \u0027 +"},{"line_number":102,"context_line":"            name"},{"line_number":103,"context_line":"        ))"},{"line_number":104,"context_line":"        self.assertIsInstance(cmd_output[\u0027properties\u0027], dict)"},{"line_number":105,"context_line":"        self.assertIn(\u0027a\u0027, cmd_output[\u0027properties\u0027])"},{"line_number":106,"context_line":"        self.assertEqual(\u0027b\u0027, cmd_output[\u0027properties\u0027][\u0027a\u0027])"},{"line_number":107,"context_line":"        self.assertIn(\u0027c\u0027, cmd_output[\u0027properties\u0027])"},{"line_number":108,"context_line":"        self.assertEqual(\u0027d\u0027, cmd_output[\u0027properties\u0027][\u0027c\u0027])"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        raw_output \u003d self.openstack("},{"line_number":111,"context_line":"            \u0027server unset \u0027 +"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f044301_d0739eb0","line":108,"range":{"start_line":104,"start_character":8,"end_line":108,"end_character":60},"in_reply_to":"3f044301_a2d70824","updated":"2017-05-09 09:05:03.000000000","message":"Make sense and more readable, thank you a lot :-)","commit_id":"fd9fcc4b36eb88edb33fc7c4123d1f1d1f88baef"}],"openstackclient/tests/functional/compute/v2/test_server_group.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4f9c7a7edee94b13c4bf25225354d829b143cf43","unresolved":false,"context_lines":[{"line_number":32,"context_line":"            name1,"},{"line_number":33,"context_line":"            cmd_output[\u0027name\u0027]"},{"line_number":34,"context_line":"        )"},{"line_number":35,"context_line":"        self.assertIsInstance(cmd_output[\u0027policies\u0027], list)"},{"line_number":36,"context_line":"        self.assertEqual(1, len(cmd_output[\u0027policies\u0027]))"},{"line_number":37,"context_line":"        self.assertIn(\u0027affinity\u0027, cmd_output[\u0027policies\u0027])"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        cmd_output \u003d json.loads(self.openstack("},{"line_number":40,"context_line":"            \u0027server group create -f json \u0027 +"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f044301_a2c02852","line":37,"range":{"start_line":35,"start_character":8,"end_line":37,"end_character":57},"updated":"2017-05-04 10:28:51.000000000","message":"How about the following?\n\n  self.assertEqual([\u0027affinity\u0027], cmd_output[\u0027policies\u0027])\n\nassertEqual now supports match against dict or list.","commit_id":"fd9fcc4b36eb88edb33fc7c4123d1f1d1f88baef"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"0ee4914f4eef483e40dd2395ed36e4fa51f5fc0e","unresolved":false,"context_lines":[{"line_number":32,"context_line":"            name1,"},{"line_number":33,"context_line":"            cmd_output[\u0027name\u0027]"},{"line_number":34,"context_line":"        )"},{"line_number":35,"context_line":"        self.assertIsInstance(cmd_output[\u0027policies\u0027], list)"},{"line_number":36,"context_line":"        self.assertEqual(1, len(cmd_output[\u0027policies\u0027]))"},{"line_number":37,"context_line":"        self.assertIn(\u0027affinity\u0027, cmd_output[\u0027policies\u0027])"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        cmd_output \u003d json.loads(self.openstack("},{"line_number":40,"context_line":"            \u0027server group create -f json \u0027 +"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f044301_f0f33a09","line":37,"range":{"start_line":35,"start_character":8,"end_line":37,"end_character":57},"in_reply_to":"3f044301_a2c02852","updated":"2017-05-09 09:05:03.000000000","message":"Done, thank you.","commit_id":"fd9fcc4b36eb88edb33fc7c4123d1f1d1f88baef"}],"openstackclient/tests/unit/compute/v2/test_aggregate.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4f9c7a7edee94b13c4bf25225354d829b143cf43","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        self.aggregate_mock.get.assert_called_once_with(parsed_args.aggregate)"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        self.assertEqual(self.columns, columns)"},{"line_number":471,"context_line":"        for index, (key, value) in enumerate(zip(columns, data)):"},{"line_number":472,"context_line":"            if key \u003d\u003d \u0027properties\u0027:"},{"line_number":473,"context_line":"                self.assertIsInstance(value, format_columns.DictColumn)"},{"line_number":474,"context_line":"                self.assertEqual(self.data[index].human_readable(),"},{"line_number":475,"context_line":"                                 value.human_readable())"},{"line_number":476,"context_line":"            else:"},{"line_number":477,"context_line":"                self.assertEqual(self.data[index], value)"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"class TestAggregateUnset(TestAggregate):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f044301_226658ef","line":477,"range":{"start_line":471,"start_character":8,"end_line":477,"end_character":57},"updated":"2017-05-04 10:28:51.000000000","message":"Another approach: I proposed a new common test method assertItemEqual and assertListItemEqual to handle cliff.columns.FormattableColumn in https://review.openstack.org/#/c/462170/2/openstackclient/tests/unit/utils.py . Thought?","commit_id":"fd9fcc4b36eb88edb33fc7c4123d1f1d1f88baef"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"0ee4914f4eef483e40dd2395ed36e4fa51f5fc0e","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        self.aggregate_mock.get.assert_called_once_with(parsed_args.aggregate)"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        self.assertEqual(self.columns, columns)"},{"line_number":471,"context_line":"        for index, (key, value) in enumerate(zip(columns, data)):"},{"line_number":472,"context_line":"            if key \u003d\u003d \u0027properties\u0027:"},{"line_number":473,"context_line":"                self.assertIsInstance(value, format_columns.DictColumn)"},{"line_number":474,"context_line":"                self.assertEqual(self.data[index].human_readable(),"},{"line_number":475,"context_line":"                                 value.human_readable())"},{"line_number":476,"context_line":"            else:"},{"line_number":477,"context_line":"                self.assertEqual(self.data[index], value)"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"class TestAggregateUnset(TestAggregate):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f044301_733614e9","line":477,"range":{"start_line":471,"start_character":8,"end_line":477,"end_character":57},"in_reply_to":"3f044301_226658ef","updated":"2017-05-09 09:05:03.000000000","message":"It\u0027s great, we can use your method in future patch after #462170 is merged, I have added it in my review list.","commit_id":"fd9fcc4b36eb88edb33fc7c4123d1f1d1f88baef"}]}
