)]}'
{"nova/api/openstack/compute/contrib/attach_interfaces.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c9ab51a60179b5107dcf2d486f9e48153a3f69fc","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # Validate that the inputs are correct"},{"line_number":102,"context_line":"        try:"},{"line_number":103,"context_line":"            requested_networks \u003d [(network_id, req_ip, port_id)]"},{"line_number":104,"context_line":"            self.network_api.validate_networks(context, requested_networks)"},{"line_number":105,"context_line":"        except Exception as e:"},{"line_number":106,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dunicode(e))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9uTE%3D","line":103,"updated":"2013-12-06 18:12:07.000000000","message":"nit: this should also be moved out of the try statement.","commit_id":"f44973fada580cb0b36d2c356d103664d65501b2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0c1e069b38e05f03a26137b1d05d4cdb6cb45440","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # Validate that the inputs are correct"},{"line_number":102,"context_line":"        try:"},{"line_number":103,"context_line":"            requested_networks \u003d [(network_id, req_ip, port_id)]"},{"line_number":104,"context_line":"            self.network_api.validate_networks(context, requested_networks)"},{"line_number":105,"context_line":"        except Exception as e:"},{"line_number":106,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dunicode(e))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9uNw%3D","line":103,"in_reply_to":"AAAATn%2F9uTE%3D","updated":"2013-12-06 18:33:09.000000000","message":"Done","commit_id":"f44973fada580cb0b36d2c356d103664d65501b2"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"cf233da61f8c0bb099413e8644d7cfadbc446edb","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        try:"},{"line_number":103,"context_line":"            requested_networks \u003d [(network_id, req_ip, port_id)]"},{"line_number":104,"context_line":"            self.network_api.validate_networks(context, requested_networks)"},{"line_number":105,"context_line":"        except Exception as e:"},{"line_number":106,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dunicode(e))"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F98a8%3D","line":105,"updated":"2013-12-04 06:37:38.000000000","message":"I think it would be better if you were more precise in the exceptions that you catch here. We\u0027ve had problems in the past of overly broad exception catching hiding other problems.","commit_id":"f44973fada580cb0b36d2c356d103664d65501b2"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c9ab51a60179b5107dcf2d486f9e48153a3f69fc","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        try:"},{"line_number":103,"context_line":"            requested_networks \u003d [(network_id, req_ip, port_id)]"},{"line_number":104,"context_line":"            self.network_api.validate_networks(context, requested_networks)"},{"line_number":105,"context_line":"        except Exception as e:"},{"line_number":106,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dunicode(e))"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9uS0%3D","line":105,"in_reply_to":"AAAATn%2F98a8%3D","updated":"2013-12-06 18:12:07.000000000","message":"Good call Christopher I agree.","commit_id":"f44973fada580cb0b36d2c356d103664d65501b2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0c1e069b38e05f03a26137b1d05d4cdb6cb45440","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        try:"},{"line_number":103,"context_line":"            requested_networks \u003d [(network_id, req_ip, port_id)]"},{"line_number":104,"context_line":"            self.network_api.validate_networks(context, requested_networks)"},{"line_number":105,"context_line":"        except Exception as e:"},{"line_number":106,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dunicode(e))"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9uNo%3D","line":105,"in_reply_to":"AAAATn%2F9uS0%3D","updated":"2013-12-06 18:33:09.000000000","message":"Done","commit_id":"f44973fada580cb0b36d2c356d103664d65501b2"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"71a7c9f9821c7d89ff6c6880ceff9d3dbd990c2a","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        except Exception as e:"},{"line_number":112,"context_line":"            LOG.exception(e)"},{"line_number":113,"context_line":"            msg \u003d _(\"Failed to attach interface\")"},{"line_number":114,"context_line":"            raise webob.exc.HTTPInternalServerError(explanation\u003dmsg)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        try:"},{"line_number":117,"context_line":"            instance \u003d self.compute_api.get(context, server_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9r88%3D","line":114,"updated":"2013-12-07 17:16:51.000000000","message":"Is there a reason not to send details in exception e back to the http client? (Like line 110)","commit_id":"7cb4dfa225b1f26d5017f495b091130eb15f5df5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6d0bffd2f44d31399363eb1448ce66a61a962bc0","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        except Exception as e:"},{"line_number":112,"context_line":"            LOG.exception(e)"},{"line_number":113,"context_line":"            msg \u003d _(\"Failed to attach interface\")"},{"line_number":114,"context_line":"            raise webob.exc.HTTPInternalServerError(explanation\u003dmsg)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        try:"},{"line_number":117,"context_line":"            instance \u003d self.compute_api.get(context, server_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9rfU%3D","line":114,"in_reply_to":"AAAATn%2F9r88%3D","updated":"2013-12-08 06:12:32.000000000","message":"my bad. in retrospect the code is incorrect and it should let the calling method treat it as it does will other internal errors","commit_id":"7cb4dfa225b1f26d5017f495b091130eb15f5df5"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"e4dfa01cbba00f27209834cf66b5d1bc5cdaef74","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                exception.NetworkDuplicated,"},{"line_number":108,"context_line":"                exception.NetworkAmbiguous,"},{"line_number":109,"context_line":"                exception.NetworkNotFound) as e:"},{"line_number":110,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dunicode(e))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        try:"},{"line_number":113,"context_line":"            instance \u003d self.compute_api.get(context, server_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAT3%2F%2F2nA%3D","line":110,"updated":"2013-12-30 05:50:29.000000000","message":"It is better use (explanation\u003de.format_message())","commit_id":"ea2bc43011a9792b56cad6fa192a8464241a9218"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5080dfbc83e29ffc68474bc9472aa049ba4f0683","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                exception.NetworkDuplicated,"},{"line_number":108,"context_line":"                exception.NetworkAmbiguous,"},{"line_number":109,"context_line":"                exception.NetworkNotFound) as e:"},{"line_number":110,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dunicode(e))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        try:"},{"line_number":113,"context_line":"            instance \u003d self.compute_api.get(context, server_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAT3%2F%2Fyzg%3D","line":110,"in_reply_to":"AAAAT3%2F%2F2nA%3D","updated":"2013-12-31 13:09:17.000000000","message":"Done","commit_id":"ea2bc43011a9792b56cad6fa192a8464241a9218"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"61a0afd135403c75f70c5ce06010de6e77205e92","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            req_networks \u003d [(network_id, req_ip, port_id)]"},{"line_number":104,"context_line":"            try:"},{"line_number":105,"context_line":"                self.network_api.validate_networks(context, req_networks, 1)"},{"line_number":106,"context_line":"            except (exception.PortNotFound,"},{"line_number":107,"context_line":"                    exception.PortInUse,"},{"line_number":108,"context_line":"                    exception.NetworkDuplicated,"},{"line_number":109,"context_line":"                    exception.NetworkAmbiguous,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2Fh5w%3D","line":106,"updated":"2014-01-12 13:35:40.000000000","message":"Gary, do we need to catch exceptions for both network API and neutron API? Thanks.","commit_id":"4f8da37e1d3ae6d9c4545adcf3cc5eb1512b52a3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"369eb5717b55fa48b773f7209aeb709142e0a8d4","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            req_networks \u003d [(network_id, req_ip, port_id)]"},{"line_number":104,"context_line":"            try:"},{"line_number":105,"context_line":"                self.network_api.validate_networks(context, req_networks, 1)"},{"line_number":106,"context_line":"            except (exception.PortNotFound,"},{"line_number":107,"context_line":"                    exception.PortInUse,"},{"line_number":108,"context_line":"                    exception.NetworkDuplicated,"},{"line_number":109,"context_line":"                    exception.NetworkAmbiguous,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2B9sI%3D","line":106,"in_reply_to":"AAAAUH%2F%2FNkU%3D","updated":"2014-02-17 23:43:13.000000000","message":"That\u0027s not really correct. I just didn\u0027t implement it for nova-network because we were hot on the deprecate-neutron stuff. However, I wouldn\u0027t rule it out in the future for sure. That means you would need to catch NotImplementedError here to be graceful, else you\u0027d blow up with a 500 error.","commit_id":"4f8da37e1d3ae6d9c4545adcf3cc5eb1512b52a3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fdc287b3a44eec2b966515790673af782e2f38c0","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            req_networks \u003d [(network_id, req_ip, port_id)]"},{"line_number":104,"context_line":"            try:"},{"line_number":105,"context_line":"                self.network_api.validate_networks(context, req_networks, 1)"},{"line_number":106,"context_line":"            except (exception.PortNotFound,"},{"line_number":107,"context_line":"                    exception.PortInUse,"},{"line_number":108,"context_line":"                    exception.NetworkDuplicated,"},{"line_number":109,"context_line":"                    exception.NetworkAmbiguous,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FNkU%3D","line":106,"in_reply_to":"AAAAUH%2F%2FgRQ%3D","updated":"2014-01-16 10:26:27.000000000","message":"When the feature was written by Dan Smith the intention was to only support neutron and not nova-network.","commit_id":"4f8da37e1d3ae6d9c4545adcf3cc5eb1512b52a3"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"5920fce27894676f6565311699738a0342598765","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            req_networks \u003d [(network_id, req_ip, port_id)]"},{"line_number":104,"context_line":"            try:"},{"line_number":105,"context_line":"                self.network_api.validate_networks(context, req_networks, 1)"},{"line_number":106,"context_line":"            except (exception.PortNotFound,"},{"line_number":107,"context_line":"                    exception.PortInUse,"},{"line_number":108,"context_line":"                    exception.NetworkDuplicated,"},{"line_number":109,"context_line":"                    exception.NetworkAmbiguous,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FgRQ%3D","line":106,"in_reply_to":"AAAAUH%2F%2FgSw%3D","updated":"2014-01-13 08:41:06.000000000","message":"Yes, I noticed that seems those exceptions were thrown from neutron API, do we need to handle exceptions from nova-network api?","commit_id":"4f8da37e1d3ae6d9c4545adcf3cc5eb1512b52a3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6d341a46c3b4eb42b6722a6cab2383eca7bc9287","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            req_networks \u003d [(network_id, req_ip, port_id)]"},{"line_number":104,"context_line":"            try:"},{"line_number":105,"context_line":"                self.network_api.validate_networks(context, req_networks, 1)"},{"line_number":106,"context_line":"            except (exception.PortNotFound,"},{"line_number":107,"context_line":"                    exception.PortInUse,"},{"line_number":108,"context_line":"                    exception.NetworkDuplicated,"},{"line_number":109,"context_line":"                    exception.NetworkAmbiguous,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FgSw%3D","line":106,"in_reply_to":"AAAAUH%2F%2Fh5w%3D","updated":"2014-01-13 08:34:57.000000000","message":"I was asked by Chris to add these. Please see his comment in patch set 3.","commit_id":"4f8da37e1d3ae6d9c4545adcf3cc5eb1512b52a3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"72a5e307e35274573f93a4b6af129a5c4ff0d564","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            req_networks \u003d [(network_id, req_ip, port_id)]"},{"line_number":104,"context_line":"            try:"},{"line_number":105,"context_line":"                self.network_api.validate_networks(context, req_networks, 1)"},{"line_number":106,"context_line":"            except (exception.PortNotFound,"},{"line_number":107,"context_line":"                    exception.PortInUse,"},{"line_number":108,"context_line":"                    exception.NetworkDuplicated,"},{"line_number":109,"context_line":"                    exception.NetworkAmbiguous,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2B4SY%3D","line":106,"in_reply_to":"AAAAUX%2F%2B9sI%3D","updated":"2014-02-19 09:17:10.000000000","message":"Done","commit_id":"4f8da37e1d3ae6d9c4545adcf3cc5eb1512b52a3"}],"nova/api/openstack/compute/plugins/v3/attach_interfaces.py":[{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"e4dfa01cbba00f27209834cf66b5d1bc5cdaef74","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                exception.NetworkDuplicated,"},{"line_number":110,"context_line":"                exception.NetworkAmbiguous,"},{"line_number":111,"context_line":"                exception.NetworkNotFound) as e:"},{"line_number":112,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dunicode(e))"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        try:"},{"line_number":115,"context_line":"            instance \u003d self.compute_api.get(context, server_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAT3%2F%2F2nE%3D","line":112,"updated":"2013-12-30 05:50:29.000000000","message":"It is better use (explanation\u003de.format_message())","commit_id":"ea2bc43011a9792b56cad6fa192a8464241a9218"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5080dfbc83e29ffc68474bc9472aa049ba4f0683","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                exception.NetworkDuplicated,"},{"line_number":110,"context_line":"                exception.NetworkAmbiguous,"},{"line_number":111,"context_line":"                exception.NetworkNotFound) as e:"},{"line_number":112,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dunicode(e))"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        try:"},{"line_number":115,"context_line":"            instance \u003d self.compute_api.get(context, server_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAT3%2F%2FyzM%3D","line":112,"in_reply_to":"AAAAT3%2F%2F2nE%3D","updated":"2013-12-31 13:09:17.000000000","message":"Done","commit_id":"ea2bc43011a9792b56cad6fa192a8464241a9218"}]}
