)]}'
{"cinder/brick/local_dev/lvm.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"10a2c3ff3aee70a0e5df1f3dd4a06403c21b6d8a","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        cmd \u003d [\u0027vgs\u0027, \u0027--version\u0027]"},{"line_number":132,"context_line":"        (out, err) \u003d putils.execute(*cmd, root_helper\u003d\u0027sudo\u0027, run_as_root\u003dTrue)"},{"line_number":133,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        for line in lines:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F%2BnU%3D","line":132,"updated":"2013-05-15 18:46:08.000000000","message":"I don\u0027t think this command needs to run as root.\n\n\"lvm version\" may also make more sense than calling vgs but not a big issue.","commit_id":"0a8b6ee10cf1cbd03ab5c5963c31922dcb00debd"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"074e1a10db34578e4067c1414f83acd3abef7799","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        cmd \u003d [\u0027vgs\u0027, \u0027--version\u0027]"},{"line_number":132,"context_line":"        (out, err) \u003d putils.execute(*cmd, root_helper\u003d\u0027sudo\u0027, run_as_root\u003dTrue)"},{"line_number":133,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        for line in lines:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F9XU%3D","line":132,"in_reply_to":"AAAAO3%2F%2F%2BAI%3D","updated":"2013-05-16 04:30:43.000000000","message":"I\u0027m fine as is. I noticed the same issue on 12.10.","commit_id":"0a8b6ee10cf1cbd03ab5c5963c31922dcb00debd"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"10586ad60eed919c456221342b7a9406791104f4","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        cmd \u003d [\u0027vgs\u0027, \u0027--version\u0027]"},{"line_number":132,"context_line":"        (out, err) \u003d putils.execute(*cmd, root_helper\u003d\u0027sudo\u0027, run_as_root\u003dTrue)"},{"line_number":133,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        for line in lines:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F%2BAI%3D","line":132,"in_reply_to":"AAAAO3%2F%2F%2BFE%3D","updated":"2013-05-15 22:16:16.000000000","message":"Yeah, but that ends up in a non-zero return code and I\u0027d have to change out the return value checking and blah blah blah.\n\nReally, I don\u0027t mind changing it, just figured the vgs command was already in the rootwrap so figured why.  I\u0027ll give you or others a few hours to force me to change it.  :)","commit_id":"0a8b6ee10cf1cbd03ab5c5963c31922dcb00debd"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8d5b8e9590fd98619634581f099028add13a6cdc","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        cmd \u003d [\u0027vgs\u0027, \u0027--version\u0027]"},{"line_number":132,"context_line":"        (out, err) \u003d putils.execute(*cmd, root_helper\u003d\u0027sudo\u0027, run_as_root\u003dTrue)"},{"line_number":133,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        for line in lines:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F%2BFE%3D","line":132,"in_reply_to":"AAAAO3%2F%2F%2BS0%3D","updated":"2013-05-15 21:46:23.000000000","message":"Huh, on my Fedora 18 system \"vgs --version\" as non-root prints some errors about opening /dev/mapper/control but the info you want still comes out on stdout.\n\nSecond part sounds good.","commit_id":"0a8b6ee10cf1cbd03ab5c5963c31922dcb00debd"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"167135dffab0c5172fc5f370389d868e464eac39","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        \"\"\""},{"line_number":131,"context_line":"        cmd \u003d [\u0027vgs\u0027, \u0027--version\u0027]"},{"line_number":132,"context_line":"        (out, err) \u003d putils.execute(*cmd, root_helper\u003d\u0027sudo\u0027, run_as_root\u003dTrue)"},{"line_number":133,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        for line in lines:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F%2BS0%3D","line":132,"in_reply_to":"AAAAO3%2F%2F%2BnU%3D","updated":"2013-05-15 20:13:10.000000000","message":"Actually it does need root, the crazy lvm version check pulls LVM, Library and Driver versions, sadly the Driver version needs to access /dev/mapper/control which requires root.  It will give the pieces I need, however it\u0027ll return with an error code, and I\u0027ve already got the filter so why not use it?\n\nAs far as \u0027lvm version\u0027, yes it does the exact same thing, it there\u0027s some real reason that it matters I\u0027ll change it but not sure why it matters.","commit_id":"0a8b6ee10cf1cbd03ab5c5963c31922dcb00debd"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"c08776f92e89d882794f28f7af76556cb1f32e99","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            if \u0027LVM version\u0027 in line:"},{"line_number":137,"context_line":"                version_ints \u003d re.search(\u0027\\d+(\\.\\d+)*\u0027, line)"},{"line_number":138,"context_line":"                version_minor \u003d version_ints.groups()[0].strip(\u0027.\u0027)"},{"line_number":139,"context_line":"                if int(version_minor) \u003e\u003d 95:"},{"line_number":140,"context_line":"                    return True"},{"line_number":141,"context_line":"        return False"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F9Jo%3D","line":139,"updated":"2013-05-16 06:53:49.000000000","message":"I would check the number to the left of the decimal as well just to be safe. I think the method for checking should also go into the comment at the start of the function.","commit_id":"0a8b6ee10cf1cbd03ab5c5963c31922dcb00debd"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"27c1c92ed981694a35ed91f14d2de638ca124531","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            if \u0027LVM version\u0027 in line:"},{"line_number":137,"context_line":"                version_ints \u003d re.search(\u0027\\d+(\\.\\d+)*\u0027, line)"},{"line_number":138,"context_line":"                version_minor \u003d version_ints.groups()[0].strip(\u0027.\u0027)"},{"line_number":139,"context_line":"                if int(version_minor) \u003e\u003d 95:"},{"line_number":140,"context_line":"                    return True"},{"line_number":141,"context_line":"        return False"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPH%2F%2F87M%3D","line":139,"in_reply_to":"AAAAO3%2F%2F9Jo%3D","updated":"2013-05-17 22:11:13.000000000","message":"Done","commit_id":"0a8b6ee10cf1cbd03ab5c5963c31922dcb00debd"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"c01d909aabc18b22c5a004b9af9315548b6bd247","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                version_ints \u003d re.search(\u0027\\d+(\\.\\d+)*\u0027, line)"},{"line_number":138,"context_line":"                version_minor \u003d version_ints.groups()[0].strip(\u0027.\u0027)"},{"line_number":139,"context_line":"                if int(version_minor) \u003e\u003d 95:"},{"line_number":140,"context_line":"                    return True"},{"line_number":141,"context_line":"        return False"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPH%2F%2F9CA%3D","line":140,"updated":"2013-05-17 21:06:16.000000000","message":"I agree with Avishay.  Otherwise, won\u0027t this check fail as soon as the move to the next major version number and the minor version drops below 95?","commit_id":"0a8b6ee10cf1cbd03ab5c5963c31922dcb00debd"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"27c1c92ed981694a35ed91f14d2de638ca124531","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                version_ints \u003d re.search(\u0027\\d+(\\.\\d+)*\u0027, line)"},{"line_number":138,"context_line":"                version_minor \u003d version_ints.groups()[0].strip(\u0027.\u0027)"},{"line_number":139,"context_line":"                if int(version_minor) \u003e\u003d 95:"},{"line_number":140,"context_line":"                    return True"},{"line_number":141,"context_line":"        return False"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPH%2F%2F87Q%3D","line":140,"in_reply_to":"AAAAPH%2F%2F9CA%3D","updated":"2013-05-17 22:11:13.000000000","message":"Done","commit_id":"0a8b6ee10cf1cbd03ab5c5963c31922dcb00debd"},{"author":{"_account_id":7389,"name":"Jim Branen","email":"james.branen@hp.com","username":"jim_branen"},"change_message_id":"22dd590b61be03df605dc1977eaf3531a3704103","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        \"\"\""},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        if not self.supports_thin_provisioning():"},{"line_number":282,"context_line":"            LOG.error(_(\u0027Requested to setup thin provisioning, \u0027"},{"line_number":283,"context_line":"                        \u0027however current LVM version does not \u0027"},{"line_number":284,"context_line":"                        \u0027support it.\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F%2Bns%3D","line":281,"updated":"2013-05-15 18:25:49.000000000","message":"Hi John, I\u0027m new to python, but wouldn\u0027t it be clearer to invoke static methods using the class name? e.g. LVM.supports_thin_provisioning()","commit_id":"0a8b6ee10cf1cbd03ab5c5963c31922dcb00debd"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"10586ad60eed919c456221342b7a9406791104f4","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        \"\"\""},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        if not self.supports_thin_provisioning():"},{"line_number":282,"context_line":"            LOG.error(_(\u0027Requested to setup thin provisioning, \u0027"},{"line_number":283,"context_line":"                        \u0027however current LVM version does not \u0027"},{"line_number":284,"context_line":"                        \u0027support it.\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F99o%3D","line":281,"in_reply_to":"AAAAO3%2F%2F%2Bns%3D","updated":"2013-05-15 22:16:16.000000000","message":"Well, since I have an instantiation of the class via self here I think it\u0027s best to use that.","commit_id":"0a8b6ee10cf1cbd03ab5c5963c31922dcb00debd"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"f8f3d6573b0417403866de9c3042a535f791bce7","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            if \u0027LVM version\u0027 in line:"},{"line_number":136,"context_line":"                version_list \u003d line.split()"},{"line_number":137,"context_line":"                version \u003d version_list[2]"},{"line_number":138,"context_line":"                if \u0027(2)\u0027 in version:"},{"line_number":139,"context_line":"                    version \u003d version.replace(\u0027(2)\u0027, \u0027\u0027)"},{"line_number":140,"context_line":"                version_tuple \u003d tuple(map(int, version.split(\u0027.\u0027)))"},{"line_number":141,"context_line":"                if version_tuple \u003e\u003d (2, 2, 95):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2F85M%3D","line":138,"updated":"2013-05-17 22:31:16.000000000","message":"Before anybody asks, I can\u0027t predict the future and whether this could be (2.5) or (3) or removed altogether so please don\u0027t -1 with such suggestions :)","commit_id":"77fb5d3b40f4b7ac87865247415611119ef2a57f"}],"cinder/tests/brick/test_brick_lvm.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"c01d909aabc18b22c5a004b9af9315548b6bd247","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def test_thin_support(self):"},{"line_number":131,"context_line":"        self.stubs.Set(processutils, \u0027execute\u0027, self.fake_execute)"},{"line_number":132,"context_line":"        self.assertTrue(self.vg.supports_thin_provisioning())"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPH%2F%2F9Bg%3D","line":132,"updated":"2013-05-17 21:06:16.000000000","message":"Shouldn\u0027t there be a test case here to make sure you catch a case where the minor_version is less than 95 and then possibly the case where the major version has been incremented leaving the minor version less than what you currently expect?","commit_id":"0a8b6ee10cf1cbd03ab5c5963c31922dcb00debd"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"27c1c92ed981694a35ed91f14d2de638ca124531","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def test_thin_support(self):"},{"line_number":131,"context_line":"        self.stubs.Set(processutils, \u0027execute\u0027, self.fake_execute)"},{"line_number":132,"context_line":"        self.assertTrue(self.vg.supports_thin_provisioning())"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPH%2F%2F86E%3D","line":132,"in_reply_to":"AAAAPH%2F%2F9Bg%3D","updated":"2013-05-17 22:11:13.000000000","message":"Done","commit_id":"0a8b6ee10cf1cbd03ab5c5963c31922dcb00debd"}]}
