)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"0f2d1670db9a40c5561c1eaa1f1e9919b0e7099e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Affected unit tests, such as those for Brick LVM, have been updated"},{"line_number":29,"context_line":"to work with this new model."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Upgrade Impact:"},{"line_number":32,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":33,"context_line":"There shouldn\u0027t be any impact on upgrade as a result of this patch."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a8ffd7b_543ef028","line":31,"updated":"2015-12-02 15:51:15.000000000","message":"Whoa, I should have explained what I had in mind - no need to describe this in such detailed way… The description of the tag is in [1]. We use the UpgradeImpact query to find commits that are worth a release note, so simply adding UpgradeImpact line under Closes-Bug was enough. :)\n\n[1] https://wiki.openstack.org/wiki/GitCommitMessages#Including_external_references","commit_id":"7ccd5303834a29b5e46f6ea27999b6ae282385c8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"239cd173ddeb461dd1364414d89b2b1e1a0cee1d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Affected unit tests, such as those for Brick LVM, have been updated"},{"line_number":29,"context_line":"to work with this new model."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Upgrade Impact:"},{"line_number":32,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":33,"context_line":"There shouldn\u0027t be any impact on upgrade as a result of this patch."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5a710552_1d9d3659","line":31,"in_reply_to":"5a710552_e5a9f1e0","updated":"2015-12-15 20:31:24.000000000","message":"There is one. rootwrap.d/volume.filters file needs to be updated in order for Cinder to work correctly. As it is normally in /etc/cinder, we can assume it\u0027s a configuration file that normally wouldn\u0027t require updating.\n\nNormally this would fail Grenade tests which are checking upgrades. It isn\u0027t, because earlier in this release we\u0027ve merged patch that adds custom step to Grenade - that is copies volume.filters.\n\nWhat I wanted is just to have a simple UpgradeImpact tag, so in case of revert of the commit that adds a release note informing that volume.filters need to be copied we\u0027ll still notice that and add a proper RN. We\u0027re normally looking for commits with UpgradeImpact or DocImpact before the release.\n\nI\u0027m not criticizing the patch and I\u0027m totally okay with detailed description you\u0027ve provided. :)","commit_id":"7ccd5303834a29b5e46f6ea27999b6ae282385c8"},{"author":{"_account_id":842,"name":"Fergal Mc Carthy","email":"fergal.mc.carthy@suse.com","username":"fergal-mccarthy"},"change_message_id":"e51de69278fef0b07e65917493af3abf0273ae3d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Affected unit tests, such as those for Brick LVM, have been updated"},{"line_number":29,"context_line":"to work with this new model."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Upgrade Impact:"},{"line_number":32,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":33,"context_line":"There shouldn\u0027t be any impact on upgrade as a result of this patch."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5a710552_e5a9f1e0","line":31,"in_reply_to":"9a8ffd7b_543ef028","updated":"2015-12-14 21:22:48.000000000","message":"Michal,\n\nSo in a case like this, where effort has been taken to ensure that there is no upgrade impact, and that the change is backward compatible with existing deployments, except for a very rare/unlikely setup... What would you recommand the UpgradeImpact line should say?\n\nGiven that I was the one who found, reported and fixed bugs that suggest no one was actually trying to isolate host and cinder LVM device spaces up to now, and this patch is my effort to make this possible, I suspect there isn\u0027t likely to be an upgrade impact. ;-)","commit_id":"7ccd5303834a29b5e46f6ea27999b6ae282385c8"}],"cinder/brick/local_dev/lvm.py":[{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"c797feeac11acb55cb19b9cddb68297e10179023","unresolved":false,"context_lines":[{"line_number":674,"context_line":""},{"line_number":675,"context_line":"        try:"},{"line_number":676,"context_line":"            self._lvm([\u0027lvremove\u0027, \u0027--config\u0027, LVM_CONFIG,"},{"line_number":677,"context_line":"                       \u0027-f\u0027, \u0027%s/%s\u0027 % (self.vg_name, name)])"},{"line_number":678,"context_line":"        except putils.ProcessExecutionError as err:"},{"line_number":679,"context_line":"            LOG.debug(\u0027Error reported running lvremove: CMD: %(command)s, \u0027"},{"line_number":680,"context_line":"                      \u0027RESPONSE: %(response)s\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_98c5fa5c","line":677,"updated":"2015-10-28 05:14:26.000000000","message":"Maybe adding a cmd variable here will be more neatly. Like:\n \ncmd \u003d [\u0027lvremove\u0027, ......]\nself._lvm(cmd)","commit_id":"8f614c475d4a8b616985dd1c7afb89780abe30ad"},{"author":{"_account_id":842,"name":"Fergal Mc Carthy","email":"fergal.mc.carthy@suse.com","username":"fergal-mccarthy"},"change_message_id":"00ced17ffa8cefeadd685718f3eb631a3670933c","unresolved":false,"context_lines":[{"line_number":674,"context_line":""},{"line_number":675,"context_line":"        try:"},{"line_number":676,"context_line":"            self._lvm([\u0027lvremove\u0027, \u0027--config\u0027, LVM_CONFIG,"},{"line_number":677,"context_line":"                       \u0027-f\u0027, \u0027%s/%s\u0027 % (self.vg_name, name)])"},{"line_number":678,"context_line":"        except putils.ProcessExecutionError as err:"},{"line_number":679,"context_line":"            LOG.debug(\u0027Error reported running lvremove: CMD: %(command)s, \u0027"},{"line_number":680,"context_line":"                      \u0027RESPONSE: %(response)s\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_5277e2d2","line":677,"in_reply_to":"1a26ad4f_885fd071","updated":"2015-11-18 14:57:09.000000000","message":"Done","commit_id":"8f614c475d4a8b616985dd1c7afb89780abe30ad"},{"author":{"_account_id":842,"name":"Fergal Mc Carthy","email":"fergal.mc.carthy@suse.com","username":"fergal-mccarthy"},"change_message_id":"fc622c61f3198328bd09bb10dc9ee45c65958a7c","unresolved":false,"context_lines":[{"line_number":674,"context_line":""},{"line_number":675,"context_line":"        try:"},{"line_number":676,"context_line":"            self._lvm([\u0027lvremove\u0027, \u0027--config\u0027, LVM_CONFIG,"},{"line_number":677,"context_line":"                       \u0027-f\u0027, \u0027%s/%s\u0027 % (self.vg_name, name)])"},{"line_number":678,"context_line":"        except putils.ProcessExecutionError as err:"},{"line_number":679,"context_line":"            LOG.debug(\u0027Error reported running lvremove: CMD: %(command)s, \u0027"},{"line_number":680,"context_line":"                      \u0027RESPONSE: %(response)s\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_885fd071","line":677,"in_reply_to":"1a26ad4f_98c5fa5c","updated":"2015-10-28 21:14:16.000000000","message":"I don\u0027t disagree - was just keeping the changes minimal ;-)","commit_id":"8f614c475d4a8b616985dd1c7afb89780abe30ad"},{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"c797feeac11acb55cb19b9cddb68297e10179023","unresolved":false,"context_lines":[{"line_number":690,"context_line":"            LVM_CONFIG +\u003d \u0027devices { ignore_suspended_devices \u003d 1}\u0027"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"            self._lvm([\u0027lvremove\u0027, \u0027--config\u0027, LVM_CONFIG,"},{"line_number":693,"context_line":"                       \u0027-f\u0027, \u0027%s/%s\u0027 % (self.vg_name, name)])"},{"line_number":694,"context_line":"            LOG.debug(\u0027Successfully deleted volume: %s after \u0027"},{"line_number":695,"context_line":"                      \u0027udev settle.\u0027, name)"},{"line_number":696,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_58a682c2","line":693,"updated":"2015-10-28 05:14:26.000000000","message":"The same as above. And several other lines are the same in the patch.","commit_id":"8f614c475d4a8b616985dd1c7afb89780abe30ad"},{"author":{"_account_id":842,"name":"Fergal Mc Carthy","email":"fergal.mc.carthy@suse.com","username":"fergal-mccarthy"},"change_message_id":"00ced17ffa8cefeadd685718f3eb631a3670933c","unresolved":false,"context_lines":[{"line_number":690,"context_line":"            LVM_CONFIG +\u003d \u0027devices { ignore_suspended_devices \u003d 1}\u0027"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"            self._lvm([\u0027lvremove\u0027, \u0027--config\u0027, LVM_CONFIG,"},{"line_number":693,"context_line":"                       \u0027-f\u0027, \u0027%s/%s\u0027 % (self.vg_name, name)])"},{"line_number":694,"context_line":"            LOG.debug(\u0027Successfully deleted volume: %s after \u0027"},{"line_number":695,"context_line":"                      \u0027udev settle.\u0027, name)"},{"line_number":696,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_f27ff6a8","line":693,"in_reply_to":"1a26ad4f_28555c4f","updated":"2015-11-18 14:57:09.000000000","message":"Done","commit_id":"8f614c475d4a8b616985dd1c7afb89780abe30ad"},{"author":{"_account_id":842,"name":"Fergal Mc Carthy","email":"fergal.mc.carthy@suse.com","username":"fergal-mccarthy"},"change_message_id":"fc622c61f3198328bd09bb10dc9ee45c65958a7c","unresolved":false,"context_lines":[{"line_number":690,"context_line":"            LVM_CONFIG +\u003d \u0027devices { ignore_suspended_devices \u003d 1}\u0027"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"            self._lvm([\u0027lvremove\u0027, \u0027--config\u0027, LVM_CONFIG,"},{"line_number":693,"context_line":"                       \u0027-f\u0027, \u0027%s/%s\u0027 % (self.vg_name, name)])"},{"line_number":694,"context_line":"            LOG.debug(\u0027Successfully deleted volume: %s after \u0027"},{"line_number":695,"context_line":"                      \u0027udev settle.\u0027, name)"},{"line_number":696,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_28555c4f","line":693,"in_reply_to":"1a26ad4f_58a682c2","updated":"2015-10-28 21:14:16.000000000","message":"I don\u0027t disagree - was just keeping the changes minimal ;-)","commit_id":"8f614c475d4a8b616985dd1c7afb89780abe30ad"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"231995395ab98f6d6fc63833ceb9afb76b6a45f3","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    # /etc/cinder/lvm.conf exists, or a different lvm.conf is specified."},{"line_number":42,"context_line":"    LVM_CMD_PREFIX \u003d [\u0027env\u0027,"},{"line_number":43,"context_line":"                      \u0027LC_ALL\u003dC\u0027,"},{"line_number":44,"context_line":"                      \u0027LVM_SYSTEM_DIR\u003d/etc/lvm\u0027]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, vg_name, root_helper, create_vg\u003dFalse,"},{"line_number":47,"context_line":"                 physical_volumes\u003dNone, lvm_type\u003d\u0027default\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_f1babb09","line":44,"updated":"2015-12-06 16:31:46.000000000","message":"Wonder if at some point it would be safer to make this a dict accessible by key.  For example on L#83 calling element 2 of the list is kind of ugly.  Granted this isn\u0027t exactly dynamic code here so I don\u0027t think it matters much; just makes things a bit more robust and easier to follow IMO.","commit_id":"7ccd5303834a29b5e46f6ea27999b6ae282385c8"},{"author":{"_account_id":842,"name":"Fergal Mc Carthy","email":"fergal.mc.carthy@suse.com","username":"fergal-mccarthy"},"change_message_id":"34d91399c208b68029035b0997e508235bf48971","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    # /etc/cinder/lvm.conf exists, or a different lvm.conf is specified."},{"line_number":42,"context_line":"    LVM_CMD_PREFIX \u003d [\u0027env\u0027,"},{"line_number":43,"context_line":"                      \u0027LC_ALL\u003dC\u0027,"},{"line_number":44,"context_line":"                      \u0027LVM_SYSTEM_DIR\u003d/etc/lvm\u0027]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, vg_name, root_helper, create_vg\u003dFalse,"},{"line_number":47,"context_line":"                 physical_volumes\u003dNone, lvm_type\u003d\u0027default\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a710552_f386a864","line":44,"in_reply_to":"7a740942_f1babb09","updated":"2015-12-14 18:01:56.000000000","message":"I agree totally, and was considering doing that as a follow on to this, but didn\u0027t want to complicate things further by making such a change here.","commit_id":"7ccd5303834a29b5e46f6ea27999b6ae282385c8"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"231995395ab98f6d6fc63833ceb9afb76b6a45f3","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return putils.execute(*_cmd, root_helper\u003droot_helper,"},{"line_number":131,"context_line":"                              run_as_root\u003drun_as_root)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def _lvm(self, cmd, root_helper\u003dNone, run_as_root\u003dTrue):"},{"line_number":134,"context_line":"        \"\"\"Simple wrapper for executing LVM commands"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        Will use self._root_helper if none is provided via the"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_11e987e6","line":133,"updated":"2015-12-06 16:31:46.000000000","message":"I don\u0027t follow exactly why we need two versions here as opposed to just calling the static method always?  Can you please clarify for me?  I\u0027m assuming it has to do with setting a member executor, but we could probably just make that an arg with a default.  Let me know if that\u0027s a bad idea or not.","commit_id":"7ccd5303834a29b5e46f6ea27999b6ae282385c8"},{"author":{"_account_id":842,"name":"Fergal Mc Carthy","email":"fergal.mc.carthy@suse.com","username":"fergal-mccarthy"},"change_message_id":"58a3f0610f4c0f06e2252331e8df337532db4f3d","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return putils.execute(*_cmd, root_helper\u003droot_helper,"},{"line_number":131,"context_line":"                              run_as_root\u003drun_as_root)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def _lvm(self, cmd, root_helper\u003dNone, run_as_root\u003dTrue):"},{"line_number":134,"context_line":"        \"\"\"Simple wrapper for executing LVM commands"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        Will use self._root_helper if none is provided via the"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a710552_2017e7a4","line":133,"in_reply_to":"5a710552_f308e893","updated":"2015-12-14 22:05:27.000000000","message":"After some fun and games before I remembered previous lessons with regard to the interactions between unit tests and python default parameters, I\u0027ve gotten this sorted; _lvm is a wrapper calling LVM.lvm_cmd().","commit_id":"7ccd5303834a29b5e46f6ea27999b6ae282385c8"},{"author":{"_account_id":842,"name":"Fergal Mc Carthy","email":"fergal.mc.carthy@suse.com","username":"fergal-mccarthy"},"change_message_id":"34d91399c208b68029035b0997e508235bf48971","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return putils.execute(*_cmd, root_helper\u003droot_helper,"},{"line_number":131,"context_line":"                              run_as_root\u003drun_as_root)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def _lvm(self, cmd, root_helper\u003dNone, run_as_root\u003dTrue):"},{"line_number":134,"context_line":"        \"\"\"Simple wrapper for executing LVM commands"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        Will use self._root_helper if none is provided via the"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a710552_f308e893","line":133,"in_reply_to":"7a740942_11e987e6","updated":"2015-12-14 18:01:56.000000000","message":"Yeah I can work something out to improve the coding pattern here. ;-)","commit_id":"7ccd5303834a29b5e46f6ea27999b6ae282385c8"}]}
