)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9d7acc55fbf4e56c4d2683d6c3aad22e454b8258","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add Virtuozzo Storage Volume Driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a volume driver which can use Virtuozzo Storage, which"},{"line_number":10,"context_line":"has filesystem interface and so volude driver has a similar"},{"line_number":11,"context_line":"workflow to NFS and SMBFS drivers."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"At this point the driver contain minimal set of features. Because"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1af86dd1_67d50e42","line":10,"updated":"2015-06-12 15:31:29.000000000","message":"/volude/volume/","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"c37a04a7903d7d31b84e27835068c7d08b41bf55","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add Virtuozzo Storage Volume Driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a volume driver which can use Virtuozzo Storage, which"},{"line_number":10,"context_line":"has filesystem interface and so volude driver has a similar"},{"line_number":11,"context_line":"workflow to NFS and SMBFS drivers."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"At this point the driver contain minimal set of features. Because"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"fa32b979_f39d4f5a","line":10,"in_reply_to":"1af86dd1_67d50e42","updated":"2015-06-13 18:09:38.000000000","message":"Done","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"204dbd8b041b47e20b382a0dac359f30fbcfcc21","unresolved":false,"context_lines":[{"line_number":17,"context_line":"in this patch."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: If491c4220a77995d0c4247d152b49b0ff3fb0902"},{"line_number":20,"context_line":"Partially-implements: blueprint virtuozzo-cloud-storage-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa32b979_ab8b27c2","line":20,"updated":"2015-06-17 20:27:45.000000000","message":"Why partially-implements here?","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"d4fd1dee8212743b023874c6ac646a89f7b6564e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"in this patch."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: If491c4220a77995d0c4247d152b49b0ff3fb0902"},{"line_number":20,"context_line":"Partially-implements: blueprint virtuozzo-cloud-storage-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa32b979_1c013805","line":20,"in_reply_to":"fa32b979_6601d1ae","updated":"2015-06-17 22:25:07.000000000","message":"Yes, that\u0027s because there are 2 reviews which implement blueprint.","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"6fcfcc45f56e94af82c551dfe4656066c3e0945f","unresolved":false,"context_lines":[{"line_number":17,"context_line":"in this patch."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: If491c4220a77995d0c4247d152b49b0ff3fb0902"},{"line_number":20,"context_line":"Partially-implements: blueprint virtuozzo-cloud-storage-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa32b979_6601d1ae","line":20,"in_reply_to":"fa32b979_ab8b27c2","updated":"2015-06-17 21:06:31.000000000","message":"@Jay, most likely because it also requires an os-brick change.\n\nhttps://review.openstack.org/#/c/188805/","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"}],"cinder/tests/unit/test_vzstorage.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9d7acc55fbf4e56c4d2683d6c3aad22e454b8258","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                             \u0027format\u0027: file_format,"},{"line_number":131,"context_line":"                             \u0027name\u0027: name},"},{"line_number":132,"context_line":"                    \u0027mount_point_base\u0027: self._FAKE_MNT_BASE}"},{"line_number":133,"context_line":"        self.assertEqual(ret, expected)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def test_ensure_share_mounted_invalid_share(self):"},{"line_number":136,"context_line":"        self.assertRaises(exception.VzStorageException,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af86dd1_2746f623","line":133,"updated":"2015-06-12 15:31:29.000000000","message":"Change all assertEqual calls to be (EXPECTED, ACTUAL)","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"c37a04a7903d7d31b84e27835068c7d08b41bf55","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                             \u0027format\u0027: file_format,"},{"line_number":131,"context_line":"                             \u0027name\u0027: name},"},{"line_number":132,"context_line":"                    \u0027mount_point_base\u0027: self._FAKE_MNT_BASE}"},{"line_number":133,"context_line":"        self.assertEqual(ret, expected)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def test_ensure_share_mounted_invalid_share(self):"},{"line_number":136,"context_line":"        self.assertRaises(exception.VzStorageException,"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_d3984b6d","line":133,"in_reply_to":"1af86dd1_2746f623","updated":"2015-06-13 18:09:38.000000000","message":"Done","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"}],"cinder/volume/drivers/vzstorage.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9d7acc55fbf4e56c4d2683d6c3aad22e454b8258","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                     \u0027vzstorage shares.\u0027)),"},{"line_number":55,"context_line":"    cfg.ListOpt(\u0027vzstorage_mount_options\u0027,"},{"line_number":56,"context_line":"                default\u003dNone,"},{"line_number":57,"context_line":"                help\u003d(\u0027Mount options passed to the vzstorage client.\u0027"},{"line_number":58,"context_line":"                      \u0027See section of the pstorage-mount man page \u0027"},{"line_number":59,"context_line":"                      \u0027for details.\u0027)),"},{"line_number":60,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af86dd1_e76fbe90","line":57,"updated":"2015-06-12 15:31:29.000000000","message":"Need trailing space so resulting string isn\u0027t \"client.See\".","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"c37a04a7903d7d31b84e27835068c7d08b41bf55","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                     \u0027vzstorage shares.\u0027)),"},{"line_number":55,"context_line":"    cfg.ListOpt(\u0027vzstorage_mount_options\u0027,"},{"line_number":56,"context_line":"                default\u003dNone,"},{"line_number":57,"context_line":"                help\u003d(\u0027Mount options passed to the vzstorage client.\u0027"},{"line_number":58,"context_line":"                      \u0027See section of the pstorage-mount man page \u0027"},{"line_number":59,"context_line":"                      \u0027for details.\u0027)),"},{"line_number":60,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_937c0322","line":57,"in_reply_to":"1af86dd1_e76fbe90","updated":"2015-06-13 18:09:38.000000000","message":"Done","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9d7acc55fbf4e56c4d2683d6c3aad22e454b8258","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        data \u003d {\u0027export\u0027: volume[\u0027provider_location\u0027],"},{"line_number":111,"context_line":"                \u0027format\u0027: fmt,"},{"line_number":112,"context_line":"                \u0027name\u0027: active_file}"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        return {"},{"line_number":115,"context_line":"            \u0027driver_volume_type\u0027: self.driver_volume_type,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af86dd1_47269269","line":112,"updated":"2015-06-12 15:31:29.000000000","message":"According to guidelines dict definitions longer than 80 characters should have a trailing , with the closing } on the next line.","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"c37a04a7903d7d31b84e27835068c7d08b41bf55","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        data \u003d {\u0027export\u0027: volume[\u0027provider_location\u0027],"},{"line_number":111,"context_line":"                \u0027format\u0027: fmt,"},{"line_number":112,"context_line":"                \u0027name\u0027: active_file}"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        return {"},{"line_number":115,"context_line":"            \u0027driver_volume_type\u0027: self.driver_volume_type,"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_b3790732","line":112,"in_reply_to":"1af86dd1_47269269","updated":"2015-06-13 18:09:38.000000000","message":"Done","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9d7acc55fbf4e56c4d2683d6c3aad22e454b8258","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            LOG.error(msg)"},{"line_number":141,"context_line":"            raise exception.VzStorageException(msg)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        self.shares \u003d {}  # address : options"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        # Check if mount.fuse.pstorage is installed on this system;"},{"line_number":146,"context_line":"        # note that we don\u0027t need to be root to see if the package"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af86dd1_87d36a38","line":143,"updated":"2015-06-12 15:31:29.000000000","message":"What does this comment mean? Is this leftover crud that should be removed?","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"c37a04a7903d7d31b84e27835068c7d08b41bf55","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            LOG.error(msg)"},{"line_number":141,"context_line":"            raise exception.VzStorageException(msg)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        self.shares \u003d {}  # address : options"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        # Check if mount.fuse.pstorage is installed on this system;"},{"line_number":146,"context_line":"        # note that we don\u0027t need to be root to see if the package"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_53767b3f","line":143,"in_reply_to":"1af86dd1_87d36a38","updated":"2015-06-13 18:09:38.000000000","message":"Done","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9d7acc55fbf4e56c4d2683d6c3aad22e454b8258","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                msg \u003d _(\u0027%s is not installed\u0027) % package"},{"line_number":155,"context_line":"                raise exception.VzStorageException(msg)"},{"line_number":156,"context_line":"            else:"},{"line_number":157,"context_line":"                raise exc"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        self.configuration.nas_secure_file_operations \u003d \u0027true\u0027"},{"line_number":160,"context_line":"        self.configuration.nas_secure_file_permissions \u003d \u0027true\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af86dd1_e7e45e0e","line":157,"updated":"2015-06-12 15:31:29.000000000","message":"Should just be \"raise\", not \"raise exc\".","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"c37a04a7903d7d31b84e27835068c7d08b41bf55","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                msg \u003d _(\u0027%s is not installed\u0027) % package"},{"line_number":155,"context_line":"                raise exception.VzStorageException(msg)"},{"line_number":156,"context_line":"            else:"},{"line_number":157,"context_line":"                raise exc"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        self.configuration.nas_secure_file_operations \u003d \u0027true\u0027"},{"line_number":160,"context_line":"        self.configuration.nas_secure_file_permissions \u003d \u0027true\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_73737f4e","line":157,"in_reply_to":"1af86dd1_e7e45e0e","updated":"2015-06-13 18:09:38.000000000","message":"Done","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9d7acc55fbf4e56c4d2683d6c3aad22e454b8258","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    def _ensure_share_mounted(self, share):"},{"line_number":163,"context_line":"        m \u003d re.search(self.SHARE_FORMAT_REGEX, share)"},{"line_number":164,"context_line":"        if not m:"},{"line_number":165,"context_line":"            msg \u003d (_(\"Invalid Virtuozzo Storage share specification: %r.\""},{"line_number":166,"context_line":"                     \"Must be: [MDS1[,MDS2],...:/]\u003cCLUSTER NAME\u003e[:PASSWORD].\")"},{"line_number":167,"context_line":"                   % share)"},{"line_number":168,"context_line":"            raise exception.VzStorageException(msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af86dd1_87ba4ae0","line":165,"updated":"2015-06-12 15:31:29.000000000","message":"Need trailing space so final string doesn\u0027t run together.","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"c37a04a7903d7d31b84e27835068c7d08b41bf55","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    def _ensure_share_mounted(self, share):"},{"line_number":163,"context_line":"        m \u003d re.search(self.SHARE_FORMAT_REGEX, share)"},{"line_number":164,"context_line":"        if not m:"},{"line_number":165,"context_line":"            msg \u003d (_(\"Invalid Virtuozzo Storage share specification: %r.\""},{"line_number":166,"context_line":"                     \"Must be: [MDS1[,MDS2],...:/]\u003cCLUSTER NAME\u003e[:PASSWORD].\")"},{"line_number":167,"context_line":"                   % share)"},{"line_number":168,"context_line":"            raise exception.VzStorageException(msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_138f9324","line":165,"in_reply_to":"1af86dd1_87ba4ae0","updated":"2015-06-13 18:09:38.000000000","message":"Done","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9d7acc55fbf4e56c4d2683d6c3aad22e454b8258","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        used_ratio \u003d self.configuration.vzstorage_used_ratio"},{"line_number":208,"context_line":"        volume_size \u003d volume_size_in_gib * units.Gi"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        total_size, total_available, total_allocated \u003d \\"},{"line_number":211,"context_line":"            self._get_capacity_info(vz_share)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        if (total_allocated + volume_size) / total_size \u003e used_ratio:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af86dd1_87a12aac","line":210,"updated":"2015-06-12 15:31:29.000000000","message":"Use of \\ for line continuation is discouraged. Please put value assignment in () so it can span multiple lines without needing it.","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"c37a04a7903d7d31b84e27835068c7d08b41bf55","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        used_ratio \u003d self.configuration.vzstorage_used_ratio"},{"line_number":208,"context_line":"        volume_size \u003d volume_size_in_gib * units.Gi"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        total_size, total_available, total_allocated \u003d \\"},{"line_number":211,"context_line":"            self._get_capacity_info(vz_share)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        if (total_allocated + volume_size) / total_size \u003e used_ratio:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_33941736","line":210,"in_reply_to":"1af86dd1_87a12aac","updated":"2015-06-13 18:09:38.000000000","message":"Done","commit_id":"8657d96946a1c276232d07ed5bf036276001cf54"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"204dbd8b041b47e20b382a0dac359f30fbcfcc21","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from cinder import utils"},{"line_number":31,"context_line":"from cinder.volume.drivers import remotefs as remotefs_drv"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"VERSION \u003d \u00271.0.0\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_96e20a2e","line":33,"updated":"2015-06-17 20:27:45.000000000","message":"If you are going to have a description of what the versions are.","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"4d192c6358300258768073431bf5b17f291619bf","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from cinder import utils"},{"line_number":31,"context_line":"from cinder.volume.drivers import remotefs as remotefs_drv"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"VERSION \u003d \u00271.0.0\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_2d3961d7","line":33,"in_reply_to":"fa32b979_96e20a2e","updated":"2015-06-18 01:04:29.000000000","message":"Done","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"204dbd8b041b47e20b382a0dac359f30fbcfcc21","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    driver_prefix \u003d \u0027vzstorage\u0027"},{"line_number":69,"context_line":"    volume_backend_name \u003d \u0027Virtuozzo_Storage\u0027"},{"line_number":70,"context_line":"    VERSION \u003d VERSION"},{"line_number":71,"context_line":"    SHARE_FORMAT_REGEX \u003d r\u0027(?:(\\S+):/)?([a-zA-Z0-9_-]+)(?::(\\S+))?\u0027"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __init__(self, execute\u003dputils.execute, *args, **kwargs):"},{"line_number":74,"context_line":"        self._remotefsclient \u003d None"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_915d3417","line":71,"updated":"2015-06-17 20:27:45.000000000","message":"Are you sure this regex is doing what you want? I get a syntax error when running it through regex101.com  It counts the first \u0027/\u0027 as an unescaped delimiter.","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"4d192c6358300258768073431bf5b17f291619bf","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    driver_prefix \u003d \u0027vzstorage\u0027"},{"line_number":69,"context_line":"    volume_backend_name \u003d \u0027Virtuozzo_Storage\u0027"},{"line_number":70,"context_line":"    VERSION \u003d VERSION"},{"line_number":71,"context_line":"    SHARE_FORMAT_REGEX \u003d r\u0027(?:(\\S+):/)?([a-zA-Z0-9_-]+)(?::(\\S+))?\u0027"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __init__(self, execute\u003dputils.execute, *args, **kwargs):"},{"line_number":74,"context_line":"        self._remotefsclient \u003d None"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_ed2e198b","line":71,"in_reply_to":"fa32b979_915d3417","updated":"2015-06-18 01:04:29.000000000","message":"Done","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"d4fd1dee8212743b023874c6ac646a89f7b6564e","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    driver_prefix \u003d \u0027vzstorage\u0027"},{"line_number":69,"context_line":"    volume_backend_name \u003d \u0027Virtuozzo_Storage\u0027"},{"line_number":70,"context_line":"    VERSION \u003d VERSION"},{"line_number":71,"context_line":"    SHARE_FORMAT_REGEX \u003d r\u0027(?:(\\S+):/)?([a-zA-Z0-9_-]+)(?::(\\S+))?\u0027"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __init__(self, execute\u003dputils.execute, *args, **kwargs):"},{"line_number":74,"context_line":"        self._remotefsclient \u003d None"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_3cd75c4c","line":71,"in_reply_to":"fa32b979_915d3417","updated":"2015-06-17 22:25:07.000000000","message":"Python allows using unescaped /, so it works, I\u0027ll add \\ in the next patch.","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"204dbd8b041b47e20b382a0dac359f30fbcfcc21","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        config \u003d self.configuration.vzstorage_shares_config"},{"line_number":126,"context_line":"        if not os.path.exists(config):"},{"line_number":127,"context_line":"            msg \u003d (_(\"VzStorage config file at %(config)s doesn\u0027t exist\") %"},{"line_number":128,"context_line":"                   {\u0027config\u0027: config})"},{"line_number":129,"context_line":"            LOG.warning(msg)"},{"line_number":130,"context_line":"            raise exception.VzStorageException(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_b1df1868","line":127,"updated":"2015-06-17 20:27:45.000000000","message":"\u0027.\u0027 at EOL","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"4d192c6358300258768073431bf5b17f291619bf","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        config \u003d self.configuration.vzstorage_shares_config"},{"line_number":126,"context_line":"        if not os.path.exists(config):"},{"line_number":127,"context_line":"            msg \u003d (_(\"VzStorage config file at %(config)s doesn\u0027t exist\") %"},{"line_number":128,"context_line":"                   {\u0027config\u0027: config})"},{"line_number":129,"context_line":"            LOG.warning(msg)"},{"line_number":130,"context_line":"            raise exception.VzStorageException(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_ad533116","line":127,"in_reply_to":"fa32b979_b1df1868","updated":"2015-06-18 01:04:29.000000000","message":"Done","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"204dbd8b041b47e20b382a0dac359f30fbcfcc21","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        if not os.path.exists(config):"},{"line_number":127,"context_line":"            msg \u003d (_(\"VzStorage config file at %(config)s doesn\u0027t exist\") %"},{"line_number":128,"context_line":"                   {\u0027config\u0027: config})"},{"line_number":129,"context_line":"            LOG.warning(msg)"},{"line_number":130,"context_line":"            raise exception.VzStorageException(msg)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        if not os.path.isabs(self.base):"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_71bc3006","line":129,"updated":"2015-06-17 20:27:45.000000000","message":"LOG.warning with an exception is not the convention.  Should do LOG.error.","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"4d192c6358300258768073431bf5b17f291619bf","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        if not os.path.exists(config):"},{"line_number":127,"context_line":"            msg \u003d (_(\"VzStorage config file at %(config)s doesn\u0027t exist\") %"},{"line_number":128,"context_line":"                   {\u0027config\u0027: config})"},{"line_number":129,"context_line":"            LOG.warning(msg)"},{"line_number":130,"context_line":"            raise exception.VzStorageException(msg)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        if not os.path.isabs(self.base):"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_4d562507","line":129,"in_reply_to":"fa32b979_71bc3006","updated":"2015-06-18 01:04:29.000000000","message":"Done","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"5730e4290ed9ee4a0cd4fbb6a7b99fa8527c0058","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            raise exception.VzStorageException(msg)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        if not os.path.isabs(self.base):"},{"line_number":133,"context_line":"            msg \u003d _(\"Invalid mount point base: %s\") % self.base"},{"line_number":134,"context_line":"            LOG.error(msg)"},{"line_number":135,"context_line":"            raise exception.VzStorageException(msg)"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_5c7580f7","line":133,"updated":"2015-06-17 21:57:00.000000000","message":"\".\" at the end please.","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"4d192c6358300258768073431bf5b17f291619bf","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            raise exception.VzStorageException(msg)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        if not os.path.isabs(self.base):"},{"line_number":133,"context_line":"            msg \u003d _(\"Invalid mount point base: %s\") % self.base"},{"line_number":134,"context_line":"            LOG.error(msg)"},{"line_number":135,"context_line":"            raise exception.VzStorageException(msg)"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_6d59a934","line":133,"in_reply_to":"fa32b979_5c7580f7","updated":"2015-06-18 01:04:29.000000000","message":"Done","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"5730e4290ed9ee4a0cd4fbb6a7b99fa8527c0058","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                          run_as_root\u003dFalse)"},{"line_number":153,"context_line":"        except OSError as exc:"},{"line_number":154,"context_line":"            if exc.errno \u003d\u003d errno.ENOENT:"},{"line_number":155,"context_line":"                msg \u003d _(\u0027%s is not installed\u0027) % package"},{"line_number":156,"context_line":"                raise exception.VzStorageException(msg)"},{"line_number":157,"context_line":"            else:"},{"line_number":158,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_dc575058","line":155,"updated":"2015-06-17 21:57:00.000000000","message":"\".\" at the end please.","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"4d192c6358300258768073431bf5b17f291619bf","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                          run_as_root\u003dFalse)"},{"line_number":153,"context_line":"        except OSError as exc:"},{"line_number":154,"context_line":"            if exc.errno \u003d\u003d errno.ENOENT:"},{"line_number":155,"context_line":"                msg \u003d _(\u0027%s is not installed\u0027) % package"},{"line_number":156,"context_line":"                raise exception.VzStorageException(msg)"},{"line_number":157,"context_line":"            else:"},{"line_number":158,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_0d457d44","line":155,"in_reply_to":"fa32b979_dc575058","updated":"2015-06-18 01:04:29.000000000","message":"Done","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"204dbd8b041b47e20b382a0dac359f30fbcfcc21","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            raise exception.VzStorageException(msg)"},{"line_number":170,"context_line":"        cluster_name \u003d m.group(2)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        mnt_flags \u003d [\u0027-l\u0027, \u0027/var/log/pstorage/%s/cinder.log.gz\u0027 % cluster_name]"},{"line_number":173,"context_line":"        if self.shares.get(share) is not None:"},{"line_number":174,"context_line":"            extra_flags \u003d json.loads(self.shares[share])"},{"line_number":175,"context_line":"            mnt_flags.extend(extra_flags)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_f1a8408e","line":172,"updated":"2015-06-17 20:27:45.000000000","message":"What is this!?!  Why do you have a log file in the mount flags?  Can you at least provide a comment explaining?  Thanks!","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"4d192c6358300258768073431bf5b17f291619bf","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            raise exception.VzStorageException(msg)"},{"line_number":170,"context_line":"        cluster_name \u003d m.group(2)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        mnt_flags \u003d [\u0027-l\u0027, \u0027/var/log/pstorage/%s/cinder.log.gz\u0027 % cluster_name]"},{"line_number":173,"context_line":"        if self.shares.get(share) is not None:"},{"line_number":174,"context_line":"            extra_flags \u003d json.loads(self.shares[share])"},{"line_number":175,"context_line":"            mnt_flags.extend(extra_flags)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_2d408133","line":172,"in_reply_to":"fa32b979_f1a8408e","updated":"2015-06-18 01:04:29.000000000","message":"Done","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"d4fd1dee8212743b023874c6ac646a89f7b6564e","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            raise exception.VzStorageException(msg)"},{"line_number":170,"context_line":"        cluster_name \u003d m.group(2)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        mnt_flags \u003d [\u0027-l\u0027, \u0027/var/log/pstorage/%s/cinder.log.gz\u0027 % cluster_name]"},{"line_number":173,"context_line":"        if self.shares.get(share) is not None:"},{"line_number":174,"context_line":"            extra_flags \u003d json.loads(self.shares[share])"},{"line_number":175,"context_line":"            mnt_flags.extend(extra_flags)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_57fa3944","line":172,"in_reply_to":"fa32b979_f1a8408e","updated":"2015-06-17 22:25:07.000000000","message":"It\u0027s a fuse mount (with some optimizations, here are slides, describing them - http://events.linuxfoundation.org/sites/events/files/slides/MPatlasov_Optimizing_FUSE_for_Cloud_Storage_0.pdf ). So pstorage-mount command runs userspace process, which writes log file for troubleshooting. Each mount need its own log file, and there is a default path. I\u0027m setting non-default path, so that user will be able to mount the same cluster with default options (for troubleshooting for example).","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"6fcfcc45f56e94af82c551dfe4656066c3e0945f","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            mnt_flags.extend(extra_flags)"},{"line_number":176,"context_line":"        self._remotefsclient.mount(share, mnt_flags)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def _find_share(self, volume_size_in_gib):"},{"line_number":179,"context_line":"        \"\"\"Choose VzStorage share among available ones for given volume size."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        For instances with more than one share that meets the criteria, the"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_86bf35a9","line":178,"updated":"2015-06-17 21:06:31.000000000","message":"I don\u0027t see this being used anywhere?","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"d4fd1dee8212743b023874c6ac646a89f7b6564e","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            mnt_flags.extend(extra_flags)"},{"line_number":176,"context_line":"        self._remotefsclient.mount(share, mnt_flags)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def _find_share(self, volume_size_in_gib):"},{"line_number":179,"context_line":"        \"\"\"Choose VzStorage share among available ones for given volume size."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        For instances with more than one share that meets the criteria, the"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_376a15ef","line":178,"in_reply_to":"fa32b979_86bf35a9","updated":"2015-06-17 22:25:07.000000000","message":"It\u0027s used in RemoteFSDriver and RemoteFSSnapDriver classes from which this one is derived.","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"5730e4290ed9ee4a0cd4fbb6a7b99fa8527c0058","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            mnt_flags.extend(extra_flags)"},{"line_number":176,"context_line":"        self._remotefsclient.mount(share, mnt_flags)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def _find_share(self, volume_size_in_gib):"},{"line_number":179,"context_line":"        \"\"\"Choose VzStorage share among available ones for given volume size."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        For instances with more than one share that meets the criteria, the"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_1c97f8ec","line":178,"in_reply_to":"fa32b979_86bf35a9","updated":"2015-06-17 21:57:00.000000000","message":"Probably needed by parent RemoteFs*Driver","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"204dbd8b041b47e20b382a0dac359f30fbcfcc21","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        total_size, available, allocated \u003d self._get_capacity_info(vz_share)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        if (allocated + volume_size) / total_size \u003e used_ratio:"},{"line_number":214,"context_line":"            LOG.debug(\u0027%s is above vzstorage_used_ratio\u0027, vz_share)"},{"line_number":215,"context_line":"            return False"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_91bf74a9","line":214,"updated":"2015-06-17 20:27:45.000000000","message":"Would help to have some context as to where this message is coming from.  also \u0027.\u0027 at EOL.","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"4d192c6358300258768073431bf5b17f291619bf","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        total_size, available, allocated \u003d self._get_capacity_info(vz_share)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        if (allocated + volume_size) / total_size \u003e used_ratio:"},{"line_number":214,"context_line":"            LOG.debug(\u0027%s is above vzstorage_used_ratio\u0027, vz_share)"},{"line_number":215,"context_line":"            return False"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_cd4a3555","line":214,"in_reply_to":"fa32b979_91bf74a9","updated":"2015-06-18 01:04:29.000000000","message":"Done","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"204dbd8b041b47e20b382a0dac359f30fbcfcc21","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        qcow2."},{"line_number":268,"context_line":"        \"\"\""},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        LOG.debug(\"Snapshot: %(snap)s, volume: %(vol)s, \""},{"line_number":271,"context_line":"                  \"volume_size: %(size)s\","},{"line_number":272,"context_line":"                  {\u0027snap\u0027: snapshot[\u0027id\u0027],"},{"line_number":273,"context_line":"                   \u0027vol\u0027: volume[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_f132805d","line":270,"updated":"2015-06-17 20:27:45.000000000","message":"Again some context here that you are in copy_volume_from_snapshot .","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"4d192c6358300258768073431bf5b17f291619bf","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        qcow2."},{"line_number":268,"context_line":"        \"\"\""},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        LOG.debug(\"Snapshot: %(snap)s, volume: %(vol)s, \""},{"line_number":271,"context_line":"                  \"volume_size: %(size)s\","},{"line_number":272,"context_line":"                  {\u0027snap\u0027: snapshot[\u0027id\u0027],"},{"line_number":273,"context_line":"                   \u0027vol\u0027: volume[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_ed45b942","line":270,"in_reply_to":"fa32b979_f132805d","updated":"2015-06-18 01:04:29.000000000","message":"Done","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"204dbd8b041b47e20b382a0dac359f30fbcfcc21","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                                       snapshot[\u0027volume\u0027][\u0027name\u0027])"},{"line_number":289,"context_line":"        path_to_snap_img \u003d os.path.join(vol_dir, img_info.backing_file)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        LOG.debug(\"Will copy from snapshot at %s\", path_to_snap_img)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        image_utils.convert_image(path_to_snap_img,"},{"line_number":294,"context_line":"                                  self.local_path(volume),"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_d16c1c37","line":291,"updated":"2015-06-17 20:27:45.000000000","message":"\u0027.\u0027 at EOL","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"4d192c6358300258768073431bf5b17f291619bf","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                                       snapshot[\u0027volume\u0027][\u0027name\u0027])"},{"line_number":289,"context_line":"        path_to_snap_img \u003d os.path.join(vol_dir, img_info.backing_file)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        LOG.debug(\"Will copy from snapshot at %s\", path_to_snap_img)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        image_utils.convert_image(path_to_snap_img,"},{"line_number":294,"context_line":"                                  self.local_path(volume),"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_8d774d9f","line":291,"in_reply_to":"fa32b979_d16c1c37","updated":"2015-06-18 01:04:29.000000000","message":"Done","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"5730e4290ed9ee4a0cd4fbb6a7b99fa8527c0058","unresolved":false,"context_lines":[{"line_number":301,"context_line":"        if not volume[\u0027provider_location\u0027]:"},{"line_number":302,"context_line":"            LOG.warning(_LW(\u0027Volume %s does not have provider_location \u0027"},{"line_number":303,"context_line":"                            \u0027specified, skipping.\u0027), volume[\u0027name\u0027])"},{"line_number":304,"context_line":"            return"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        self._ensure_share_mounted(volume[\u0027provider_location\u0027])"},{"line_number":307,"context_line":"        volume_dir \u003d self._local_volume_dir(volume)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_dcfbd079","line":304,"updated":"2015-06-17 21:57:00.000000000","message":"Should this case raise an Exception? Just by \"return\" you may falsely indicating that the delete operation succeeded.","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"4d192c6358300258768073431bf5b17f291619bf","unresolved":false,"context_lines":[{"line_number":301,"context_line":"        if not volume[\u0027provider_location\u0027]:"},{"line_number":302,"context_line":"            LOG.warning(_LW(\u0027Volume %s does not have provider_location \u0027"},{"line_number":303,"context_line":"                            \u0027specified, skipping.\u0027), volume[\u0027name\u0027])"},{"line_number":304,"context_line":"            return"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        self._ensure_share_mounted(volume[\u0027provider_location\u0027])"},{"line_number":307,"context_line":"        volume_dir \u003d self._local_volume_dir(volume)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_ad7a5186","line":304,"in_reply_to":"fa32b979_dcfbd079","updated":"2015-06-18 01:04:29.000000000","message":"Done","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"d089755b0d3621f2b584d38a6ee38f15c28d5a7a","unresolved":false,"context_lines":[{"line_number":301,"context_line":"        if not volume[\u0027provider_location\u0027]:"},{"line_number":302,"context_line":"            LOG.warning(_LW(\u0027Volume %s does not have provider_location \u0027"},{"line_number":303,"context_line":"                            \u0027specified, skipping.\u0027), volume[\u0027name\u0027])"},{"line_number":304,"context_line":"            return"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        self._ensure_share_mounted(volume[\u0027provider_location\u0027])"},{"line_number":307,"context_line":"        volume_dir \u003d self._local_volume_dir(volume)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_f2a7db08","line":304,"in_reply_to":"fa32b979_dcfbd079","updated":"2015-06-17 22:28:10.000000000","message":"Glusterfs and smbfs drivers do the same thing. I can change it to raising an exception.","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"4d192c6358300258768073431bf5b17f291619bf","unresolved":false,"context_lines":[{"line_number":301,"context_line":"        if not volume[\u0027provider_location\u0027]:"},{"line_number":302,"context_line":"            LOG.warning(_LW(\u0027Volume %s does not have provider_location \u0027"},{"line_number":303,"context_line":"                            \u0027specified, skipping.\u0027), volume[\u0027name\u0027])"},{"line_number":304,"context_line":"            return"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        self._ensure_share_mounted(volume[\u0027provider_location\u0027])"},{"line_number":307,"context_line":"        volume_dir \u003d self._local_volume_dir(volume)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_4d6dc5ca","line":304,"in_reply_to":"fa32b979_f2a7db08","updated":"2015-06-18 01:04:29.000000000","message":"Done","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"204dbd8b041b47e20b382a0dac359f30fbcfcc21","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        if os.path.exists(mounted_path):"},{"line_number":311,"context_line":"            self._delete(mounted_path)"},{"line_number":312,"context_line":"        else:"},{"line_number":313,"context_line":"            LOG.debug(\"Skipping deletion of volume %s as it does not exist.\","},{"line_number":314,"context_line":"                      mounted_path)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        info_path \u003d self._local_path_volume_info(volume)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_11d4c4ba","line":313,"updated":"2015-06-17 20:27:45.000000000","message":"This might be good as a LOG.info","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"},{"author":{"_account_id":12661,"name":"Dmitry Guryanov","email":"dmitry.guryanov@gmail.com","username":"dguryanov"},"change_message_id":"4d192c6358300258768073431bf5b17f291619bf","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        if os.path.exists(mounted_path):"},{"line_number":311,"context_line":"            self._delete(mounted_path)"},{"line_number":312,"context_line":"        else:"},{"line_number":313,"context_line":"            LOG.debug(\"Skipping deletion of volume %s as it does not exist.\","},{"line_number":314,"context_line":"                      mounted_path)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        info_path \u003d self._local_path_volume_info(volume)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_6d70c9a4","line":313,"in_reply_to":"fa32b979_11d4c4ba","updated":"2015-06-18 01:04:29.000000000","message":"Done","commit_id":"83316b1d4d58706226ef89b00bc7ceab0fb3d0c7"}]}
