)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"812d8eb7c6ff6539628ce03f000721fe52bb7565","unresolved":false,"context_lines":[{"line_number":12,"context_line":"A new policy field, \"volume:force_delete\" is added"},{"line_number":13,"context_line":"with the default of \"rule:admin_api\"."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements: blueprint volume-delete-parameters"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ic47cfcf1cc7d172d7f9d5b093233035f797982f5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7a77a97e_ae2319a6","line":15,"updated":"2016-11-17 11:56:53.000000000","message":"-1: Missing APIImpact flag","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4d90921b22138d4c14f4425080ecf664693ab08f","unresolved":false,"context_lines":[{"line_number":12,"context_line":"A new policy field, \"volume:force_delete\" is added"},{"line_number":13,"context_line":"with the default of \"rule:admin_api\"."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements: blueprint volume-delete-parameters"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ic47cfcf1cc7d172d7f9d5b093233035f797982f5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"ba5201f7_79fa10bf","line":15,"in_reply_to":"7a77a97e_ae2319a6","updated":"2017-01-03 17:20:42.000000000","message":"Done","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"}],"cinder/api/openstack/api_version_request.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"45e43a18443ce0473f2a39276a26419e44d24f83","unresolved":false,"context_lines":[{"line_number":78,"context_line":"# minimum version of the API supported."},{"line_number":79,"context_line":"# Explicitly using /v1 or /v2 enpoints will still work"},{"line_number":80,"context_line":"_MIN_API_VERSION \u003d \"3.0\""},{"line_number":81,"context_line":"_MAX_API_VERSION \u003d \"3.20\""},{"line_number":82,"context_line":"_LEGACY_API_VERSION1 \u003d \"1.0\""},{"line_number":83,"context_line":"_LEGACY_API_VERSION2 \u003d \"2.0\""},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5201f7_74b5ae2f","line":81,"updated":"2017-01-03 20:56:44.000000000","message":"Whoops, need to bump.","commit_id":"cb63b4a05a2dd81ec747d444fec23c604f806e2a"}],"cinder/api/v3/volumes.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"b4d5a28f195cfa7fd66f90d1bdee85efaba6eb25","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            volume \u003d self.volume_api.get(context, id)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"            if force:"},{"line_number":81,"context_line":"                check_policy(context, \u0027force_delete\u0027, volume)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"            self.volume_api.delete(context, volume,"},{"line_number":84,"context_line":"                                   cascade\u003dcascade,"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_b93142a4","line":81,"range":{"start_line":81,"start_character":14,"end_line":81,"end_character":61},"updated":"2016-11-04 01:40:01.000000000","message":"Hey Eric Harney, why does the check_policy action have something to do with volume, can we just check the policy before retrieve volume and with \u0027target\u0027 only contained \u0027project_id\u0027 and \u0027user_id\u0027?","commit_id":"9525475f053072a71cd7912dba83631220dbce6d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"aa66aa11c567584ff01d8a08d304252f9b47a7c8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            volume \u003d self.volume_api.get(context, id)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"            if force:"},{"line_number":81,"context_line":"                check_policy(context, \u0027force_delete\u0027, volume)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"            self.volume_api.delete(context, volume,"},{"line_number":84,"context_line":"                                   cascade\u003dcascade,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a77a97e_30006301","line":81,"range":{"start_line":81,"start_character":14,"end_line":81,"end_character":61},"in_reply_to":"ba5da102_b93142a4","updated":"2016-11-16 22:16:52.000000000","message":"I\u0027m not sure I understand the question.  volume is passed here because it\u0027s the object being operated on.  I think this is generally how we do policy checks?","commit_id":"9525475f053072a71cd7912dba83631220dbce6d"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"b4d5a28f195cfa7fd66f90d1bdee85efaba6eb25","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            self.volume_api.delete(context, volume,"},{"line_number":84,"context_line":"                                   cascade\u003dcascade,"},{"line_number":85,"context_line":"                                   force\u003dforce)"},{"line_number":86,"context_line":"        except exception.VolumeNotFound as error:"},{"line_number":87,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003derror.msg)"},{"line_number":88,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_b9d86254","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":49},"updated":"2016-11-04 01:40:01.000000000","message":"There is no need to catch this NotFound exception.","commit_id":"9525475f053072a71cd7912dba83631220dbce6d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"aa66aa11c567584ff01d8a08d304252f9b47a7c8","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            self.volume_api.delete(context, volume,"},{"line_number":84,"context_line":"                                   cascade\u003dcascade,"},{"line_number":85,"context_line":"                                   force\u003dforce)"},{"line_number":86,"context_line":"        except exception.VolumeNotFound as error:"},{"line_number":87,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003derror.msg)"},{"line_number":88,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a77a97e_1031a7ec","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":49},"in_reply_to":"ba5da102_b9d86254","updated":"2016-11-16 22:16:52.000000000","message":"Done","commit_id":"9525475f053072a71cd7912dba83631220dbce6d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"812d8eb7c6ff6539628ce03f000721fe52bb7565","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        force \u003d False"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        params \u003d \"\""},{"line_number":68,"context_line":"        if req_version.matches(None, \"3.16\"):"},{"line_number":69,"context_line":"            force \u003d utils.get_bool_param(\u0027force\u0027, req.params)"},{"line_number":70,"context_line":"            if cascade or force:"},{"line_number":71,"context_line":"                params \u003d \"(cascade: %(c)s, force: %(f)s)\" % {\u0027c\u0027: cascade,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a77a97e_e3e60a14","line":68,"range":{"start_line":68,"start_character":8,"end_line":68,"end_character":45},"updated":"2016-11-17 11:56:53.000000000","message":"-1: Min version should be 3.16, not max version.\n\n if req_version.matches(\u00273.16\u0027):","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4d90921b22138d4c14f4425080ecf664693ab08f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        force \u003d False"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        params \u003d \"\""},{"line_number":68,"context_line":"        if req_version.matches(None, \"3.16\"):"},{"line_number":69,"context_line":"            force \u003d utils.get_bool_param(\u0027force\u0027, req.params)"},{"line_number":70,"context_line":"            if cascade or force:"},{"line_number":71,"context_line":"                params \u003d \"(cascade: %(c)s, force: %(f)s)\" % {\u0027c\u0027: cascade,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_99f5f4cc","line":68,"range":{"start_line":68,"start_character":8,"end_line":68,"end_character":45},"in_reply_to":"7a77a97e_e3e60a14","updated":"2017-01-03 17:20:42.000000000","message":"Bleh.  \"matches\" is a really confusing name here.  Done.","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"812d8eb7c6ff6539628ce03f000721fe52bb7565","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        volume \u003d self.volume_api.get(context, id)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        if force:"},{"line_number":80,"context_line":"            check_policy(context, \u0027force_delete\u0027, volume)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        self.volume_api.delete(context, volume,"},{"line_number":83,"context_line":"                               cascade\u003dcascade,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a77a97e_03f14695","line":80,"range":{"start_line":79,"start_character":0,"end_line":80,"end_character":57},"updated":"2016-11-17 11:56:53.000000000","message":"nit: I think this hsould go before L77 as we should raise the policy error before we raise the not found error.","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e21b317885c8749000607d18da070ed322c25c31","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        volume \u003d self.volume_api.get(context, id)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        if force:"},{"line_number":80,"context_line":"            check_policy(context, \u0027force_delete\u0027, volume)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        self.volume_api.delete(context, volume,"},{"line_number":83,"context_line":"                               cascade\u003dcascade,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a77a97e_a5ea410d","line":80,"range":{"start_line":79,"start_character":0,"end_line":80,"end_character":57},"in_reply_to":"7a77a97e_03f14695","updated":"2016-11-17 18:36:15.000000000","message":"+1","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4d90921b22138d4c14f4425080ecf664693ab08f","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        volume \u003d self.volume_api.get(context, id)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        if force:"},{"line_number":80,"context_line":"            check_policy(context, \u0027force_delete\u0027, volume)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        self.volume_api.delete(context, volume,"},{"line_number":83,"context_line":"                               cascade\u003dcascade,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_1930249e","line":80,"range":{"start_line":79,"start_character":0,"end_line":80,"end_character":57},"in_reply_to":"7a77a97e_a5ea410d","updated":"2017-01-03 17:20:42.000000000","message":"Done","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"52cd7bed9ac1d8e4cd95a59573a9e3fab8e59a28","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"SUMMARY_BASE_MICRO_VERSION \u003d \u00273.12\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def check_policy(context, action, target_obj\u003dNone):"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba5201f7_8670fedd","line":36,"updated":"2017-01-04 18:56:20.000000000","message":"This is duplicated from line 32.","commit_id":"508293cde262b0fc8ece57fdeca9a05ebed64219"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e3c4066f0ba82ebfc300db9b52ca71b3aec412d8","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"SUMMARY_BASE_MICRO_VERSION \u003d \u00273.12\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def check_policy(context, action, target_obj\u003dNone):"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba5201f7_a9431541","line":36,"in_reply_to":"ba5201f7_8670fedd","updated":"2017-01-04 19:04:48.000000000","message":"Done","commit_id":"508293cde262b0fc8ece57fdeca9a05ebed64219"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"812d8eb7c6ff6539628ce03f000721fe52bb7565","unresolved":false,"context_lines":[{"line_number":2267,"context_line":"def volume_has_snapshots_in_a_cgsnapshot_filter():"},{"line_number":2268,"context_line":"    return sql.exists().where("},{"line_number":2269,"context_line":"        and_(models.Volume.id \u003d\u003d models.Snapshot.volume_id,"},{"line_number":2270,"context_line":"             models.Snapshot.cgsnapshot_id !\u003d None))     # noqa: !\u003d None"},{"line_number":2271,"context_line":""},{"line_number":2272,"context_line":""},{"line_number":2273,"context_line":"def volume_has_attachments_filter():"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a77a97e_eeaef1e4","line":2270,"updated":"2016-11-17 11:56:53.000000000","message":"-1: We should avoid the \"# noqa\" when possible:\n\n models.Snapshot.cgsnapshot_id.isnot(None)))","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4d90921b22138d4c14f4425080ecf664693ab08f","unresolved":false,"context_lines":[{"line_number":2267,"context_line":"def volume_has_snapshots_in_a_cgsnapshot_filter():"},{"line_number":2268,"context_line":"    return sql.exists().where("},{"line_number":2269,"context_line":"        and_(models.Volume.id \u003d\u003d models.Snapshot.volume_id,"},{"line_number":2270,"context_line":"             models.Snapshot.cgsnapshot_id !\u003d None))     # noqa: !\u003d None"},{"line_number":2271,"context_line":""},{"line_number":2272,"context_line":""},{"line_number":2273,"context_line":"def volume_has_attachments_filter():"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_19d74424","line":2270,"in_reply_to":"7a77a97e_eeaef1e4","updated":"2017-01-03 17:20:42.000000000","message":"Done","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"}],"cinder/tests/unit/test_volume.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"812d8eb7c6ff6539628ce03f000721fe52bb7565","unresolved":false,"context_lines":[{"line_number":4312,"context_line":""},{"line_number":4313,"context_line":"    def test_cascade_force_delete_volume_with_snapshots_error(self):"},{"line_number":4314,"context_line":"        \"\"\"Test volume force deletion with errored dependent snapshots.\"\"\""},{"line_number":4315,"context_line":"        volume \u003d tests_utils.create_volume(self.context, **self.volume_params)"},{"line_number":4316,"context_line":"        self.volume.create_volume(self.context, volume)"},{"line_number":4317,"context_line":"        snapshot \u003d create_snapshot(volume[\u0027id\u0027], size\u003dvolume[\u0027size\u0027])"},{"line_number":4318,"context_line":"        self.volume.create_snapshot(self.context, snapshot)"},{"line_number":4319,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":9,"id":"7a77a97e_ae01596c","line":4316,"range":{"start_line":4315,"start_character":0,"end_line":4316,"end_character":55},"updated":"2016-11-17 11:56:53.000000000","message":"?: Why are we doing this everywhere?  Am I missing something or wouldn\u0027t it be easier and clearer to just do this?\n\n volume \u003d tests_utils.create_volume(self.context, host\u003d\u0027fakehost\u0027)","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4d90921b22138d4c14f4425080ecf664693ab08f","unresolved":false,"context_lines":[{"line_number":4312,"context_line":""},{"line_number":4313,"context_line":"    def test_cascade_force_delete_volume_with_snapshots_error(self):"},{"line_number":4314,"context_line":"        \"\"\"Test volume force deletion with errored dependent snapshots.\"\"\""},{"line_number":4315,"context_line":"        volume \u003d tests_utils.create_volume(self.context, **self.volume_params)"},{"line_number":4316,"context_line":"        self.volume.create_volume(self.context, volume)"},{"line_number":4317,"context_line":"        snapshot \u003d create_snapshot(volume[\u0027id\u0027], size\u003dvolume[\u0027size\u0027])"},{"line_number":4318,"context_line":"        self.volume.create_snapshot(self.context, snapshot)"},{"line_number":4319,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_941cd914","line":4316,"range":{"start_line":4315,"start_character":0,"end_line":4316,"end_character":55},"in_reply_to":"7a77a97e_ae01596c","updated":"2017-01-03 17:20:42.000000000","message":"Done","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"812d8eb7c6ff6539628ce03f000721fe52bb7565","unresolved":false,"context_lines":[{"line_number":4314,"context_line":"        \"\"\"Test volume force deletion with errored dependent snapshots.\"\"\""},{"line_number":4315,"context_line":"        volume \u003d tests_utils.create_volume(self.context, **self.volume_params)"},{"line_number":4316,"context_line":"        self.volume.create_volume(self.context, volume)"},{"line_number":4317,"context_line":"        snapshot \u003d create_snapshot(volume[\u0027id\u0027], size\u003dvolume[\u0027size\u0027])"},{"line_number":4318,"context_line":"        self.volume.create_snapshot(self.context, snapshot)"},{"line_number":4319,"context_line":"        self.assertEqual("},{"line_number":4320,"context_line":"            snapshot.id, objects.Snapshot.get_by_id(self.context,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a77a97e_6e1901d7","line":4317,"updated":"2016-11-17 11:56:53.000000000","message":"-1: Volume is an OVO instance, we must use attribute notation to access it (volume.id and volume.size)","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4d90921b22138d4c14f4425080ecf664693ab08f","unresolved":false,"context_lines":[{"line_number":4314,"context_line":"        \"\"\"Test volume force deletion with errored dependent snapshots.\"\"\""},{"line_number":4315,"context_line":"        volume \u003d tests_utils.create_volume(self.context, **self.volume_params)"},{"line_number":4316,"context_line":"        self.volume.create_volume(self.context, volume)"},{"line_number":4317,"context_line":"        snapshot \u003d create_snapshot(volume[\u0027id\u0027], size\u003dvolume[\u0027size\u0027])"},{"line_number":4318,"context_line":"        self.volume.create_snapshot(self.context, snapshot)"},{"line_number":4319,"context_line":"        self.assertEqual("},{"line_number":4320,"context_line":"            snapshot.id, objects.Snapshot.get_by_id(self.context,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_b41b9d1a","line":4317,"in_reply_to":"7a77a97e_6e1901d7","updated":"2017-01-03 17:20:42.000000000","message":"Done","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"812d8eb7c6ff6539628ce03f000721fe52bb7565","unresolved":false,"context_lines":[{"line_number":4316,"context_line":"        self.volume.create_volume(self.context, volume)"},{"line_number":4317,"context_line":"        snapshot \u003d create_snapshot(volume[\u0027id\u0027], size\u003dvolume[\u0027size\u0027])"},{"line_number":4318,"context_line":"        self.volume.create_snapshot(self.context, snapshot)"},{"line_number":4319,"context_line":"        self.assertEqual("},{"line_number":4320,"context_line":"            snapshot.id, objects.Snapshot.get_by_id(self.context,"},{"line_number":4321,"context_line":"                                                    snapshot.id).id)"},{"line_number":4322,"context_line":""},{"line_number":4323,"context_line":"        snapshot.update({\u0027status\u0027: fields.SnapshotStatus.ERROR_DELETING})"},{"line_number":4324,"context_line":"        snapshot.save()"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a77a97e_0e4dedc3","line":4321,"range":{"start_line":4319,"start_character":1,"end_line":4321,"end_character":68},"updated":"2016-11-17 11:56:53.000000000","message":"-1: The create_snapshot method is not under test here, we don\u0027t need this.","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4d90921b22138d4c14f4425080ecf664693ab08f","unresolved":false,"context_lines":[{"line_number":4316,"context_line":"        self.volume.create_volume(self.context, volume)"},{"line_number":4317,"context_line":"        snapshot \u003d create_snapshot(volume[\u0027id\u0027], size\u003dvolume[\u0027size\u0027])"},{"line_number":4318,"context_line":"        self.volume.create_snapshot(self.context, snapshot)"},{"line_number":4319,"context_line":"        self.assertEqual("},{"line_number":4320,"context_line":"            snapshot.id, objects.Snapshot.get_by_id(self.context,"},{"line_number":4321,"context_line":"                                                    snapshot.id).id)"},{"line_number":4322,"context_line":""},{"line_number":4323,"context_line":"        snapshot.update({\u0027status\u0027: fields.SnapshotStatus.ERROR_DELETING})"},{"line_number":4324,"context_line":"        snapshot.save()"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_d41661f0","line":4321,"range":{"start_line":4319,"start_character":1,"end_line":4321,"end_character":68},"in_reply_to":"7a77a97e_0e4dedc3","updated":"2017-01-03 17:20:42.000000000","message":"Done","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"812d8eb7c6ff6539628ce03f000721fe52bb7565","unresolved":false,"context_lines":[{"line_number":4320,"context_line":"            snapshot.id, objects.Snapshot.get_by_id(self.context,"},{"line_number":4321,"context_line":"                                                    snapshot.id).id)"},{"line_number":4322,"context_line":""},{"line_number":4323,"context_line":"        snapshot.update({\u0027status\u0027: fields.SnapshotStatus.ERROR_DELETING})"},{"line_number":4324,"context_line":"        snapshot.save()"},{"line_number":4325,"context_line":""},{"line_number":4326,"context_line":"        volume[\u0027status\u0027] \u003d \u0027available\u0027"},{"line_number":4327,"context_line":"        volume[\u0027host\u0027] \u003d \u0027fakehost\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a77a97e_0efb2d48","line":4324,"range":{"start_line":4323,"start_character":0,"end_line":4324,"end_character":23},"updated":"2016-11-17 11:56:53.000000000","message":"-1: Why aren\u0027t we just creating the snapshot with that status from the start?\n\n snapshot \u003d test_utils.create_snapshot(\n     self.context, \n     volume.id,\n     status\u003dfields.SnapshotStatus.ERROR_DELETING)","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4d90921b22138d4c14f4425080ecf664693ab08f","unresolved":false,"context_lines":[{"line_number":4320,"context_line":"            snapshot.id, objects.Snapshot.get_by_id(self.context,"},{"line_number":4321,"context_line":"                                                    snapshot.id).id)"},{"line_number":4322,"context_line":""},{"line_number":4323,"context_line":"        snapshot.update({\u0027status\u0027: fields.SnapshotStatus.ERROR_DELETING})"},{"line_number":4324,"context_line":"        snapshot.save()"},{"line_number":4325,"context_line":""},{"line_number":4326,"context_line":"        volume[\u0027status\u0027] \u003d \u0027available\u0027"},{"line_number":4327,"context_line":"        volume[\u0027host\u0027] \u003d \u0027fakehost\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_f4d36536","line":4324,"range":{"start_line":4323,"start_character":0,"end_line":4324,"end_character":23},"in_reply_to":"7a77a97e_0efb2d48","updated":"2017-01-03 17:20:42.000000000","message":"Done","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"812d8eb7c6ff6539628ce03f000721fe52bb7565","unresolved":false,"context_lines":[{"line_number":4323,"context_line":"        snapshot.update({\u0027status\u0027: fields.SnapshotStatus.ERROR_DELETING})"},{"line_number":4324,"context_line":"        snapshot.save()"},{"line_number":4325,"context_line":""},{"line_number":4326,"context_line":"        volume[\u0027status\u0027] \u003d \u0027available\u0027"},{"line_number":4327,"context_line":"        volume[\u0027host\u0027] \u003d \u0027fakehost\u0027"},{"line_number":4328,"context_line":""},{"line_number":4329,"context_line":"        volume_api \u003d cinder.volume.api.API()"},{"line_number":4330,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7a77a97e_ee5d1148","line":4327,"range":{"start_line":4326,"start_character":0,"end_line":4327,"end_character":35},"updated":"2016-11-17 11:56:53.000000000","message":"-1: With the proposed change for L4316 this is unnecessary.","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4d90921b22138d4c14f4425080ecf664693ab08f","unresolved":false,"context_lines":[{"line_number":4323,"context_line":"        snapshot.update({\u0027status\u0027: fields.SnapshotStatus.ERROR_DELETING})"},{"line_number":4324,"context_line":"        snapshot.save()"},{"line_number":4325,"context_line":""},{"line_number":4326,"context_line":"        volume[\u0027status\u0027] \u003d \u0027available\u0027"},{"line_number":4327,"context_line":"        volume[\u0027host\u0027] \u003d \u0027fakehost\u0027"},{"line_number":4328,"context_line":""},{"line_number":4329,"context_line":"        volume_api \u003d cinder.volume.api.API()"},{"line_number":4330,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_14d70924","line":4327,"range":{"start_line":4326,"start_character":0,"end_line":4327,"end_character":35},"in_reply_to":"7a77a97e_ee5d1148","updated":"2017-01-03 17:20:42.000000000","message":"Done","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"812d8eb7c6ff6539628ce03f000721fe52bb7565","unresolved":false,"context_lines":[{"line_number":4328,"context_line":""},{"line_number":4329,"context_line":"        volume_api \u003d cinder.volume.api.API()"},{"line_number":4330,"context_line":""},{"line_number":4331,"context_line":"        volume_api.delete(self.context, volume, cascade\u003dTrue, force\u003dTrue)"},{"line_number":4332,"context_line":""},{"line_number":4333,"context_line":"    @mock.patch.object(fake_driver.FakeLoggingVolumeDriver, \u0027get_volume_stats\u0027)"},{"line_number":4334,"context_line":"    @mock.patch.object(driver.BaseVD, \u0027_init_vendor_properties\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a77a97e_4e1a857e","line":4331,"updated":"2016-11-17 11:56:53.000000000","message":"-1: We should check that it has actually been deleted","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4d90921b22138d4c14f4425080ecf664693ab08f","unresolved":false,"context_lines":[{"line_number":4328,"context_line":""},{"line_number":4329,"context_line":"        volume_api \u003d cinder.volume.api.API()"},{"line_number":4330,"context_line":""},{"line_number":4331,"context_line":"        volume_api.delete(self.context, volume, cascade\u003dTrue, force\u003dTrue)"},{"line_number":4332,"context_line":""},{"line_number":4333,"context_line":"    @mock.patch.object(fake_driver.FakeLoggingVolumeDriver, \u0027get_volume_stats\u0027)"},{"line_number":4334,"context_line":"    @mock.patch.object(driver.BaseVD, \u0027_init_vendor_properties\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_542a712d","line":4331,"in_reply_to":"7a77a97e_4e1a857e","updated":"2017-01-03 17:20:42.000000000","message":"Done","commit_id":"9d21b50213bbbf40c9c8ada5a85c84550a158ad1"}],"cinder/volume/api.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"09bde1c1f42a3a54ee9be560651c3930d26df16f","unresolved":false,"context_lines":[{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        if cascade:"},{"line_number":404,"context_line":"            values \u003d {\u0027status\u0027: \u0027deleting\u0027}"},{"line_number":405,"context_line":"            expected \u003d {\u0027status\u0027: (\u0027available\u0027, \u0027error\u0027, \u0027deleting\u0027),"},{"line_number":406,"context_line":"                        \u0027cgsnapshot_id\u0027: None}"},{"line_number":407,"context_line":"            snapshots \u003d objects.snapshot.SnapshotList.get_all_for_volume("},{"line_number":408,"context_line":"                context, volume.id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_7a74e535","line":405,"updated":"2016-07-13 19:02:04.000000000","message":"Not correct in force case.","commit_id":"b387001b688898115b2e738e65e545551daedc82"}],"releasenotes/notes/delete_parameters-6f44fece22a7787d.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"52cd7bed9ac1d8e4cd95a59573a9e3fab8e59a28","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - The ``force``boolean parameter has been added to the volume"},{"line_number":4,"context_line":"    delete API.  It may be used in combination with ``cascade``."},{"line_number":5,"context_line":"    This also means that volume force delete is available"},{"line_number":6,"context_line":"    in the base volume API rather than only in the"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"ba5201f7_86471e76","line":3,"range":{"start_line":3,"start_character":16,"end_line":3,"end_character":18},"updated":"2017-01-04 18:56:20.000000000","message":"Need space between ` and b","commit_id":"508293cde262b0fc8ece57fdeca9a05ebed64219"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e3c4066f0ba82ebfc300db9b52ca71b3aec412d8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - The ``force``boolean parameter has been added to the volume"},{"line_number":4,"context_line":"    delete API.  It may be used in combination with ``cascade``."},{"line_number":5,"context_line":"    This also means that volume force delete is available"},{"line_number":6,"context_line":"    in the base volume API rather than only in the"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"ba5201f7_e9499d61","line":3,"range":{"start_line":3,"start_character":16,"end_line":3,"end_character":18},"in_reply_to":"ba5201f7_86471e76","updated":"2017-01-04 19:04:48.000000000","message":"Done","commit_id":"508293cde262b0fc8ece57fdeca9a05ebed64219"}]}
