)]}'
{"nova/cmd/manage.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d97604eaf14e1a61d09b4c048b0424a37cf8f6ed","unresolved":false,"context_lines":[{"line_number":1895,"context_line":""},{"line_number":1896,"context_line":"        with context.target_cell(ctxt, cell_mapping) as cctxt:"},{"line_number":1897,"context_line":"            instances \u003d objects.InstanceList.get_by_host(cctxt, host)"},{"line_number":1898,"context_line":"            nodes \u003d objects.ComputeNodeList.get_by_hypervisor(cctxt, host)"},{"line_number":1899,"context_line":""},{"line_number":1900,"context_line":"        if instances:"},{"line_number":1901,"context_line":"            print(_(\u0027There are instances on the host %s.\u0027) % host)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_a77f0eaa","line":1898,"range":{"start_line":1898,"start_character":44,"end_line":1898,"end_character":61},"updated":"2017-12-01 15:23:29.000000000","message":"This isn\u0027t what you want. It\u0027s a fuzzy match on hypervisor_hostname, which is the nodename, and what we\u0027re deleting here is the compute_nodes.host field, so use ComputeNodeList.get_all_by_host().","commit_id":"9ec7c5cf129924673efc61a556de7dd29bbe7120"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"02bfa99f9ea8c3d2e111ee1059faf289298cefa8","unresolved":false,"context_lines":[{"line_number":1901,"context_line":"            print(_(\u0027There are instances on the host %s.\u0027) % host)"},{"line_number":1902,"context_line":"            return 4"},{"line_number":1903,"context_line":""},{"line_number":1904,"context_line":"        for node in nodes:"},{"line_number":1905,"context_line":"            node.mapped \u003d 0"},{"line_number":1906,"context_line":"            node.save()"},{"line_number":1907,"context_line":""},{"line_number":1908,"context_line":"        host_mapping.destroy()"},{"line_number":1909,"context_line":"        return 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_953b149b","line":1906,"range":{"start_line":1904,"start_character":8,"end_line":1906,"end_character":23},"updated":"2017-12-01 16:03:28.000000000","message":"Would be good to leave a comment that we are doing this so the compute nodes can be discovered again later if needed, but that could be a follow up if necessary, or if you have to rebase.","commit_id":"570884c2418f812692da352591c9b43a67554dd2"}],"nova/tests/functional/test_nova_manage.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"889ef3686eb77236094a1234daf0adb3cfec7b4e","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        self.context \u003d context.RequestContext(\u0027fake-user\u0027, \u0027fake-project\u0027)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        self.service1 \u003d objects.Service(context\u003dself.context,"},{"line_number":276,"context_line":"                                       host\u003d\u0027fake-host1\u0027,"},{"line_number":277,"context_line":"                                       binary\u003d\u0027nova-compute\u0027,"},{"line_number":278,"context_line":"                                       topic\u003d\u0027fake-host1\u0027,"},{"line_number":279,"context_line":"                                       report_count\u003d1,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_d5319cee","line":276,"updated":"2017-12-01 15:59:29.000000000","message":"alignment :(","commit_id":"2d7d3dcf068d50f2106c7b276f4cfa72ee51bc5a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"889ef3686eb77236094a1234daf0adb3cfec7b4e","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"        for cell in cells:"},{"line_number":312,"context_line":"            r \u003d self.commands.delete_host(cell.uuid, \u0027fake-host1\u0027)"},{"line_number":313,"context_line":"            if r \u003d\u003d 0:"},{"line_number":314,"context_line":"                break"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        # Our node should now be unmapped"},{"line_number":317,"context_line":"        cns \u003d objects.ComputeNodeList.get_all(self.context)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_35a48808","line":314,"range":{"start_line":313,"start_character":12,"end_line":314,"end_character":21},"updated":"2017-12-01 15:59:29.000000000","message":"Fail if not? I guess we\u0027d probably fail below.","commit_id":"2d7d3dcf068d50f2106c7b276f4cfa72ee51bc5a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"dc6eaf290db6c1275d566662719ad1c7d6dcd9c3","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"        for cell in cells:"},{"line_number":312,"context_line":"            r \u003d self.commands.delete_host(cell.uuid, \u0027fake-host1\u0027)"},{"line_number":313,"context_line":"            if r \u003d\u003d 0:"},{"line_number":314,"context_line":"                break"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        # Our node should now be unmapped"},{"line_number":317,"context_line":"        cns \u003d objects.ComputeNodeList.get_all(self.context)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_b5e5f83a","line":314,"range":{"start_line":313,"start_character":12,"end_line":314,"end_character":21},"in_reply_to":"df87a7cf_35a48808","updated":"2017-12-01 16:01:14.000000000","message":"No, because I\u0027m doing this to skip cells that aren\u0027t the one I want. I don\u0027t really need to break here, it\u0027s just a shortcut.","commit_id":"2d7d3dcf068d50f2106c7b276f4cfa72ee51bc5a"}],"nova/tests/unit/test_nova_manage.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2716adb9cd79eeb658a80d9270def0ff61e1d77d","unresolved":false,"context_lines":[{"line_number":1904,"context_line":"        output \u003d self.output.getvalue().strip()"},{"line_number":1905,"context_line":"        self.assertEqual(\u0027There are instances on the host fake-host.\u0027, output)"},{"line_number":1906,"context_line":"        mock_get_by_host.assert_called_once_with("},{"line_number":1907,"context_line":"            test.MatchType(context.RequestContext), \u0027fake-host\u0027)"},{"line_number":1908,"context_line":""},{"line_number":1909,"context_line":"    @mock.patch.object(objects.InstanceList, \u0027get_by_host\u0027,"},{"line_number":1910,"context_line":"                       return_value\u003d[])"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_1c283b32","line":1907,"updated":"2017-12-05 17:57:29.000000000","message":"It seems like test_delete_host_no_nodes is identical to test_delete_host_instances_exist. Can we keep only one of them?","commit_id":"570884c2418f812692da352591c9b43a67554dd2"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"00d2c4e73ccfc21c8bcb5d72ed6e021700bb3be9","unresolved":false,"context_lines":[{"line_number":1904,"context_line":"        output \u003d self.output.getvalue().strip()"},{"line_number":1905,"context_line":"        self.assertEqual(\u0027There are instances on the host fake-host.\u0027, output)"},{"line_number":1906,"context_line":"        mock_get_by_host.assert_called_once_with("},{"line_number":1907,"context_line":"            test.MatchType(context.RequestContext), \u0027fake-host\u0027)"},{"line_number":1908,"context_line":""},{"line_number":1909,"context_line":"    @mock.patch.object(objects.InstanceList, \u0027get_by_host\u0027,"},{"line_number":1910,"context_line":"                       return_value\u003d[])"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_fdff75fe","line":1907,"in_reply_to":"df87a7cf_1c283b32","updated":"2017-12-06 17:09:00.000000000","message":"I think I was going to create a new case based on the one above, and then modified the one below here. So, yeah.","commit_id":"570884c2418f812692da352591c9b43a67554dd2"}]}
