)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fd6313084ecac147ba1183826313051c5f56c0f2","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Nova can fail immediately to let user know that it\u0027s not"},{"line_number":11,"context_line":"supported in that release."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The problem is fixed in Idbd11ec0f3d65d2a23d601ee4cbb89e29e6ea964"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Partial-Bug: #1313573"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa963961_b820e64a","line":13,"updated":"2015-03-26 17:37:44.000000000","message":"I\u0027d rather not speak definitively about a fix that isn\u0027t committed yet. Can we just snip this out? I don\u0027t think it adds much anyway.","commit_id":"9add3a95fa8672ab530de15527d30026a746ddb4"}],"nova/api/openstack/compute/contrib/admin_actions.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fd6313084ecac147ba1183826313051c5f56c0f2","unresolved":false,"context_lines":[{"line_number":290,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":291,"context_line":"                    \u0027createBackup\u0027, id)"},{"line_number":292,"context_line":"        except exception.InvalidRequest:"},{"line_number":293,"context_line":"            msg \u003d _(\"It\u0027s not supported to backup volume-backed instance.\")"},{"line_number":294,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"        resp \u003d webob.Response(status_int\u003d202)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa963961_18bfd2d1","line":293,"updated":"2015-03-26 17:37:44.000000000","message":"This breaks string freeze, right? Shouldn\u0027t we just pick some generic \"Not supported\" string from the existing catalog?","commit_id":"9add3a95fa8672ab530de15527d30026a746ddb4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"db5752733abc28cceda288ea8cc5a648a31a5cf3","unresolved":false,"context_lines":[{"line_number":290,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":291,"context_line":"                    \u0027createBackup\u0027, id)"},{"line_number":292,"context_line":"        except exception.InvalidRequest:"},{"line_number":293,"context_line":"            msg \u003d _(\"It\u0027s not supported to backup volume-backed instance.\")"},{"line_number":294,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"        resp \u003d webob.Response(status_int\u003d202)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa963961_6a46f9c0","line":293,"in_reply_to":"fa963961_18bfd2d1","updated":"2015-03-26 21:52:32.000000000","message":"Just use this:\n\nexcept exception.InvalidRequest as ex:\n    raise exc.HTTPBadRequest(explanation\u003dex.format_message())","commit_id":"9add3a95fa8672ab530de15527d30026a746ddb4"}],"nova/api/openstack/compute/plugins/v3/create_backup.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fd6313084ecac147ba1183826313051c5f56c0f2","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":72,"context_line":"                    \u0027createBackup\u0027, id)"},{"line_number":73,"context_line":"        except exception.InvalidRequest:"},{"line_number":74,"context_line":"            msg \u003d _(\"It\u0027s not supported to backup volume-backed instance.\")"},{"line_number":75,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        resp \u003d webob.Response(status_int\u003d202)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa963961_b8cea681","line":74,"updated":"2015-03-26 17:37:44.000000000","message":"Same.","commit_id":"9add3a95fa8672ab530de15527d30026a746ddb4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"db5752733abc28cceda288ea8cc5a648a31a5cf3","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":72,"context_line":"                    \u0027createBackup\u0027, id)"},{"line_number":73,"context_line":"        except exception.InvalidRequest:"},{"line_number":74,"context_line":"            msg \u003d _(\"It\u0027s not supported to backup volume-backed instance.\")"},{"line_number":75,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        resp \u003d webob.Response(status_int\u003d202)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa963961_2a17d1a4","line":74,"in_reply_to":"fa963961_b8cea681","updated":"2015-03-26 21:52:32.000000000","message":"ditto","commit_id":"9add3a95fa8672ab530de15527d30026a746ddb4"}],"nova/compute/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f6cf300fc9e37bcff94ba2c219c7b9207832f233","unresolved":false,"context_lines":[{"line_number":2121,"context_line":"        \"\"\""},{"line_number":2122,"context_line":"        props_copy \u003d dict(extra_properties, backup_type\u003dbackup_type)"},{"line_number":2123,"context_line":""},{"line_number":2124,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":2125,"context_line":"            context, instance.uuid)"},{"line_number":2126,"context_line":""},{"line_number":2127,"context_line":"        if self.is_volume_backed_instance(context, instance, bdms):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6ced46_b9a59548","line":2124,"updated":"2015-03-25 18:27:11.000000000","message":"nit: you technically don\u0027t need this here since is_volume_backed_instance will get them for you if not provided, which makes this change a bit cleaner IMO.","commit_id":"7b5add6b1574f0332327df86de636b18f1973d96"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f6cf300fc9e37bcff94ba2c219c7b9207832f233","unresolved":false,"context_lines":[{"line_number":2125,"context_line":"            context, instance.uuid)"},{"line_number":2126,"context_line":""},{"line_number":2127,"context_line":"        if self.is_volume_backed_instance(context, instance, bdms):"},{"line_number":2128,"context_line":"            raise exception.InvalidRequest()"},{"line_number":2129,"context_line":"        else:"},{"line_number":2130,"context_line":"            image_meta \u003d self._create_image(context, instance,"},{"line_number":2131,"context_line":"                                            name, \u0027backup\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6ced46_99045919","line":2128,"updated":"2015-03-25 18:27:11.000000000","message":"Since this doesn\u0027t provide much information:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/exception.py#n285\n\nI would log an INFO level message before raising the exception that explains that backing up a volume-backed instance isn\u0027t supported.\n\nYou also need to handle the error in the API extension to translate it to a 400 response:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/api/openstack/compute/contrib/admin_actions.py#n286\n\nv2.1 API should already translate and handle the 400:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/api/openstack/compute/plugins/v3/create_backup.py#n37","commit_id":"7b5add6b1574f0332327df86de636b18f1973d96"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fd6313084ecac147ba1183826313051c5f56c0f2","unresolved":false,"context_lines":[{"line_number":2123,"context_line":""},{"line_number":2124,"context_line":"        if self.is_volume_backed_instance(context, instance):"},{"line_number":2125,"context_line":"            LOG.info(_LI(\"It\u0027s not supported to backup \""},{"line_number":2126,"context_line":"                         \"volume-backed instance.\"),"},{"line_number":2127,"context_line":"                     context\u003dcontext, instance\u003dinstance)"},{"line_number":2128,"context_line":"            raise exception.InvalidRequest()"},{"line_number":2129,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa963961_188d9231","line":2126,"updated":"2015-03-26 17:37:44.000000000","message":"Same thing here.","commit_id":"9add3a95fa8672ab530de15527d30026a746ddb4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"db5752733abc28cceda288ea8cc5a648a31a5cf3","unresolved":false,"context_lines":[{"line_number":2123,"context_line":""},{"line_number":2124,"context_line":"        if self.is_volume_backed_instance(context, instance):"},{"line_number":2125,"context_line":"            LOG.info(_LI(\"It\u0027s not supported to backup \""},{"line_number":2126,"context_line":"                         \"volume-backed instance.\"),"},{"line_number":2127,"context_line":"                     context\u003dcontext, instance\u003dinstance)"},{"line_number":2128,"context_line":"            raise exception.InvalidRequest()"},{"line_number":2129,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa963961_4a79f5fb","line":2126,"in_reply_to":"fa963961_188d9231","updated":"2015-03-26 21:52:32.000000000","message":"Yeah use debug level for now since that doesn\u0027t need to be translated, unless you can find something that already exists today that\u0027s translated and would make sense here, but it\u0027s probably not worth the search at this point.  You could add a TODO to make it INFO level after string freeze (liberty).","commit_id":"9add3a95fa8672ab530de15527d30026a746ddb4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4bd5a01c21eeec618114830d182791932fb7caa","unresolved":false,"context_lines":[{"line_number":2124,"context_line":"        if self.is_volume_backed_instance(context, instance):"},{"line_number":2125,"context_line":"            # TODO(flwang): The log level will be changed to INFO after"},{"line_number":2126,"context_line":"            # string freeze (Liberty)."},{"line_number":2127,"context_line":"            LOG.debug(_LI(\"It\u0027s not supported to backup \""},{"line_number":2128,"context_line":"                          \"volume backed instance.\"),"},{"line_number":2129,"context_line":"                      context\u003dcontext, instance\u003dinstance)"},{"line_number":2130,"context_line":"            raise exception.InvalidRequest()"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa963961_72c5b68c","line":2127,"updated":"2015-03-27 15:42:56.000000000","message":"Jenkins should have puked on this.  We don\u0027t translate debug log messages, so remove the _LI() usage.","commit_id":"dde2c1710daf23a7ed43f3ea5ca319baf9c6808b"}],"nova/tests/unit/api/openstack/compute/contrib/test_create_backup.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fd6313084ecac147ba1183826313051c5f56c0f2","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        self.compute_api.backup(self.context, instance, \u0027BackupMe\u0027, \u0027daily\u0027, 3,"},{"line_number":289,"context_line":"                extra_properties\u003d{}).AndRaise(exception.InvalidRequest())"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        self.mox.ReplayAll()"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        self.assertRaises(webob.exc.HTTPBadRequest,"},{"line_number":294,"context_line":"                          self.controller._create_backup,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa963961_38b616dd","line":291,"updated":"2015-03-26 17:37:44.000000000","message":"Can you write this with mock instead of mox? It\u0027s trivial to do...","commit_id":"9add3a95fa8672ab530de15527d30026a746ddb4"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f6cf300fc9e37bcff94ba2c219c7b9207832f233","unresolved":false,"context_lines":[{"line_number":1908,"context_line":"        bdms \u003d objects.BlockDeviceMappingList(objects\u003d[bdm])"},{"line_number":1909,"context_line":""},{"line_number":1910,"context_line":"        with contextlib.nested("},{"line_number":1911,"context_line":"            mock.patch.object(objects.BlockDeviceMappingList,"},{"line_number":1912,"context_line":"                              \u0027get_by_instance_uuid\u0027, return_value\u003dbdms),"},{"line_number":1913,"context_line":"            mock.patch.object(self.compute_api, \u0027is_volume_backed_instance\u0027,"},{"line_number":1914,"context_line":"                              return_value\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6ced46_f4d71449","line":1911,"updated":"2015-03-25 18:27:11.000000000","message":"I\u0027d remove this from the code so that you only have to mock compute_api.is_volume_backed_instance, it would make the test quick a bit smaller.","commit_id":"7b5add6b1574f0332327df86de636b18f1973d96"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fd6313084ecac147ba1183826313051c5f56c0f2","unresolved":false,"context_lines":[{"line_number":1747,"context_line":"                                     \u0027is_volume_backed_instance\u0027)"},{"line_number":1748,"context_line":""},{"line_number":1749,"context_line":"            self.compute_api.is_volume_backed_instance(self.context,"},{"line_number":1750,"context_line":"            instance).AndReturn(False)"},{"line_number":1751,"context_line":""},{"line_number":1752,"context_line":"        image_type \u003d is_snapshot and \u0027snapshot\u0027 or \u0027backup\u0027"},{"line_number":1753,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa963961_3804d67c","line":1750,"range":{"start_line":1750,"start_character":12,"end_line":1750,"end_character":21},"updated":"2015-03-26 17:37:44.000000000","message":"This needs to be indented.","commit_id":"9add3a95fa8672ab530de15527d30026a746ddb4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fd6313084ecac147ba1183826313051c5f56c0f2","unresolved":false,"context_lines":[{"line_number":1895,"context_line":"    def test_backup_volume_backed_instance(self):"},{"line_number":1896,"context_line":"        instance \u003d self._create_instance_obj()"},{"line_number":1897,"context_line":""},{"line_number":1898,"context_line":"        with contextlib.nested("},{"line_number":1899,"context_line":"            mock.patch.object(self.compute_api, \u0027is_volume_backed_instance\u0027,"},{"line_number":1900,"context_line":"                              return_value\u003dTrue),"},{"line_number":1901,"context_line":"        ) as ("}],"source_content_type":"text/x-python","patch_set":3,"id":"fa963961_b8ca264e","line":1898,"updated":"2015-03-26 17:37:44.000000000","message":"You don\u0027t need .nested for just a single mock.","commit_id":"9add3a95fa8672ab530de15527d30026a746ddb4"}]}
