)]}'
{"nova/console/serial.py":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"9920668ea90d0f04544e23ccfa86ff79c04dc74a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \"\"\"Initialize allocated ports set with all ports from all"},{"line_number":37,"context_line":"    guests in the host that already use serial ports."},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":"    pass"},{"line_number":40,"context_line":"    # for port in ports:"},{"line_number":41,"context_line":"    #     ALLOCATED_PORTS.add(port)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"@utils.synchronized(SERIAL_LOCK)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_362de195","line":41,"range":{"start_line":39,"start_character":0,"end_line":41,"end_character":35},"updated":"2016-08-10 12:40:22.000000000","message":"That doesn\u0027t do anything right now. The code in comments could be more simpler with:\n\n    ALLOCATED_PORTS.update(ports)","commit_id":"8c03430ceba3ee90d68f3facc06ee26ef8442500"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"2cec32744b0598a9af1bd2207f6abeae49eee57d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \"\"\"Initialize allocated ports set with all ports from all"},{"line_number":37,"context_line":"    guests in the host that already use serial ports."},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":"    pass"},{"line_number":40,"context_line":"    # for port in ports:"},{"line_number":41,"context_line":"    #     ALLOCATED_PORTS.add(port)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"@utils.synchronized(SERIAL_LOCK)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_16ac1d8b","line":41,"range":{"start_line":39,"start_character":0,"end_line":41,"end_character":35},"in_reply_to":"9ad45d7e_362de195","updated":"2016-08-10 12:45:46.000000000","message":"Oh, thanks, we actually need to proceed this code.","commit_id":"8c03430ceba3ee90d68f3facc06ee26ef8442500"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"9920668ea90d0f04544e23ccfa86ff79c04dc74a","unresolved":false,"context_lines":[{"line_number":17099,"context_line":"                \u0027_get_serial_ports_from_guest\u0027)"},{"line_number":17100,"context_line":"    def test_get_allocated_ports(self, serial_ports, list_guests):"},{"line_number":17101,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":17102,"context_line":"        serial_ports.return_value \u003d [\u00276001\u0027, \u00276002\u0027, \u00276003\u0027]"},{"line_number":17103,"context_line":"        list_guests.return_value \u003d [\u0027guest1\u0027, \u0027guest2\u0027]"},{"line_number":17104,"context_line":""},{"line_number":17105,"context_line":"        drvr._get_allocated_ports()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_96c80daa","line":17102,"range":{"start_line":17102,"start_character":36,"end_line":17102,"end_character":60},"updated":"2016-08-10 12:40:22.000000000","message":"Be aware that this method returns a tuple of (host,port): https://github.com/openstack/nova/blob/b2100015ac6f98c68451cb8827687866fe695452/nova/virt/libvirt/driver.py#L1066-L1066\n\nThe return value you specified above could be misleading.","commit_id":"8c03430ceba3ee90d68f3facc06ee26ef8442500"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"2cec32744b0598a9af1bd2207f6abeae49eee57d","unresolved":false,"context_lines":[{"line_number":17099,"context_line":"                \u0027_get_serial_ports_from_guest\u0027)"},{"line_number":17100,"context_line":"    def test_get_allocated_ports(self, serial_ports, list_guests):"},{"line_number":17101,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":17102,"context_line":"        serial_ports.return_value \u003d [\u00276001\u0027, \u00276002\u0027, \u00276003\u0027]"},{"line_number":17103,"context_line":"        list_guests.return_value \u003d [\u0027guest1\u0027, \u0027guest2\u0027]"},{"line_number":17104,"context_line":""},{"line_number":17105,"context_line":"        drvr._get_allocated_ports()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_96e5addd","line":17102,"range":{"start_line":17102,"start_character":36,"end_line":17102,"end_character":60},"in_reply_to":"9ad45d7e_96c80daa","updated":"2016-08-10 12:45:46.000000000","message":"Thanks","commit_id":"8c03430ceba3ee90d68f3facc06ee26ef8442500"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"9920668ea90d0f04544e23ccfa86ff79c04dc74a","unresolved":false,"context_lines":[{"line_number":17105,"context_line":"        drvr._get_allocated_ports()"},{"line_number":17106,"context_line":"        list_guests.assert_called_with(only_running\u003dFalse)"},{"line_number":17107,"context_line":"        self.assertEqual(serial_ports.called, True)"},{"line_number":17108,"context_line":""},{"line_number":17109,"context_line":""},{"line_number":17110,"context_line":"class LibvirtVolumeUsageTestCase(test.NoDBTestCase):"},{"line_number":17111,"context_line":"    \"\"\"Test for LibvirtDriver.get_all_volume_usage.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_569df5ba","line":17108,"updated":"2016-08-10 12:40:22.000000000","message":"I think you should also check here if ALLOCATED_PORTS contains the sequence of ports you specified in line 17102","commit_id":"8c03430ceba3ee90d68f3facc06ee26ef8442500"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"2cec32744b0598a9af1bd2207f6abeae49eee57d","unresolved":false,"context_lines":[{"line_number":17105,"context_line":"        drvr._get_allocated_ports()"},{"line_number":17106,"context_line":"        list_guests.assert_called_with(only_running\u003dFalse)"},{"line_number":17107,"context_line":"        self.assertEqual(serial_ports.called, True)"},{"line_number":17108,"context_line":""},{"line_number":17109,"context_line":""},{"line_number":17110,"context_line":"class LibvirtVolumeUsageTestCase(test.NoDBTestCase):"},{"line_number":17111,"context_line":"    \"\"\"Test for LibvirtDriver.get_all_volume_usage.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_56dfb50c","line":17108,"in_reply_to":"9ad45d7e_569df5ba","updated":"2016-08-10 12:45:46.000000000","message":"Thanks","commit_id":"8c03430ceba3ee90d68f3facc06ee26ef8442500"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"9920668ea90d0f04544e23ccfa86ff79c04dc74a","unresolved":false,"context_lines":[{"line_number":405,"context_line":"            ports \u003d self._get_allocated_ports()"},{"line_number":406,"context_line":"            serial_console.init_allocated_ports(ports)"},{"line_number":407,"context_line":"        except AttributeError:"},{"line_number":408,"context_line":"            pass"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    def _get_volume_drivers(self):"},{"line_number":411,"context_line":"        return libvirt_volume_drivers"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_960dadea","line":408,"range":{"start_line":408,"start_character":12,"end_line":408,"end_character":16},"updated":"2016-08-10 12:40:22.000000000","message":"Could you help me to understand when this happens? Could also be worthwhile to have a log entry.","commit_id":"8c03430ceba3ee90d68f3facc06ee26ef8442500"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"2cec32744b0598a9af1bd2207f6abeae49eee57d","unresolved":false,"context_lines":[{"line_number":405,"context_line":"            ports \u003d self._get_allocated_ports()"},{"line_number":406,"context_line":"            serial_console.init_allocated_ports(ports)"},{"line_number":407,"context_line":"        except AttributeError:"},{"line_number":408,"context_line":"            pass"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    def _get_volume_drivers(self):"},{"line_number":411,"context_line":"        return libvirt_volume_drivers"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_f644e9b7","line":408,"range":{"start_line":408,"start_character":12,"end_line":408,"end_character":16},"in_reply_to":"9ad45d7e_960dadea","updated":"2016-08-10 12:45:46.000000000","message":"This is done for unit tests, i\u0027ve just made that to silently pass attribute error, instead of mocking all libvirt tests that uses LibvirtDriver (there are a lot of such tests)","commit_id":"8c03430ceba3ee90d68f3facc06ee26ef8442500"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"9920668ea90d0f04544e23ccfa86ff79c04dc74a","unresolved":false,"context_lines":[{"line_number":2827,"context_line":"    def _get_allocated_ports(self):"},{"line_number":2828,"context_line":"        \"\"\"Get list of already allocated serial ports.\"\"\""},{"line_number":2829,"context_line":"        ports \u003d []"},{"line_number":2830,"context_line":"        guests \u003d []"},{"line_number":2831,"context_line":""},{"line_number":2832,"context_line":"        for guest in self._host.list_guests(only_running\u003dFalse):"},{"line_number":2833,"context_line":"            guests.append(guest)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_b6f8b1c4","line":2830,"range":{"start_line":2830,"start_character":8,"end_line":2830,"end_character":19},"updated":"2016-08-10 12:40:22.000000000","message":"This is not used in this method, I would remove it.","commit_id":"8c03430ceba3ee90d68f3facc06ee26ef8442500"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"2cec32744b0598a9af1bd2207f6abeae49eee57d","unresolved":false,"context_lines":[{"line_number":2827,"context_line":"    def _get_allocated_ports(self):"},{"line_number":2828,"context_line":"        \"\"\"Get list of already allocated serial ports.\"\"\""},{"line_number":2829,"context_line":"        ports \u003d []"},{"line_number":2830,"context_line":"        guests \u003d []"},{"line_number":2831,"context_line":""},{"line_number":2832,"context_line":"        for guest in self._host.list_guests(only_running\u003dFalse):"},{"line_number":2833,"context_line":"            guests.append(guest)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_960acd77","line":2830,"range":{"start_line":2830,"start_character":8,"end_line":2830,"end_character":19},"in_reply_to":"9ad45d7e_b6f8b1c4","updated":"2016-08-10 12:45:46.000000000","message":"ok","commit_id":"8c03430ceba3ee90d68f3facc06ee26ef8442500"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"9920668ea90d0f04544e23ccfa86ff79c04dc74a","unresolved":false,"context_lines":[{"line_number":2830,"context_line":"        guests \u003d []"},{"line_number":2831,"context_line":""},{"line_number":2832,"context_line":"        for guest in self._host.list_guests(only_running\u003dFalse):"},{"line_number":2833,"context_line":"            guests.append(guest)"},{"line_number":2834,"context_line":"            for serial_port in self._get_serial_ports_from_guest(guest,"},{"line_number":2835,"context_line":"                                                                 mode\u003d\u0027bind\u0027):"},{"line_number":2836,"context_line":"                ports.append(serial_port[1])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_76291937","line":2833,"range":{"start_line":2833,"start_character":12,"end_line":2833,"end_character":32},"updated":"2016-08-10 12:40:22.000000000","message":"This is not used in this method, I would remove it.","commit_id":"8c03430ceba3ee90d68f3facc06ee26ef8442500"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"2cec32744b0598a9af1bd2207f6abeae49eee57d","unresolved":false,"context_lines":[{"line_number":2830,"context_line":"        guests \u003d []"},{"line_number":2831,"context_line":""},{"line_number":2832,"context_line":"        for guest in self._host.list_guests(only_running\u003dFalse):"},{"line_number":2833,"context_line":"            guests.append(guest)"},{"line_number":2834,"context_line":"            for serial_port in self._get_serial_ports_from_guest(guest,"},{"line_number":2835,"context_line":"                                                                 mode\u003d\u0027bind\u0027):"},{"line_number":2836,"context_line":"                ports.append(serial_port[1])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_161ffdb7","line":2833,"range":{"start_line":2833,"start_character":12,"end_line":2833,"end_character":32},"in_reply_to":"9ad45d7e_76291937","updated":"2016-08-10 12:45:46.000000000","message":"ok","commit_id":"8c03430ceba3ee90d68f3facc06ee26ef8442500"}]}
