)]}'
{"neutron/extensions/loadbalancer.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"77a2dcfbccf038ec67b33f502dbe6efabc7514c8","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"# Loadbalancer Exceptions"},{"line_number":34,"context_line":"class BackendNotFound(qexception.NotFound):"},{"line_number":35,"context_line":"    message \u003d _(\"Backend unavailable for %(pool_id)s\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class VipNotFound(qexception.NotFound):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B%2BfI%3D","line":35,"updated":"2014-03-21 08:45:36.000000000","message":"Would \u0027No eligible backend found for pool ...\u0027 be more clear?","commit_id":"5deee4b735b1a55e878fea9675a88b07f4435ff1"}],"neutron/services/loadbalancer/plugin.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"77a2dcfbccf038ec67b33f502dbe6efabc7514c8","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        driver \u003d self.drivers[provider_name]"},{"line_number":158,"context_line":"        try:"},{"line_number":159,"context_line":"            driver.create_pool(context, p)"},{"line_number":160,"context_line":"        except n_exc.NotFound:"},{"line_number":161,"context_line":"            # that should catch cases when backend of any kind"},{"line_number":162,"context_line":"            # is not available (agent, appliance, etc)"},{"line_number":163,"context_line":"            self.update_status(context, ldb.Pool,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B%2Bbk%3D","line":160,"updated":"2014-03-21 08:45:36.000000000","message":"I think  NoEligibleLbaasAgent can be derived from BackendNotFound and hence catching  BackendNotFound here will be more clear","commit_id":"5deee4b735b1a55e878fea9675a88b07f4435ff1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"08a9270dd7b843f5092d2e1b142a35c9ae98696e","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            # is not available (agent, appliance, etc)"},{"line_number":163,"context_line":"            self.update_status(context, ldb.Pool,"},{"line_number":164,"context_line":"                               p[\u0027id\u0027], constants.ERROR,"},{"line_number":165,"context_line":"                               \"No available backend\")"},{"line_number":166,"context_line":"            raise loadbalancer.BackendNotFound(pool_id\u003dp[\u0027id\u0027])"},{"line_number":167,"context_line":"        return p"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2FBM8%3D","line":165,"updated":"2014-03-20 21:48:58.000000000","message":"This is additional functionality outside the scope of the commit message. Would you update the commit message and also add a check for this call in the unit tests?","commit_id":"5deee4b735b1a55e878fea9675a88b07f4435ff1"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"4caf6d9dca71f108a297b0346bc9e356d0bc4fe4","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        try:"},{"line_number":159,"context_line":"            driver.create_pool(context, p)"},{"line_number":160,"context_line":"        except loadbalancer.NoEligibleBackend:"},{"line_number":161,"context_line":"            # that should catch cases when backend of any kind"},{"line_number":162,"context_line":"            # is not available (agent, appliance, etc)"},{"line_number":163,"context_line":"            self.update_status(context, ldb.Pool,"},{"line_number":164,"context_line":"                               p[\u0027id\u0027], constants.ERROR,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2B9hA%3D","line":161,"updated":"2014-03-21 11:12:32.000000000","message":"Use save_and_reraise_exception to have accurate T/B path to original exception?","commit_id":"19fc8017cd5699b778d6cf3eaa03450b67341a76"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"1155ed8b79dc42108046b938214b8c5550378292","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        try:"},{"line_number":159,"context_line":"            driver.create_pool(context, p)"},{"line_number":160,"context_line":"        except loadbalancer.NoEligibleBackend:"},{"line_number":161,"context_line":"            # that should catch cases when backend of any kind"},{"line_number":162,"context_line":"            # is not available (agent, appliance, etc)"},{"line_number":163,"context_line":"            self.update_status(context, ldb.Pool,"},{"line_number":164,"context_line":"                               p[\u0027id\u0027], constants.ERROR,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2B9fo%3D","line":161,"in_reply_to":"AAAAWH%2F%2B9hA%3D","updated":"2014-03-21 11:15:53.000000000","message":"I think we don\u0027t need the original exception here","commit_id":"19fc8017cd5699b778d6cf3eaa03450b67341a76"}],"neutron/tests/unit/services/loadbalancer/test_agent_scheduler.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"44857d403c91b70a7503efa53dda5b73ab1e80d0","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        self.assertRaises(loadbalancer.NoEligibleBackend,"},{"line_number":146,"context_line":"                          lbaas_plugin.create_pool, self.adminContext, pool)"},{"line_number":147,"context_line":"        pools \u003d lbaas_plugin.get_pools(self.adminContext)"},{"line_number":148,"context_line":"        self.assertEqual(\u0027ERROR\u0027, pools[0][\u0027status\u0027])"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def test_schedule_pool_with_down_agent(self):"},{"line_number":151,"context_line":"        lbaas_hosta \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2B98A%3D","line":148,"updated":"2014-03-21 10:12:17.000000000","message":"Considering parallel test execution I\u0027d suggets checking status of particular pool (unique name?) instead of relying  that there is only target pool in the db at the moment.","commit_id":"19fc8017cd5699b778d6cf3eaa03450b67341a76"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"1155ed8b79dc42108046b938214b8c5550378292","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        self.assertRaises(loadbalancer.NoEligibleBackend,"},{"line_number":146,"context_line":"                          lbaas_plugin.create_pool, self.adminContext, pool)"},{"line_number":147,"context_line":"        pools \u003d lbaas_plugin.get_pools(self.adminContext)"},{"line_number":148,"context_line":"        self.assertEqual(\u0027ERROR\u0027, pools[0][\u0027status\u0027])"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def test_schedule_pool_with_down_agent(self):"},{"line_number":151,"context_line":"        lbaas_hosta \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2B9gM%3D","line":148,"in_reply_to":"AAAAWH%2F%2B98A%3D","updated":"2014-03-21 11:15:53.000000000","message":"that\u0027s not an integration test!","commit_id":"19fc8017cd5699b778d6cf3eaa03450b67341a76"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"a70eb78905ca60b86056c73b9cefb3a7dc3fab76","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        self.assertRaises(loadbalancer.NoEligibleBackend,"},{"line_number":146,"context_line":"                          lbaas_plugin.create_pool, self.adminContext, pool)"},{"line_number":147,"context_line":"        pools \u003d lbaas_plugin.get_pools(self.adminContext)"},{"line_number":148,"context_line":"        self.assertEqual(\u0027ERROR\u0027, pools[0][\u0027status\u0027])"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def test_schedule_pool_with_down_agent(self):"},{"line_number":151,"context_line":"        lbaas_hosta \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2B9Tk%3D","line":148,"in_reply_to":"AAAAWH%2F%2B9gM%3D","updated":"2014-03-21 11:42:55.000000000","message":"Right, my bad","commit_id":"19fc8017cd5699b778d6cf3eaa03450b67341a76"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"44857d403c91b70a7503efa53dda5b73ab1e80d0","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                          lbaas_plugin.create_pool, self.adminContext, pool)"},{"line_number":147,"context_line":"        pools \u003d lbaas_plugin.get_pools(self.adminContext)"},{"line_number":148,"context_line":"        self.assertEqual(\u0027ERROR\u0027, pools[0][\u0027status\u0027])"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def test_schedule_pool_with_down_agent(self):"},{"line_number":151,"context_line":"        lbaas_hosta \u003d {"},{"line_number":152,"context_line":"            \u0027binary\u0027: \u0027neutron-loadbalancer-agent\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2B97g%3D","line":149,"updated":"2014-03-21 10:12:17.000000000","message":"consider checking pool status as well","commit_id":"19fc8017cd5699b778d6cf3eaa03450b67341a76"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"34b635e25d084eb046556ad43e46143e2cbfb223","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                          lbaas_plugin.create_pool, self.adminContext, pool)"},{"line_number":147,"context_line":"        pools \u003d lbaas_plugin.get_pools(self.adminContext)"},{"line_number":148,"context_line":"        self.assertEqual(\u0027ERROR\u0027, pools[0][\u0027status\u0027])"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def test_schedule_pool_with_down_agent(self):"},{"line_number":151,"context_line":"        lbaas_hosta \u003d {"},{"line_number":152,"context_line":"            \u0027binary\u0027: \u0027neutron-loadbalancer-agent\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2B9S4%3D","line":149,"in_reply_to":"AAAAWH%2F%2B97g%3D","updated":"2014-03-21 11:44:30.000000000","message":"Sorry, I meant status description","commit_id":"19fc8017cd5699b778d6cf3eaa03450b67341a76"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"44857d403c91b70a7503efa53dda5b73ab1e80d0","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                              lbaas_plugin.create_pool,"},{"line_number":179,"context_line":"                              self.adminContext, pool)"},{"line_number":180,"context_line":"            pools \u003d lbaas_plugin.get_pools(self.adminContext)"},{"line_number":181,"context_line":"            self.assertEqual(\u0027ERROR\u0027, pools[0][\u0027status\u0027])"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def test_pool_unscheduling_on_pool_deletion(self):"},{"line_number":184,"context_line":"        self._register_agent_states(lbaas_agents\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2B97U%3D","line":181,"updated":"2014-03-21 10:12:17.000000000","message":"ditto","commit_id":"19fc8017cd5699b778d6cf3eaa03450b67341a76"}]}
