)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"752fba184f4070a24a6183afbbda6e06529c5457","unresolved":false,"context_lines":[{"line_number":25,"context_line":"for something and they are really really sure they want to"},{"line_number":26,"context_line":"continue doing so, we also add a config option to allow the"},{"line_number":27,"context_line":"old behavior but default to NOT allowing it:"},{"line_number":28,"context_line":"  \u0027allow_inuse_type_modification\u003dFalse\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Change-Id: Iaea721e13a3903cae60cc3fb3acfad03bd173a6b"},{"line_number":31,"context_line":"Closes-Bug: #1667071"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba2be162_3ec3e1ee","line":28,"updated":"2017-03-02 17:00:43.000000000","message":"If we change current behavior,  should we add APIImpact flag?","commit_id":"74807bc710df30a97c78c7a080e438bd537ee776"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"639864a269dce54facd04e0e236103e535b0fddf","unresolved":false,"context_lines":[{"line_number":21,"context_line":"the type being modified/deleted the operation will fail with an"},{"line_number":22,"context_line":"InvalidRequest immediately when attempting the call."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"To maintain backward compatability incase someobdy is using this"},{"line_number":25,"context_line":"for something and they are really really sure they want to"},{"line_number":26,"context_line":"continue doing so, we also add a config option to allow the"},{"line_number":27,"context_line":"old behavior but default to NOT allowing it:"},{"line_number":28,"context_line":"  \u0027allow_inuse_type_modification\u003dFalse\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba2be162_e9126a56","line":27,"range":{"start_line":24,"start_character":0,"end_line":27,"end_character":44},"updated":"2017-03-02 20:58:04.000000000","message":"I think this still merits a microversion bump, even if this is off by default.","commit_id":"23999c4a79e63a0cdaa15fc39541bc14b382582a"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"6ccfe46ad50dbed659ee6fbf84b3a1da008f976c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"the type being modified/deleted the operation will fail with an"},{"line_number":22,"context_line":"InvalidRequest immediately when attempting the call."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"To maintain backward compatability incase someobdy is using this"},{"line_number":25,"context_line":"for something and they are really really sure they want to"},{"line_number":26,"context_line":"continue doing so, we also add a config option to allow the"},{"line_number":27,"context_line":"old behavior but default to NOT allowing it:"},{"line_number":28,"context_line":"  \u0027allow_inuse_type_modification\u003dFalse\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba2be162_4d47ff4a","line":27,"range":{"start_line":24,"start_character":0,"end_line":27,"end_character":44},"in_reply_to":"ba2be162_e9126a56","updated":"2017-03-02 22:24:13.000000000","message":"TBC I\u0027m setting it to OFF by default.  It\u0027s not a change in the API signature or response (well kinda). I see your point but frankly this is part of why mv\u0027s suck!  We bump for everything and anything and it welcomes silly changes (this change isn\u0027t silly though, it\u0027s a valid bug :))\n\nI disagree on the mv thing, also since this is an extension it\u0027s sort of still free-range, organic non-HGMO API command, let\u0027s not poison our users just yet.  :)","commit_id":"23999c4a79e63a0cdaa15fc39541bc14b382582a"}],"cinder/api/contrib/types_extra_specs.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"752fba184f4070a24a6183afbbda6e06529c5457","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        vols \u003d db.volume_get_all("},{"line_number":71,"context_line":"            ctxt.get_admin_context(),"},{"line_number":72,"context_line":"            filters\u003d{\u0027volume_type_id\u0027: type_id})"},{"line_number":73,"context_line":"        if len(vols) \u003e 0:"},{"line_number":74,"context_line":"            return True"},{"line_number":75,"context_line":"        return False"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_7e01d969","line":73,"updated":"2017-03-02 17:00:43.000000000","message":"nit: could be simplified to:\nif len(vols):","commit_id":"74807bc710df30a97c78c7a080e438bd537ee776"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"7fa3f3872638b068673a86119ff6bdd345c472cc","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    def create(self, req, type_id, body\u003dNone):"},{"line_number":78,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":79,"context_line":"        authorize(context)"},{"line_number":80,"context_line":"        if (self._type_is_in_use(context, type_id) and not"},{"line_number":81,"context_line":"                CONF.allow_inuse_type_modification):"},{"line_number":82,"context_line":"            expl \u003d _(\u0027Volume Type is currently in use.\u0027)"},{"line_number":83,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_de180521","line":81,"range":{"start_line":80,"start_character":12,"end_line":81,"end_character":50},"updated":"2017-03-02 16:55:41.000000000","message":"Might want to reverse these checks. Why go to the database if you\u0027re going to okay this anyway?","commit_id":"74807bc710df30a97c78c7a080e438bd537ee776"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"752fba184f4070a24a6183afbbda6e06529c5457","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":147,"context_line":"        self._check_type(context, type_id)"},{"line_number":148,"context_line":"        authorize(context)"},{"line_number":149,"context_line":"        if (self._type_is_in_use(context, type_id) and not"},{"line_number":150,"context_line":"                CONF.allow_inuse_type_modification):"},{"line_number":151,"context_line":"            expl \u003d _(\u0027Volume Type is currently in use.\u0027)"},{"line_number":152,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_5ecfb528","line":149,"updated":"2017-03-02 17:00:43.000000000","message":"Please, move this 3 lines to some method to not duplicate the code","commit_id":"74807bc710df30a97c78c7a080e438bd537ee776"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"b53657fc702aff127a32685a3e57192d4188f662","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from cinder.volume import volume_types"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"extraspec_opts \u003d ["},{"line_number":34,"context_line":"    cfg.BoolOpt(\u0027allow_inuse_type_modification\u0027,"},{"line_number":35,"context_line":"                default\u003dFalse,"},{"line_number":36,"context_line":"                help\u003d\"Allow the ability to modify the \""},{"line_number":37,"context_line":"                     \"extra-spec settings of an in-use \""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba2be162_39c4c95d","line":34,"updated":"2017-03-03 00:23:42.000000000","message":"@xing, can group type share the same config option as volume type?  There isn\u0027t much point to create two separate config for similar purpose, IMHO.","commit_id":"23999c4a79e63a0cdaa15fc39541bc14b382582a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab30204015a6b2b013bd56197ac1b1169e670801","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from cinder.volume import volume_types"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"extraspec_opts \u003d ["},{"line_number":34,"context_line":"    cfg.BoolOpt(\u0027allow_inuse_type_modification\u0027,"},{"line_number":35,"context_line":"                default\u003dFalse,"},{"line_number":36,"context_line":"                help\u003d\"Allow the ability to modify the \""},{"line_number":37,"context_line":"                     \"extra-spec settings of an in-use \""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba2be162_89072e17","line":34,"range":{"start_line":34,"start_character":29,"end_line":34,"end_character":33},"updated":"2017-03-02 20:59:11.000000000","message":"Can you change this to volume_type as we\u0027ll need a similar option for the group_type?","commit_id":"23999c4a79e63a0cdaa15fc39541bc14b382582a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"170d249d1d4990bafec5ce8024353e31887047fa","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from cinder.volume import volume_types"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"extraspec_opts \u003d ["},{"line_number":34,"context_line":"    cfg.BoolOpt(\u0027allow_inuse_type_modification\u0027,"},{"line_number":35,"context_line":"                default\u003dFalse,"},{"line_number":36,"context_line":"                help\u003d\"Allow the ability to modify the \""},{"line_number":37,"context_line":"                     \"extra-spec settings of an in-use \""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba2be162_c71e635e","line":34,"in_reply_to":"ba2be162_39c4c95d","updated":"2017-03-03 02:58:50.000000000","message":"That\u0027s certainly possible, but it is a little more flexible to keep them separate.","commit_id":"23999c4a79e63a0cdaa15fc39541bc14b382582a"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"6ccfe46ad50dbed659ee6fbf84b3a1da008f976c","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from cinder.volume import volume_types"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"extraspec_opts \u003d ["},{"line_number":34,"context_line":"    cfg.BoolOpt(\u0027allow_inuse_type_modification\u0027,"},{"line_number":35,"context_line":"                default\u003dFalse,"},{"line_number":36,"context_line":"                help\u003d\"Allow the ability to modify the \""},{"line_number":37,"context_line":"                     \"extra-spec settings of an in-use \""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba2be162_0d13475c","line":34,"range":{"start_line":34,"start_character":29,"end_line":34,"end_character":33},"in_reply_to":"ba2be162_89072e17","updated":"2017-03-02 22:24:13.000000000","message":"Sure, why not.. if I\u0027m lucky the name of the conf variable can get to 80+ chars :)","commit_id":"23999c4a79e63a0cdaa15fc39541bc14b382582a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"639864a269dce54facd04e0e236103e535b0fddf","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        if (not CONF.allow_inuse_type_modification):"},{"line_number":71,"context_line":"            vols \u003d db.volume_get_all("},{"line_number":72,"context_line":"                ctxt.get_admin_context(),"},{"line_number":73,"context_line":"                filters\u003d{\u0027volume_type_id\u0027: type_id})"},{"line_number":74,"context_line":"            if len(vols):"},{"line_number":75,"context_line":"                return False"},{"line_number":76,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba2be162_ee2430c6","line":73,"updated":"2017-03-02 20:58:04.000000000","message":"This will result in a large amount of data being retrieved that isn\u0027t needed -- I think this should use a new sql.exists() check rather than volume_get_all().\n\nSee volume_has_snapshots_filter() and volume_has_undeleteable_snapshots_filter() in sqlalchemy/api.py for an example of this.","commit_id":"23999c4a79e63a0cdaa15fc39541bc14b382582a"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"bd6722536123f3f0c5dd595c27228f940cbe8cd8","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        if (not CONF.allow_inuse_type_modification):"},{"line_number":71,"context_line":"            vols \u003d db.volume_get_all("},{"line_number":72,"context_line":"                ctxt.get_admin_context(),"},{"line_number":73,"context_line":"                filters\u003d{\u0027volume_type_id\u0027: type_id})"},{"line_number":74,"context_line":"            if len(vols):"},{"line_number":75,"context_line":"                return False"},{"line_number":76,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba2be162_70c9f625","line":73,"in_reply_to":"ba2be162_6d012305","updated":"2017-03-02 22:58:28.000000000","message":"Ahh, ok; so I see what you\u0027re saying I think.  That filter is actually applied to be used in a conditional-update.  So:\n1. Convert this to use objects\n2. Create a db filter method like you describe\n3. Use conditional updates where the condition is not met\n\nI\u0027ll look at that, or see if there\u0027s a better way.","commit_id":"23999c4a79e63a0cdaa15fc39541bc14b382582a"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"6ccfe46ad50dbed659ee6fbf84b3a1da008f976c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        if (not CONF.allow_inuse_type_modification):"},{"line_number":71,"context_line":"            vols \u003d db.volume_get_all("},{"line_number":72,"context_line":"                ctxt.get_admin_context(),"},{"line_number":73,"context_line":"                filters\u003d{\u0027volume_type_id\u0027: type_id})"},{"line_number":74,"context_line":"            if len(vols):"},{"line_number":75,"context_line":"                return False"},{"line_number":76,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba2be162_6d012305","line":73,"in_reply_to":"ba2be162_ee2430c6","updated":"2017-03-02 22:24:13.000000000","message":"I\u0027ll look at that again, but it seems that\u0027s actually just the same call; it\u0027s just a fancy way of applying a filter to the query?  It just builds a filter for the conditional update, but we still do a get_all_for_volume etc?\n\nHappy to do something more efficient but need some help I think.","commit_id":"23999c4a79e63a0cdaa15fc39541bc14b382582a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9df35b44b69e1672ed7cf232b5baff7e007f1553","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        authorize(context)"},{"line_number":149,"context_line":"        if not self._allow_update(context, type_id):"},{"line_number":150,"context_line":"            expl \u003d _(\u0027Volume Type is currently in use.\u0027)"},{"line_number":151,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        # Not found exception will be handled at the wsgi level"},{"line_number":154,"context_line":"        db.volume_type_extra_specs_delete(context, type_id, id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_c904a319","line":151,"updated":"2017-03-03 14:53:10.000000000","message":"Since all of these do the same thing, I wonder if it would be better to just move the raise of the exception into the method, and maybe rename it then to _validate_update_allowed or something. Unless you think there\u0027s ever a reason to check if the update is allowed but we won\u0027t want to raise an exception on it.\n\nJust a minor optimization though. Not a big deal IMO.","commit_id":"dbfc01752ae532241e1f435d93e839d1041e2c06"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"ee838ddf5239ce850fbeecc065e93a2d0f0aed21","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        authorize(context)"},{"line_number":149,"context_line":"        if not self._allow_update(context, type_id):"},{"line_number":150,"context_line":"            expl \u003d _(\u0027Volume Type is currently in use.\u0027)"},{"line_number":151,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        # Not found exception will be handled at the wsgi level"},{"line_number":154,"context_line":"        db.volume_type_extra_specs_delete(context, type_id, id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_c10a9625","line":151,"in_reply_to":"ba2be162_c904a319","updated":"2017-03-04 15:35:06.000000000","message":"Yeah, with the way some of this has changed I could certainly optimize it by doing that.  I didn\u0027t do it initially thinking that I dind\u0027t want the wrapper to be hard coded to do anything if we wanted to ever use it for something else, and to make testing slightly easier.  BUT the way it turned out I don\u0027t think either of those things really matter now.\n\nI\u0027ll condense it a bit further.","commit_id":"dbfc01752ae532241e1f435d93e839d1041e2c06"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"ecbdb1021843b283521dece28289e8b9c9cdeb93","unresolved":false,"context_lines":[{"line_number":37,"context_line":"extraspec_opts \u003d ["},{"line_number":38,"context_line":"    cfg.BoolOpt(\u0027allow_inuse_volume_type_modification\u0027,"},{"line_number":39,"context_line":"                default\u003dFalse,"},{"line_number":40,"context_line":"                deprecated_for_removal\u003dTrue,"},{"line_number":41,"context_line":"                help\u003d\"DEPRECATED: Allow the ability to modify the \""},{"line_number":42,"context_line":"                     \"extra-spec settings of an in-use volume-type.\"),"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_2b6ec596","line":40,"updated":"2017-03-06 16:32:22.000000000","message":"So this is being deprecated immediately cause a new option is due to wiffle down the track from Xyang\u0027s stuff?","commit_id":"b245225d5e67120dfe7aee5e941f381846c89423"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"3f69d081a5ed35769cfd77d746157523c17947c4","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    cfg.BoolOpt(\u0027allow_inuse_volume_type_modification\u0027,"},{"line_number":39,"context_line":"                default\u003dFalse,"},{"line_number":40,"context_line":"                deprecated_for_removal\u003dTrue,"},{"line_number":41,"context_line":"                help\u003d\"DEPRECATED: Allow the ability to modify the \""},{"line_number":42,"context_line":"                     \"extra-spec settings of an in-use volume-type.\"),"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_4f85beab","line":41,"updated":"2017-03-06 18:49:44.000000000","message":"Tom, take a look at the release notes for more information.","commit_id":"b245225d5e67120dfe7aee5e941f381846c89423"}],"cinder/opts.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"9c0248670a19b46b17228f8e33708c31afbdb4e3","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cinder.api import common as cinder_api_common"},{"line_number":21,"context_line":"from cinder.api.contrib import types_extra_specs as \\"},{"line_number":22,"context_line":"    cinder_api_contrib_typesextraspecs"},{"line_number":23,"context_line":"from cinder.api.middleware import auth as cinder_api_middleware_auth"},{"line_number":24,"context_line":"from cinder.api.views import versions as cinder_api_views_versions"},{"line_number":25,"context_line":"from cinder.backup import api as cinder_backup_api"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_04415c38","line":22,"range":{"start_line":22,"start_character":4,"end_line":22,"end_character":38},"updated":"2017-03-03 00:44:46.000000000","message":"this reminds me of withreplication and makes me wonder whyy we\u0027d do this :)\n\n\na 2 char extra suggestion:\n cinder_api_contrib_types_extra_specs","commit_id":"dbfc01752ae532241e1f435d93e839d1041e2c06"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"8665984e36aefeb6f1e1b69992741fb219a4b66c","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cinder.api import common as cinder_api_common"},{"line_number":21,"context_line":"from cinder.api.contrib import types_extra_specs as \\"},{"line_number":22,"context_line":"    cinder_api_contrib_typesextraspecs"},{"line_number":23,"context_line":"from cinder.api.middleware import auth as cinder_api_middleware_auth"},{"line_number":24,"context_line":"from cinder.api.views import versions as cinder_api_views_versions"},{"line_number":25,"context_line":"from cinder.backup import api as cinder_backup_api"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_3f5e6912","line":22,"range":{"start_line":22,"start_character":4,"end_line":22,"end_character":38},"in_reply_to":"ba2be162_04415c38","updated":"2017-03-03 01:15:14.000000000","message":"This is all auto-generated, and the way it works is s/\\//_/ and then just s/_// in filenames.  At least that\u0027s how I remember it working.\n\nRegardless, it\u0027s an automated deal and needs a delim for directory vs filename.","commit_id":"dbfc01752ae532241e1f435d93e839d1041e2c06"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d9a5a8d6c80b9a4310190cf2dac796b96d4615a0","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cinder.api import common as cinder_api_common"},{"line_number":21,"context_line":"from cinder.api.contrib import types_extra_specs as \\"},{"line_number":22,"context_line":"    cinder_api_contrib_typesextraspecs"},{"line_number":23,"context_line":"from cinder.api.middleware import auth as cinder_api_middleware_auth"},{"line_number":24,"context_line":"from cinder.api.views import versions as cinder_api_views_versions"},{"line_number":25,"context_line":"from cinder.backup import api as cinder_backup_api"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_3f5109d9","line":22,"range":{"start_line":22,"start_character":4,"end_line":22,"end_character":38},"in_reply_to":"ba2be162_3f5e6912","updated":"2017-03-03 01:20:26.000000000","message":"ohh... Thanks for clarifying!","commit_id":"dbfc01752ae532241e1f435d93e839d1041e2c06"}],"releasenotes/notes/bug-1667071-dc6407f40a1f7d15.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4b34838eccf37764cb4166f86ac92341baff17b2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Modifying the extra-specs of an in use Volume Type was something that"},{"line_number":4,"context_line":"    we\u0027ve unintentionally allowed.  The result is unexpected or unknoow"},{"line_number":5,"context_line":"    volume behaviors in cases where a type was modified while a volume was"},{"line_number":6,"context_line":"    assigned that type.  This has been particularly annoying for folks that"},{"line_number":7,"context_line":"    have assigned the volume-type to a different/new backend device."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ba2be162_2367efb7","line":4,"range":{"start_line":4,"start_character":64,"end_line":4,"end_character":71},"updated":"2017-03-05 16:58:26.000000000","message":"unknown","commit_id":"c2d22b5c011dd4947ab35b32a35dce9b23bf2aee"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4b34838eccf37764cb4166f86ac92341baff17b2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    have assigned the volume-type to a different/new backend device."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"other:"},{"line_number":10,"context_line":"  - In case there are customers using this \"bug\" we add a config option to"},{"line_number":11,"context_line":"    retain the bad behavior \"allow_inuse_volume_type_modification\", with a"},{"line_number":12,"context_line":"    default setting of False (Don\u0027t allow).  Note this config option will be"},{"line_number":13,"context_line":"    deprecated and removed in a future release."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ba2be162_c3fc53ba","line":10,"range":{"start_line":10,"start_character":38,"end_line":10,"end_character":48},"updated":"2017-03-05 16:58:26.000000000","message":"In the generated release notes, the \"other\" section may not be anywhere near the \"fixes\" section, so stating \"this bug\" will have no context.\n\nI think just collapse this into the previous fixes section.","commit_id":"c2d22b5c011dd4947ab35b32a35dce9b23bf2aee"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4b34838eccf37764cb4166f86ac92341baff17b2","unresolved":false,"context_lines":[{"line_number":10,"context_line":"  - In case there are customers using this \"bug\" we add a config option to"},{"line_number":11,"context_line":"    retain the bad behavior \"allow_inuse_volume_type_modification\", with a"},{"line_number":12,"context_line":"    default setting of False (Don\u0027t allow).  Note this config option will be"},{"line_number":13,"context_line":"    deprecated and removed in a future release."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ba2be162_e3f797d0","line":13,"range":{"start_line":13,"start_character":4,"end_line":13,"end_character":14},"updated":"2017-03-05 16:58:26.000000000","message":"I wonder if we should just mark it deprecated right off the bat?","commit_id":"c2d22b5c011dd4947ab35b32a35dce9b23bf2aee"}]}
