)]}'
{"nova/api/openstack/compute/views/servers.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"58ed2a73361ea09dae0bd137787a0ac0d0a90fa5","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import hashlib"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_583f7924","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":14},"updated":"2018-03-22 15:08:52.000000000","message":"(pep8) strike this","commit_id":"7369a78ee840a047183913d9305b045829bb486f"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"2452642d6754f89ce18dca3bc6cf4342194b8ae2","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import hashlib"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_f6b20b06","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":14},"in_reply_to":"df7087c5_583f7924","updated":"2018-03-23 06:58:02.000000000","message":"Done","commit_id":"7369a78ee840a047183913d9305b045829bb486f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6f976563caa8bbc9660b47794d3962bc00e0a721","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                \"tenant_id\": instance.get(\"project_id\") or \"\","},{"line_number":135,"context_line":"                \"user_id\": instance.get(\"user_id\") or \"\","},{"line_number":136,"context_line":"                \"metadata\": self._get_metadata(instance),"},{"line_number":137,"context_line":"                \"hostId\": self._get_host_id(instance) or \"\","},{"line_number":138,"context_line":"                \"image\": self._get_image(request, instance),"},{"line_number":139,"context_line":"                \"flavor\": self._get_flavor(request, instance,"},{"line_number":140,"context_line":"                                           show_extra_specs),"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_d2a9ea8f","side":"PARENT","line":137,"updated":"2018-04-24 00:05:08.000000000","message":"A-ha, I was wondering how this was going to handle the change from None -\u003e \"\"","commit_id":"cbf02e050e4071565d549856ef878f3f36c0455c"}],"nova/tests/unit/test_utils.py":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"7e5c9e4fd85a05e978ff9fdf171123697dad78b9","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    def test_generate_hostid(self):"},{"line_number":244,"context_line":"        host \u003d \u0027host\u0027"},{"line_number":245,"context_line":"        project_id \u003d \u00279b9e3c847e904b0686e8ffb20e4c6381\u0027"},{"line_number":246,"context_line":"        hostId \u003d \u00272c44849a5266d01174e80303dc64ec6d4ae105aa7c7422813f50a7f0\u0027"},{"line_number":247,"context_line":"        self.assertEqual(utils.generate_hostid(host, project_id), hostId)"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def test_generate_hostid_with_none_host(self):"},{"line_number":250,"context_line":"        project_id \u003d \u00279b9e3c847e904b0686e8ffb20e4c6381\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_d8b869c9","line":247,"range":{"start_line":246,"start_character":7,"end_line":247,"end_character":73},"updated":"2018-03-22 15:03:49.000000000","message":"seems these doesn\u0027t match from test results.","commit_id":"7369a78ee840a047183913d9305b045829bb486f"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"61fb72a4df9730518a96c5308dcd9cdf4185a08d","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    def test_generate_hostid(self):"},{"line_number":244,"context_line":"        host \u003d \u0027host\u0027"},{"line_number":245,"context_line":"        project_id \u003d \u00279b9e3c847e904b0686e8ffb20e4c6381\u0027"},{"line_number":246,"context_line":"        hostId \u003d \u00272c44849a5266d01174e80303dc64ec6d4ae105aa7c7422813f50a7f0\u0027"},{"line_number":247,"context_line":"        self.assertEqual(utils.generate_hostid(host, project_id), hostId)"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def test_generate_hostid_with_none_host(self):"},{"line_number":250,"context_line":"        project_id \u003d \u00279b9e3c847e904b0686e8ffb20e4c6381\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_d67b4725","line":247,"range":{"start_line":246,"start_character":7,"end_line":247,"end_character":73},"in_reply_to":"df7087c5_d8b869c9","updated":"2018-03-23 06:58:51.000000000","message":"This is a hostId using \u0027host1\u0027...Orz...","commit_id":"7369a78ee840a047183913d9305b045829bb486f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"29d78e6def39ffa0984dc1473254409b453f42c6","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        host \u003d \u0027host\u0027"},{"line_number":245,"context_line":"        project_id \u003d \u00279b9e3c847e904b0686e8ffb20e4c6381\u0027"},{"line_number":246,"context_line":"        hostId \u003d \u0027fa123c6f74efd4aad95f84096f9e187caa0625925a9e7837b2b46792\u0027"},{"line_number":247,"context_line":"        self.assertEqual(utils.generate_hostid(host, project_id), hostId)"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def test_generate_hostid_with_none_host(self):"},{"line_number":250,"context_line":"        project_id \u003d \u00279b9e3c847e904b0686e8ffb20e4c6381\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_4ce44a3c","line":247,"range":{"start_line":247,"start_character":7,"end_line":247,"end_character":73},"updated":"2018-04-13 14:15:34.000000000","message":"swap the args","commit_id":"87bc1768fd71d6c6efb544bd5b88150430c4c3a3"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"0d28f86ff7e48795d89f293bcf372be7083903fa","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        host \u003d \u0027host\u0027"},{"line_number":245,"context_line":"        project_id \u003d \u00279b9e3c847e904b0686e8ffb20e4c6381\u0027"},{"line_number":246,"context_line":"        hostId \u003d \u0027fa123c6f74efd4aad95f84096f9e187caa0625925a9e7837b2b46792\u0027"},{"line_number":247,"context_line":"        self.assertEqual(utils.generate_hostid(host, project_id), hostId)"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def test_generate_hostid_with_none_host(self):"},{"line_number":250,"context_line":"        project_id \u003d \u00279b9e3c847e904b0686e8ffb20e4c6381\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_6c9a3fc6","line":247,"range":{"start_line":247,"start_character":7,"end_line":247,"end_character":73},"in_reply_to":"bf659307_4ce44a3c","updated":"2018-04-16 02:17:58.000000000","message":"self.assertEqual(expected, observed)\nself.assertEqual(expected, observed)\nself.assertEqual(expected, observed)\n\n...\n\nI repeat it ten thousand times in my mind!","commit_id":"87bc1768fd71d6c6efb544bd5b88150430c4c3a3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"29d78e6def39ffa0984dc1473254409b453f42c6","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def test_generate_hostid_with_none_host(self):"},{"line_number":250,"context_line":"        project_id \u003d \u00279b9e3c847e904b0686e8ffb20e4c6381\u0027"},{"line_number":251,"context_line":"        self.assertEqual(utils.generate_hostid(None, project_id), \u0027\u0027)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"class TestCachedFile(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_6cdfce65","line":251,"updated":"2018-04-13 14:15:34.000000000","message":"same","commit_id":"87bc1768fd71d6c6efb544bd5b88150430c4c3a3"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"0d28f86ff7e48795d89f293bcf372be7083903fa","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def test_generate_hostid_with_none_host(self):"},{"line_number":250,"context_line":"        project_id \u003d \u00279b9e3c847e904b0686e8ffb20e4c6381\u0027"},{"line_number":251,"context_line":"        self.assertEqual(utils.generate_hostid(None, project_id), \u0027\u0027)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"class TestCachedFile(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_2ca44708","line":251,"in_reply_to":"bf659307_6cdfce65","updated":"2018-04-16 02:17:58.000000000","message":"Another ten thousand times again. : )","commit_id":"87bc1768fd71d6c6efb544bd5b88150430c4c3a3"}],"nova/utils.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"58ed2a73361ea09dae0bd137787a0ac0d0a90fa5","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"    This is a hashed value so will not actually look like a hostname, and is"},{"line_number":1389,"context_line":"    hashed with data from the project_id."},{"line_number":1390,"context_line":""},{"line_number":1391,"context_line":"    :param host: The name of the host to which the server is evacuated."},{"line_number":1392,"context_line":"    :param project_id: The UUID of the project."},{"line_number":1393,"context_line":"    :return: An obfuscated hashed host id string, return \"\" if host is empty"},{"line_number":1394,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_38ede5b6","line":1391,"range":{"start_line":1391,"start_character":38,"end_line":1391,"end_character":71},"updated":"2018-03-22 15:08:52.000000000","message":"Isn\u0027t this pretty specific for a util method?  (If this is only ever used for evacuate, perhaps it shouldn\u0027t be here.)","commit_id":"7369a78ee840a047183913d9305b045829bb486f"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"2452642d6754f89ce18dca3bc6cf4342194b8ae2","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"    This is a hashed value so will not actually look like a hostname, and is"},{"line_number":1389,"context_line":"    hashed with data from the project_id."},{"line_number":1390,"context_line":""},{"line_number":1391,"context_line":"    :param host: The name of the host to which the server is evacuated."},{"line_number":1392,"context_line":"    :param project_id: The UUID of the project."},{"line_number":1393,"context_line":"    :return: An obfuscated hashed host id string, return \"\" if host is empty"},{"line_number":1394,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_56c2d75a","line":1391,"range":{"start_line":1391,"start_character":38,"end_line":1391,"end_character":71},"in_reply_to":"df7087c5_38ede5b6","updated":"2018-03-23 06:58:02.000000000","message":"Sorry, wrong copy...","commit_id":"7369a78ee840a047183913d9305b045829bb486f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"29d78e6def39ffa0984dc1473254409b453f42c6","unresolved":false,"context_lines":[{"line_number":1383,"context_line":""},{"line_number":1384,"context_line":""},{"line_number":1385,"context_line":"def generate_hostid(host, project_id):"},{"line_number":1386,"context_line":"    \"\"\"Generate an obfuscated host id representing the host."},{"line_number":1387,"context_line":""},{"line_number":1388,"context_line":"    This is a hashed value so will not actually look like a hostname, and is"},{"line_number":1389,"context_line":"    hashed with data from the project_id."},{"line_number":1390,"context_line":""},{"line_number":1391,"context_line":"    :param host: The name of the compute host."},{"line_number":1392,"context_line":"    :param project_id: The UUID of the project."}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_6c2eee8c","line":1389,"range":{"start_line":1386,"start_character":7,"end_line":1389,"end_character":41},"updated":"2018-04-13 14:15:34.000000000","message":"Nice docstring. I see what you did here.\n\nhttps://github.com/openstack/nova/blob/master/api-ref/source/parameters.yaml#L3260\n\n:)","commit_id":"87bc1768fd71d6c6efb544bd5b88150430c4c3a3"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"0d28f86ff7e48795d89f293bcf372be7083903fa","unresolved":false,"context_lines":[{"line_number":1383,"context_line":""},{"line_number":1384,"context_line":""},{"line_number":1385,"context_line":"def generate_hostid(host, project_id):"},{"line_number":1386,"context_line":"    \"\"\"Generate an obfuscated host id representing the host."},{"line_number":1387,"context_line":""},{"line_number":1388,"context_line":"    This is a hashed value so will not actually look like a hostname, and is"},{"line_number":1389,"context_line":"    hashed with data from the project_id."},{"line_number":1390,"context_line":""},{"line_number":1391,"context_line":"    :param host: The name of the compute host."},{"line_number":1392,"context_line":"    :param project_id: The UUID of the project."}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_0c3dc3ba","line":1389,"range":{"start_line":1386,"start_character":7,"end_line":1389,"end_character":41},"in_reply_to":"bf659307_6c2eee8c","updated":"2018-04-16 02:17:58.000000000","message":"HaHa, all right, you got me! : )","commit_id":"87bc1768fd71d6c6efb544bd5b88150430c4c3a3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"29d78e6def39ffa0984dc1473254409b453f42c6","unresolved":false,"context_lines":[{"line_number":1396,"context_line":"        data \u003d (project_id + host).encode(\u0027utf-8\u0027)"},{"line_number":1397,"context_line":"        sha_hash \u003d hashlib.sha224(data)"},{"line_number":1398,"context_line":"        return sha_hash.hexdigest()"},{"line_number":1399,"context_line":"    else:"},{"line_number":1400,"context_line":"        return \"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_8c9902c5","line":1400,"range":{"start_line":1399,"start_character":4,"end_line":1400,"end_character":17},"updated":"2018-04-13 14:15:34.000000000","message":"nit: this could just be:\n\nif host:\n    data \u003d (project_id + host).encode(\u0027utf-8\u0027)\n    sha_hash \u003d hashlib.sha224(data)\n    return sha_hash.hexdigest()\nreturn \"\"\n\nStatic analysis tooling from a previous life has stuck with me such that unnecessary else blocks when the if block breaks and returns still makes me cringe. Like Pavlov\u0027s dog.","commit_id":"87bc1768fd71d6c6efb544bd5b88150430c4c3a3"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"0d28f86ff7e48795d89f293bcf372be7083903fa","unresolved":false,"context_lines":[{"line_number":1396,"context_line":"        data \u003d (project_id + host).encode(\u0027utf-8\u0027)"},{"line_number":1397,"context_line":"        sha_hash \u003d hashlib.sha224(data)"},{"line_number":1398,"context_line":"        return sha_hash.hexdigest()"},{"line_number":1399,"context_line":"    else:"},{"line_number":1400,"context_line":"        return \"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_2c6f67c6","line":1400,"range":{"start_line":1399,"start_character":4,"end_line":1400,"end_character":17},"in_reply_to":"bf659307_8c9902c5","updated":"2018-04-16 02:17:58.000000000","message":": ), let\u0027s stuck together, LOL, It\u0027s easy for me to address it in nits addressing patch.","commit_id":"87bc1768fd71d6c6efb544bd5b88150430c4c3a3"}]}
