)]}'
{"nova/api/openstack/compute/plugins/v3/deferred_delete.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3d2fe7550626d06941d8c771a2fa720f077e6a88","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def _restore(self, req, id, body):"},{"line_number":38,"context_line":"        \"\"\"Restore a previously deleted instance.\"\"\""},{"line_number":39,"context_line":"        context \u003d req.environ[\"nova.context\"]"},{"line_number":40,"context_line":"        authorize(context)"},{"line_number":41,"context_line":"        instance \u003d self.compute_api.get(context, id)"},{"line_number":42,"context_line":"        try:"},{"line_number":43,"context_line":"            self.compute_api.restore(context, instance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FiqU%3D","line":40,"updated":"2013-06-28 06:11:33.000000000","message":"If the instance is not existed, it will raise InstanceNotFound. We should catch this exception and return status code 404","commit_id":"93a1312b820eaedbd0f882e0be1b7d30325a37d2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"fa1441166106ec160028b01f028e0b66f8243890","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def _restore(self, req, id, body):"},{"line_number":38,"context_line":"        \"\"\"Restore a previously deleted instance.\"\"\""},{"line_number":39,"context_line":"        context \u003d req.environ[\"nova.context\"]"},{"line_number":40,"context_line":"        authorize(context)"},{"line_number":41,"context_line":"        instance \u003d self.compute_api.get(context, id)"},{"line_number":42,"context_line":"        try:"},{"line_number":43,"context_line":"            self.compute_api.restore(context, instance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FWf4%3D","line":40,"in_reply_to":"AAAAPn%2F%2FeVo%3D","updated":"2013-07-03 14:20:19.000000000","message":"yeah, let me check that!","commit_id":"93a1312b820eaedbd0f882e0be1b7d30325a37d2"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"a36b7617da54d6a540eb9ca643b83a8fe8f9a2e1","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def _restore(self, req, id, body):"},{"line_number":38,"context_line":"        \"\"\"Restore a previously deleted instance.\"\"\""},{"line_number":39,"context_line":"        context \u003d req.environ[\"nova.context\"]"},{"line_number":40,"context_line":"        authorize(context)"},{"line_number":41,"context_line":"        instance \u003d self.compute_api.get(context, id)"},{"line_number":42,"context_line":"        try:"},{"line_number":43,"context_line":"            self.compute_api.restore(context, instance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FeVo%3D","line":40,"in_reply_to":"AAAAPn%2F%2FiqU%3D","updated":"2013-07-01 07:09:23.000000000","message":"good catch. We should probably do an audit of all extensions for this.","commit_id":"93a1312b820eaedbd0f882e0be1b7d30325a37d2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2ea68b4b650b5e47d2be6c5e272c59efa9973c95","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                    \u0027restore\u0027)"},{"line_number":51,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @wsgi.action(\u0027forceDelete\u0027)"},{"line_number":54,"context_line":"    def _force_delete(self, req, id, body):"},{"line_number":55,"context_line":"        \"\"\"Force delete of instance before deferred cleanup.\"\"\""},{"line_number":56,"context_line":"        context \u003d req.environ[\"nova.context\"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FWfo%3D","line":53,"updated":"2013-07-03 14:21:10.000000000","message":"force_delete","commit_id":"93a1312b820eaedbd0f882e0be1b7d30325a37d2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3d2fe7550626d06941d8c771a2fa720f077e6a88","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        \"\"\"Force delete of instance before deferred cleanup.\"\"\""},{"line_number":56,"context_line":"        context \u003d req.environ[\"nova.context\"]"},{"line_number":57,"context_line":"        authorize(context)"},{"line_number":58,"context_line":"        instance \u003d self.compute_api.get(context, id)"},{"line_number":59,"context_line":"        try:"},{"line_number":60,"context_line":"            self.compute_api.force_delete(context, instance)"},{"line_number":61,"context_line":"        except exception.InstanceInvalidState as state_error:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FiqQ%3D","line":58,"updated":"2013-06-28 06:11:33.000000000","message":"ditto","commit_id":"93a1312b820eaedbd0f882e0be1b7d30325a37d2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2ea68b4b650b5e47d2be6c5e272c59efa9973c95","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            self.compute_api.force_delete(context, instance)"},{"line_number":61,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":62,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":63,"context_line":"                    \u0027forceDelete\u0027)"},{"line_number":64,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FWfg%3D","line":63,"updated":"2013-07-03 14:21:10.000000000","message":"ditto","commit_id":"93a1312b820eaedbd0f882e0be1b7d30325a37d2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"35e291ee9bf9668f272817a88446912aa7ee3d91","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            instance \u003d self.compute_api.get(context, id)"},{"line_number":43,"context_line":"        except exception.InstanceNotFound:"},{"line_number":44,"context_line":"            msg \u003d _(\"Instance does not exist\")"},{"line_number":45,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":46,"context_line":"        try:"},{"line_number":47,"context_line":"            self.compute_api.restore(context, instance)"},{"line_number":48,"context_line":"        except exception.QuotaError as error:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F%2FYc%3D","line":45,"updated":"2013-07-07 12:41:35.000000000","message":"this can be raise exc.HTTPNotFound(explanation\u003de.format_message())","commit_id":"39c7b4c1b92d027b327c7d6f6a9511397502b134"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"35e291ee9bf9668f272817a88446912aa7ee3d91","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                    \u0027restore\u0027)"},{"line_number":55,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @wsgi.action(\u0027force_Delete\u0027)"},{"line_number":58,"context_line":"    def _force_delete(self, req, id, body):"},{"line_number":59,"context_line":"        \"\"\"Force delete of instance before deferred cleanup.\"\"\""},{"line_number":60,"context_line":"        context \u003d req.environ[\"nova.context\"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F%2FYk%3D","line":57,"updated":"2013-07-07 12:41:35.000000000","message":"should be \u0027force_delete\u0027","commit_id":"39c7b4c1b92d027b327c7d6f6a9511397502b134"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"35e291ee9bf9668f272817a88446912aa7ee3d91","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        \"\"\"Force delete of instance before deferred cleanup.\"\"\""},{"line_number":60,"context_line":"        context \u003d req.environ[\"nova.context\"]"},{"line_number":61,"context_line":"        authorize(context)"},{"line_number":62,"context_line":"        instance \u003d self.compute_api.get(context, id)"},{"line_number":63,"context_line":"        try:"},{"line_number":64,"context_line":"            self.compute_api.force_delete(context, instance)"},{"line_number":65,"context_line":"        except exception.InstanceInvalidState as state_error:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F%2FYY%3D","line":62,"updated":"2013-07-07 12:41:35.000000000","message":"catch InstanceNotFound at here","commit_id":"39c7b4c1b92d027b327c7d6f6a9511397502b134"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"35e291ee9bf9668f272817a88446912aa7ee3d91","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            self.compute_api.force_delete(context, instance)"},{"line_number":65,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":66,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":67,"context_line":"                    \u0027force_Delete\u0027)"},{"line_number":68,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F%2FYg%3D","line":67,"updated":"2013-07-07 12:41:35.000000000","message":"ditto","commit_id":"39c7b4c1b92d027b327c7d6f6a9511397502b134"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"035a7689e6ec6598c150749a7a34fb244eac96a4","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        try:"},{"line_number":42,"context_line":"            instance \u003d self.compute_api.get(context, id)"},{"line_number":43,"context_line":"        except exception.InstanceNotFound as e:"},{"line_number":44,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":45,"context_line":"        try:"},{"line_number":46,"context_line":"            self.compute_api.restore(context, instance)"},{"line_number":47,"context_line":"        except exception.QuotaError as error:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2FuVw%3D","line":44,"updated":"2013-07-12 12:00:09.000000000","message":"exc is missing here. Might want to check why the test suite did not pick this up. Maybe need some tests to test this code path as well? Similar issue in force_delete as well","commit_id":"e13c542ff44bab91f7d68e8af294e5f016e0c09b"}]}
