)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b1a552592b089b5892492e9b813085fd2ac9fd85","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     sarat inuguri \u003csaratinuguri@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-12-12 17:27:49 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implementation of Cinder driver for Veritas Access."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This driver implements all the minimum required features for cinder."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a6eadb0_c2bee5fe","line":7,"range":{"start_line":7,"start_character":50,"end_line":7,"end_character":51},"updated":"2016-12-13 04:10:18.000000000","message":"Remove ending period from the summary line.","commit_id":"2d75fed3d962db5b8d742949eb0256bb31146e0a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"58d0bd776f5641b175475be647b46c58094b6372","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     mayurindalkar \u003cmayur.indalkar@veritas.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-05-05 17:38:29 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implementation of Cinder driver for Veritas Access."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This driver implements all the minimum required features for cinder."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"3f044301_ed3f1cd4","line":7,"range":{"start_line":7,"start_character":50,"end_line":7,"end_character":51},"updated":"2017-05-05 12:49:04.000000000","message":"nit: remove period from end of summary line.","commit_id":"385e1b03fca750aaa962b827c44abcedfda69ee8"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"15512933ba750d99313bc626f3f095bfdc65727e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     mayurindalkar \u003cmayur.indalkar@veritas.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-05-05 17:38:29 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implementation of Cinder driver for Veritas Access."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This driver implements all the minimum required features for cinder."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"3f044301_05b44d34","line":7,"range":{"start_line":7,"start_character":50,"end_line":7,"end_character":51},"in_reply_to":"3f044301_ed3f1cd4","updated":"2017-05-23 06:04:00.000000000","message":"Done","commit_id":"385e1b03fca750aaa962b827c44abcedfda69ee8"}],"cinder/releasenotes/notes/veritas_access_driver-c73b2320ba9f46a8.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3c6558b4374adc0bc6ad65e8c3183c1323bf5b70","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added NFS based driver for Veritas Access."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"fa31d9ce_c448d6ce","line":1,"updated":"2017-02-15 16:38:35.000000000","message":"This file is in the wrong location. Please add it to the releasenotes directory at the base of the repo.","commit_id":"7c0a06fc0be23b975d4a80e855e5bca1412eaf54"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"58d0bd776f5641b175475be647b46c58094b6372","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added NFS based driver for Veritas Access."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"3f044301_2d362405","line":1,"updated":"2017-05-05 12:49:04.000000000","message":"This file is in the wrong location. It should be moved to the releasenotes directory tree under the root of the repo.","commit_id":"385e1b03fca750aaa962b827c44abcedfda69ee8"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"15512933ba750d99313bc626f3f095bfdc65727e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added NFS based driver for Veritas Access."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"3f044301_728d0330","line":1,"in_reply_to":"3f044301_2d362405","updated":"2017-05-23 06:04:00.000000000","message":"Done","commit_id":"385e1b03fca750aaa962b827c44abcedfda69ee8"}],"cinder/tests/unit/volume/drivers/test_veritas_cnfs.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d17265de022f22829ae53b866fc4bf7446328c66","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2016 Veritas Technologies LLC"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff0f0b1f_2baa91d1","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2017-05-19 03:22:54.000000000","message":"2017","commit_id":"43457d4476e4d20a17e9fca5a2ee1ba9f4d5487e"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"00bcc2b422abe47d12c86da564f804c7edf365ff","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2016 Veritas Technologies LLC"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff0f0b1f_74a72151","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"ff0f0b1f_2baa91d1","updated":"2017-05-23 05:57:50.000000000","message":"Done","commit_id":"43457d4476e4d20a17e9fca5a2ee1ba9f4d5487e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d17265de022f22829ae53b866fc4bf7446328c66","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        m_ensure_share_mounted(self._loc).AndReturn(None)"},{"line_number":157,"context_line":"        m_local_path(snapshot).AndReturn(self.TEST_SNAP_LOCAL_PATH)"},{"line_number":158,"context_line":"        with mock.patch.object(drv, \u0027_execute\u0027):"},{"line_number":159,"context_line":"            drv.delete_snapshot(snapshot)"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff0f0b1f_2bd8517d","line":159,"updated":"2017-05-19 03:22:54.000000000","message":"Can you add a test for extend_volume?","commit_id":"43457d4476e4d20a17e9fca5a2ee1ba9f4d5487e"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"00bcc2b422abe47d12c86da564f804c7edf365ff","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        m_ensure_share_mounted(self._loc).AndReturn(None)"},{"line_number":157,"context_line":"        m_local_path(snapshot).AndReturn(self.TEST_SNAP_LOCAL_PATH)"},{"line_number":158,"context_line":"        with mock.patch.object(drv, \u0027_execute\u0027):"},{"line_number":159,"context_line":"            drv.delete_snapshot(snapshot)"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff0f0b1f_146ea500","line":159,"in_reply_to":"ff0f0b1f_2bd8517d","updated":"2017-05-23 05:57:50.000000000","message":"Done","commit_id":"43457d4476e4d20a17e9fca5a2ee1ba9f4d5487e"}],"cinder/volume/drivers/veritas_cnfs.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b1a552592b089b5892492e9b813085fd2ac9fd85","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class VeritasCNFSDriver(nfs.NfsDriver):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    \"\"\"Veritas Clustered NFS based cinder driver."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6eadb0_622511aa","line":27,"updated":"2016-12-13 04:10:18.000000000","message":"Needs to have cinder.interface.volumedriver decorator.","commit_id":"2d75fed3d962db5b8d742949eb0256bb31146e0a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b1a552592b089b5892492e9b813085fd2ac9fd85","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    Executes commands relating to Volumes."},{"line_number":32,"context_line":"    \"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    VERSION \u003d \"1.0.0\""},{"line_number":35,"context_line":"    driver_volume_type \u003d \u0027nfs\u0027"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6eadb0_82686dbc","line":34,"updated":"2016-12-13 04:10:18.000000000","message":"Also need to have a constant  CI_WIKI_NAME that gives the name of the wiki page for this driver\u0027s CI on the Third Party page.\n\nhttps://wiki.openstack.org/wiki/ThirdPartySystems","commit_id":"2d75fed3d962db5b8d742949eb0256bb31146e0a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b1a552592b089b5892492e9b813085fd2ac9fd85","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        opts \u003d self.configuration.nfs_mount_options"},{"line_number":49,"context_line":"        if not opts or opts.find(\u0027vers\u003d3\u0027) \u003d\u003d -1 or ("},{"line_number":50,"context_line":"           opts.find(\u0027nfsvers\u003d3\u0027)) \u003d\u003d -1:"},{"line_number":51,"context_line":"            msg \u003d _LE(\"NFS is not configured to use NFSv3\")"},{"line_number":52,"context_line":"            LOG.error(msg)"},{"line_number":53,"context_line":"            raise exception.NfsException(msg)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6eadb0_c26265d8","line":51,"range":{"start_line":51,"start_character":18,"end_line":51,"end_character":21},"updated":"2016-12-13 04:10:18.000000000","message":"Since this is being used for both the logging and the exception this needs the _() translation marker.","commit_id":"2d75fed3d962db5b8d742949eb0256bb31146e0a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b1a552592b089b5892492e9b813085fd2ac9fd85","unresolved":false,"context_lines":[{"line_number":50,"context_line":"           opts.find(\u0027nfsvers\u003d3\u0027)) \u003d\u003d -1:"},{"line_number":51,"context_line":"            msg \u003d _LE(\"NFS is not configured to use NFSv3\")"},{"line_number":52,"context_line":"            LOG.error(msg)"},{"line_number":53,"context_line":"            raise exception.NfsException(msg)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":56,"context_line":"        \"\"\"Creates a volume from snapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6eadb0_a293a9a2","line":53,"range":{"start_line":53,"start_character":28,"end_line":53,"end_character":40},"updated":"2016-12-13 04:10:18.000000000","message":"This should be a VolumeBackendAPIException","commit_id":"2d75fed3d962db5b8d742949eb0256bb31146e0a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b1a552592b089b5892492e9b813085fd2ac9fd85","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":79,"context_line":"        \"\"\"Delete a snapshot.\"\"\""},{"line_number":80,"context_line":"        if not snapshot[\u0027provider_location\u0027]:"},{"line_number":81,"context_line":"            msg \u003d (_(\u0027Snapshot %s does not have provider_location specified, \u0027"},{"line_number":82,"context_line":"                   \u0027skipping\u0027), snapshot[\u0027name\u0027])"},{"line_number":83,"context_line":"            LOG.warning(msg)"},{"line_number":84,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6eadb0_22eeb922","line":81,"range":{"start_line":81,"start_character":19,"end_line":81,"end_character":20},"updated":"2016-12-13 04:10:18.000000000","message":"_LW()","commit_id":"2d75fed3d962db5b8d742949eb0256bb31146e0a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b1a552592b089b5892492e9b813085fd2ac9fd85","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                  src_vol_path, tgt_vol_path, tgt_vol_path_spl)"},{"line_number":108,"context_line":"        if not os.path.exists(tgt_vol_path):"},{"line_number":109,"context_line":"            self._execute(\u0027rm\u0027, \u0027-f\u0027, tgt_vol_path_spl, run_as_root\u003dTrue)"},{"line_number":110,"context_line":"            msg \u003d _LE(\"Filesnap over NFS is not supported, \""},{"line_number":111,"context_line":"                      \"removing the ::snap:vxfs: file\")"},{"line_number":112,"context_line":"            LOG.error(msg)"},{"line_number":113,"context_line":"            raise exception.NfsException(msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6eadb0_a2dac976","line":110,"range":{"start_line":110,"start_character":18,"end_line":110,"end_character":21},"updated":"2016-12-13 04:10:18.000000000","message":"_()","commit_id":"2d75fed3d962db5b8d742949eb0256bb31146e0a"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"9e7fe9c5d81b8d2e979ebf734169959b155a9ab5","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        vol_name \u003d volume[\u0027name\u0027]"},{"line_number":60,"context_line":"        snap_name \u003d snapshot[\u0027name\u0027]"},{"line_number":61,"context_line":"        LOG.debug(\"VeritasNFSDriver create_volume_from_snapshot called \""},{"line_number":62,"context_line":"                  \"vol_name %r snap_name %r\", vol_name, snap_name)"},{"line_number":63,"context_line":"        self._do_clone_volume(snapshot, snap_name, volume)"},{"line_number":64,"context_line":"        return {\u0027provider_location\u0027: volume[\u0027provider_location\u0027]}"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_45a64dc2","line":62,"range":{"start_line":62,"start_character":65,"end_line":62,"end_character":66},"updated":"2016-12-13 12:10:53.000000000","message":"better to use named interpolation instead of positional.\nhttp://docs.openstack.org/developer/oslo.i18n/guidelines.html","commit_id":"4d71e9a8ad59b70ac77cb7718eee7e811d41f6ef"},{"author":{"_account_id":12832,"name":"saratinuguri","email":"saratinuguri@gmail.com","username":"sinuguri"},"change_message_id":"184f145622ef036f876ceecc110f9e677914053a","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        vol_name \u003d volume[\u0027name\u0027]"},{"line_number":60,"context_line":"        snap_name \u003d snapshot[\u0027name\u0027]"},{"line_number":61,"context_line":"        LOG.debug(\"VeritasNFSDriver create_volume_from_snapshot called \""},{"line_number":62,"context_line":"                  \"vol_name %r snap_name %r\", vol_name, snap_name)"},{"line_number":63,"context_line":"        self._do_clone_volume(snapshot, snap_name, volume)"},{"line_number":64,"context_line":"        return {\u0027provider_location\u0027: volume[\u0027provider_location\u0027]}"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_6a03ff42","line":62,"range":{"start_line":62,"start_character":65,"end_line":62,"end_character":66},"in_reply_to":"1a6eadb0_45a64dc2","updated":"2016-12-13 19:20:42.000000000","message":"This is a debug message and will not be translated, right? In that case should it matter?","commit_id":"4d71e9a8ad59b70ac77cb7718eee7e811d41f6ef"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"126ef5a44f16cc8a0e5c3d5ec3aa24b4a87d1377","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        vol_name \u003d volume[\u0027name\u0027]"},{"line_number":60,"context_line":"        snap_name \u003d snapshot[\u0027name\u0027]"},{"line_number":61,"context_line":"        LOG.debug(\"VeritasNFSDriver create_volume_from_snapshot called \""},{"line_number":62,"context_line":"                  \"vol_name %r snap_name %r\", vol_name, snap_name)"},{"line_number":63,"context_line":"        self._do_clone_volume(snapshot, snap_name, volume)"},{"line_number":64,"context_line":"        return {\u0027provider_location\u0027: volume[\u0027provider_location\u0027]}"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_d59bd470","line":62,"range":{"start_line":62,"start_character":65,"end_line":62,"end_character":66},"in_reply_to":"1a6eadb0_6a03ff42","updated":"2016-12-13 19:29:53.000000000","message":"It doesn\u0027t really have anything to do with translation. It\u0027s more to do with readability and having explicit naming of multiple values.","commit_id":"4d71e9a8ad59b70ac77cb7718eee7e811d41f6ef"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"9e7fe9c5d81b8d2e979ebf734169959b155a9ab5","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":71,"context_line":"        \"\"\"Create a snapshot of the volume.\"\"\""},{"line_number":72,"context_line":"        src_vol_id \u003d snapshot[\u0027volume_id\u0027]"},{"line_number":73,"context_line":"        src_vol_name \u003d snapshot[\u0027volume_name\u0027]"},{"line_number":74,"context_line":"        src_vol \u003d self._volid_to_vol(src_vol_id)"},{"line_number":75,"context_line":"        self._do_clone_volume(src_vol, src_vol_name, snapshot)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_25ddd114","line":72,"range":{"start_line":72,"start_character":40,"end_line":72,"end_character":42},"updated":"2016-12-13 12:10:53.000000000","message":"better to use objects based reference like snapshot.volume_id, volume.id etc","commit_id":"4d71e9a8ad59b70ac77cb7718eee7e811d41f6ef"},{"author":{"_account_id":12832,"name":"saratinuguri","email":"saratinuguri@gmail.com","username":"sinuguri"},"change_message_id":"184f145622ef036f876ceecc110f9e677914053a","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":71,"context_line":"        \"\"\"Create a snapshot of the volume.\"\"\""},{"line_number":72,"context_line":"        src_vol_id \u003d snapshot[\u0027volume_id\u0027]"},{"line_number":73,"context_line":"        src_vol_name \u003d snapshot[\u0027volume_name\u0027]"},{"line_number":74,"context_line":"        src_vol \u003d self._volid_to_vol(src_vol_id)"},{"line_number":75,"context_line":"        self._do_clone_volume(src_vol, src_vol_name, snapshot)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_8a085b2f","line":72,"range":{"start_line":72,"start_character":40,"end_line":72,"end_character":42},"in_reply_to":"1a6eadb0_25ddd114","updated":"2016-12-13 19:20:42.000000000","message":"Any reason for doing that? This way provides better readability to me.","commit_id":"4d71e9a8ad59b70ac77cb7718eee7e811d41f6ef"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"aa1bdc04d45a889c072bb19e1572ba60eb36c57c","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":71,"context_line":"        \"\"\"Create a snapshot of the volume.\"\"\""},{"line_number":72,"context_line":"        src_vol_id \u003d snapshot[\u0027volume_id\u0027]"},{"line_number":73,"context_line":"        src_vol_name \u003d snapshot[\u0027volume_name\u0027]"},{"line_number":74,"context_line":"        src_vol \u003d self._volid_to_vol(src_vol_id)"},{"line_number":75,"context_line":"        self._do_clone_volume(src_vol, src_vol_name, snapshot)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_761cb713","line":72,"range":{"start_line":72,"start_character":40,"end_line":72,"end_character":42},"in_reply_to":"1a6eadb0_5dd526b7","updated":"2016-12-14 05:42:02.000000000","message":"If cores are happy, then I have no issue.","commit_id":"4d71e9a8ad59b70ac77cb7718eee7e811d41f6ef"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"3055232c186974ed15d00ac895018428e0f3bf1c","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":71,"context_line":"        \"\"\"Create a snapshot of the volume.\"\"\""},{"line_number":72,"context_line":"        src_vol_id \u003d snapshot[\u0027volume_id\u0027]"},{"line_number":73,"context_line":"        src_vol_name \u003d snapshot[\u0027volume_name\u0027]"},{"line_number":74,"context_line":"        src_vol \u003d self._volid_to_vol(src_vol_id)"},{"line_number":75,"context_line":"        self._do_clone_volume(src_vol, src_vol_name, snapshot)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_c41b271a","line":72,"range":{"start_line":72,"start_character":40,"end_line":72,"end_character":42},"in_reply_to":"1a6eadb0_8a085b2f","updated":"2016-12-13 20:21:13.000000000","message":"Please refer the following link:\nhttps://specs.openstack.org/openstack/cinder-specs/specs/kilo/cinder-objects.html","commit_id":"4d71e9a8ad59b70ac77cb7718eee7e811d41f6ef"},{"author":{"_account_id":12832,"name":"saratinuguri","email":"saratinuguri@gmail.com","username":"sinuguri"},"change_message_id":"e7f1fa812a5092e1d3cb258454025769efad901d","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":71,"context_line":"        \"\"\"Create a snapshot of the volume.\"\"\""},{"line_number":72,"context_line":"        src_vol_id \u003d snapshot[\u0027volume_id\u0027]"},{"line_number":73,"context_line":"        src_vol_name \u003d snapshot[\u0027volume_name\u0027]"},{"line_number":74,"context_line":"        src_vol \u003d self._volid_to_vol(src_vol_id)"},{"line_number":75,"context_line":"        self._do_clone_volume(src_vol, src_vol_name, snapshot)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_5dd526b7","line":72,"range":{"start_line":72,"start_character":40,"end_line":72,"end_character":42},"in_reply_to":"1a6eadb0_c41b271a","updated":"2016-12-13 22:08:17.000000000","message":"Thanks Nikesh. Is this something that needs to be done now? considering the deadline for new drivers, can we plan to work on this after the initial check-in?","commit_id":"4d71e9a8ad59b70ac77cb7718eee7e811d41f6ef"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"9e7fe9c5d81b8d2e979ebf734169959b155a9ab5","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        src_vol_name \u003d snapshot[\u0027volume_name\u0027]"},{"line_number":74,"context_line":"        src_vol \u003d self._volid_to_vol(src_vol_id)"},{"line_number":75,"context_line":"        self._do_clone_volume(src_vol, src_vol_name, snapshot)"},{"line_number":76,"context_line":"        LOG.debug(\"VeritasNFSDriver create_snapshot %r\","},{"line_number":77,"context_line":"                  snapshot[\u0027provider_location\u0027])"},{"line_number":78,"context_line":"        return {\u0027provider_location\u0027: snapshot[\u0027provider_location\u0027]}"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_e5dbd919","line":76,"updated":"2016-12-13 12:10:53.000000000","message":"what is %r used for?","commit_id":"4d71e9a8ad59b70ac77cb7718eee7e811d41f6ef"},{"author":{"_account_id":12832,"name":"saratinuguri","email":"saratinuguri@gmail.com","username":"sinuguri"},"change_message_id":"184f145622ef036f876ceecc110f9e677914053a","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        src_vol_name \u003d snapshot[\u0027volume_name\u0027]"},{"line_number":74,"context_line":"        src_vol \u003d self._volid_to_vol(src_vol_id)"},{"line_number":75,"context_line":"        self._do_clone_volume(src_vol, src_vol_name, snapshot)"},{"line_number":76,"context_line":"        LOG.debug(\"VeritasNFSDriver create_snapshot %r\","},{"line_number":77,"context_line":"                  snapshot[\u0027provider_location\u0027])"},{"line_number":78,"context_line":"        return {\u0027provider_location\u0027: snapshot[\u0027provider_location\u0027]}"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_8aacdb36","line":76,"in_reply_to":"1a6eadb0_e5dbd919","updated":"2016-12-13 19:20:42.000000000","message":"Actually %s also should work, no special significance with %r.","commit_id":"4d71e9a8ad59b70ac77cb7718eee7e811d41f6ef"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"059959a0c94d912c8033902e47c76d75a3fab270","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def set_execute(self, execute):"},{"line_number":47,"context_line":"        super(VeritasCNFSDriver, self).set_execute(execute)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def do_setup(self, context):"},{"line_number":50,"context_line":"        self._context \u003d context"},{"line_number":51,"context_line":"        super(VeritasCNFSDriver, self).do_setup(context)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_faf24ad1","line":48,"updated":"2016-12-14 16:30:15.000000000","message":"I didn\u0027t find this method in cinder drivers [0]\n\nhttps://github.com/openstack/cinder/search?utf8\u003d%E2%9C%93\u0026q\u003dset_execute","commit_id":"6c709b73b391eefcb2920bbded38bc0be6957796"},{"author":{"_account_id":12832,"name":"saratinuguri","email":"saratinuguri@gmail.com","username":"sinuguri"},"change_message_id":"360a7eca12f4d9dac453f85d3bc5a1f2eef89026","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def set_execute(self, execute):"},{"line_number":47,"context_line":"        super(VeritasCNFSDriver, self).set_execute(execute)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def do_setup(self, context):"},{"line_number":50,"context_line":"        self._context \u003d context"},{"line_number":51,"context_line":"        super(VeritasCNFSDriver, self).do_setup(context)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_71e235d7","line":48,"in_reply_to":"1a6eadb0_faf24ad1","updated":"2017-01-14 02:03:07.000000000","message":"Done","commit_id":"6c709b73b391eefcb2920bbded38bc0be6957796"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"f6ed740938ca9aec734456e9c2812808031b2917","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self._execute(\u0027rm\u0027, \u0027-f\u0027, snap_path, run_as_root\u003dTrue)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":94,"context_line":"        \"\"\"Create a clone of the volume.\"\"\""},{"line_number":95,"context_line":"        self.create_volume_from_snapshot(volume, src_vref)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _get_local_volume_path(self, provider_loc, vol_name):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_5d089891","line":94,"range":{"start_line":94,"start_character":8,"end_line":94,"end_character":43},"updated":"2016-12-14 16:46:53.000000000","message":"-1 For me it looks weird to call method \"create_volume_from_snapshot\" to clone volume. Or somehow rename it or leave the comment, that in your driver creating clone equal to creating it from snapshot.\n\nAnd method \"create_volume_from_snapshot\" calls method _do_clone_volume...","commit_id":"6c709b73b391eefcb2920bbded38bc0be6957796"},{"author":{"_account_id":12832,"name":"saratinuguri","email":"saratinuguri@gmail.com","username":"sinuguri"},"change_message_id":"360a7eca12f4d9dac453f85d3bc5a1f2eef89026","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self._execute(\u0027rm\u0027, \u0027-f\u0027, snap_path, run_as_root\u003dTrue)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":94,"context_line":"        \"\"\"Create a clone of the volume.\"\"\""},{"line_number":95,"context_line":"        self.create_volume_from_snapshot(volume, src_vref)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _get_local_volume_path(self, provider_loc, vol_name):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_51dd3913","line":94,"range":{"start_line":94,"start_character":8,"end_line":94,"end_character":43},"in_reply_to":"1a6eadb0_5d089891","updated":"2017-01-14 02:03:07.000000000","message":"Done","commit_id":"6c709b73b391eefcb2920bbded38bc0be6957796"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"3b9e11019b0d9ce6c56197f2cf2858b19e013966","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":94,"context_line":"        \"\"\"Create a clone of the volume.\"\"\""},{"line_number":95,"context_line":"        self.create_volume_from_snapshot(volume, src_vref)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _get_local_volume_path(self, provider_loc, vol_name):"},{"line_number":98,"context_line":"        mnt_path \u003d self._get_mount_point_for_share(provider_loc)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_7a9aba64","line":95,"updated":"2016-12-14 16:31:15.000000000","message":"the new volume can have a larger size that the original requested.","commit_id":"6c709b73b391eefcb2920bbded38bc0be6957796"},{"author":{"_account_id":12832,"name":"saratinuguri","email":"saratinuguri@gmail.com","username":"sinuguri"},"change_message_id":"360a7eca12f4d9dac453f85d3bc5a1f2eef89026","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":94,"context_line":"        \"\"\"Create a clone of the volume.\"\"\""},{"line_number":95,"context_line":"        self.create_volume_from_snapshot(volume, src_vref)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _get_local_volume_path(self, provider_loc, vol_name):"},{"line_number":98,"context_line":"        mnt_path \u003d self._get_mount_point_for_share(provider_loc)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_31c26d34","line":95,"in_reply_to":"1a6eadb0_7a9aba64","updated":"2017-01-14 02:03:07.000000000","message":"Done","commit_id":"6c709b73b391eefcb2920bbded38bc0be6957796"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"510722267f1dad3c4b53b2797f94989a477966e4","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        tgt_vol_path \u003d self._get_local_volume_path(cnfs_share, tgt_vol_name)"},{"line_number":106,"context_line":"        src_vol_path \u003d self._get_local_volume_path(cnfs_share, src_vol_name)"},{"line_number":107,"context_line":"        tgt_vol_path_spl \u003d tgt_vol_path + \"::snap:vxfs:\""},{"line_number":108,"context_line":"        self._execute(\u0027ln\u0027, src_vol_path, tgt_vol_path_spl, run_as_root\u003dTrue)"},{"line_number":109,"context_line":"        LOG.debug(\"VeritasNFSDriver: do_clone_volume %(src_vol_path)s \""},{"line_number":110,"context_line":"                  \"%(tgt_vol_path)s %(tgt_vol_path_spl)s\","},{"line_number":111,"context_line":"                  {\u0027src_vol_path\u0027: src_vol_path,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_3a3842a0","line":108,"range":{"start_line":108,"start_character":8,"end_line":108,"end_character":77},"updated":"2016-12-14 16:30:04.000000000","message":"How is that? You call a symbolic link a clone?","commit_id":"6c709b73b391eefcb2920bbded38bc0be6957796"},{"author":{"_account_id":12832,"name":"saratinuguri","email":"saratinuguri@gmail.com","username":"sinuguri"},"change_message_id":"360a7eca12f4d9dac453f85d3bc5a1f2eef89026","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        tgt_vol_path \u003d self._get_local_volume_path(cnfs_share, tgt_vol_name)"},{"line_number":106,"context_line":"        src_vol_path \u003d self._get_local_volume_path(cnfs_share, src_vol_name)"},{"line_number":107,"context_line":"        tgt_vol_path_spl \u003d tgt_vol_path + \"::snap:vxfs:\""},{"line_number":108,"context_line":"        self._execute(\u0027ln\u0027, src_vol_path, tgt_vol_path_spl, run_as_root\u003dTrue)"},{"line_number":109,"context_line":"        LOG.debug(\"VeritasNFSDriver: do_clone_volume %(src_vol_path)s \""},{"line_number":110,"context_line":"                  \"%(tgt_vol_path)s %(tgt_vol_path_spl)s\","},{"line_number":111,"context_line":"                  {\u0027src_vol_path\u0027: src_vol_path,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_b687330e","line":108,"range":{"start_line":108,"start_character":8,"end_line":108,"end_character":77},"in_reply_to":"1a6eadb0_3a3842a0","updated":"2017-01-14 02:03:07.000000000","message":"Creating a hard link with ::snap:vxfs as suffix, creates a file snapshot of the file. Please refer this:\n\nhttps://sort.veritas.com/public/documents/sfha/6.1/linux/productguides/html/sfcfs_admin/ch29s01s01.htm","commit_id":"6c709b73b391eefcb2920bbded38bc0be6957796"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"059959a0c94d912c8033902e47c76d75a3fab270","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                    \"removing the ::snap:vxfs: file\")"},{"line_number":118,"context_line":"            LOG.error(msg)"},{"line_number":119,"context_line":"            raise exception.NfsException(msg)"},{"line_number":120,"context_line":"        tgt_vol[\u0027provider_location\u0027] \u003d src_vol[\u0027provider_location\u0027]"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def extend_volume(self, volume, size):"},{"line_number":123,"context_line":"        \"\"\"Extend the volume to new size\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_bade126b","line":120,"updated":"2016-12-14 16:30:15.000000000","message":"I really don\u0027t want to have such side-effect modifying params. It makes code harder to debug. Please, use return value for such things","commit_id":"6c709b73b391eefcb2920bbded38bc0be6957796"},{"author":{"_account_id":12832,"name":"saratinuguri","email":"saratinuguri@gmail.com","username":"sinuguri"},"change_message_id":"360a7eca12f4d9dac453f85d3bc5a1f2eef89026","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                    \"removing the ::snap:vxfs: file\")"},{"line_number":118,"context_line":"            LOG.error(msg)"},{"line_number":119,"context_line":"            raise exception.NfsException(msg)"},{"line_number":120,"context_line":"        tgt_vol[\u0027provider_location\u0027] \u003d src_vol[\u0027provider_location\u0027]"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def extend_volume(self, volume, size):"},{"line_number":123,"context_line":"        \"\"\"Extend the volume to new size\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_11c5713b","line":120,"in_reply_to":"1a6eadb0_bade126b","updated":"2017-01-14 02:03:07.000000000","message":"Done","commit_id":"6c709b73b391eefcb2920bbded38bc0be6957796"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"1ffdcf4e26963c12df71cf8e7063bc039c80d8d0","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        snap_name \u003d snapshot.name"},{"line_number":65,"context_line":"        vol_size \u003d volume.size"},{"line_number":66,"context_line":"        snap_size \u003d snapshot.volume_size"},{"line_number":67,"context_line":"        LOG.debug(\u0027VeritasNFSDriver create_volume_from_snapshot called \u0027"},{"line_number":68,"context_line":"                  \u0027%(vol_name)s %(snap_name)s\u0027,"},{"line_number":69,"context_line":"                  {\u0027vol_name\u0027: vol_name, \u0027snap_name\u0027: snap_name})"},{"line_number":70,"context_line":"        self._do_clone_volume(snapshot, snap_name, volume)"},{"line_number":71,"context_line":"        volume.provider_location \u003d snapshot.provider_location"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_9a02796e","line":69,"range":{"start_line":67,"start_character":0,"end_line":69,"end_character":65},"updated":"2017-02-23 14:12:52.000000000","message":"Is this log necessary? You\u0027ve already loged full information of the volume at the #60. Or can you combine these two logs?","commit_id":"7c0a06fc0be23b975d4a80e855e5bca1412eaf54"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"aeda077df6dcf7890799a679e1a1a5292f87b5ab","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if vol_size !\u003d snap_size:"},{"line_number":74,"context_line":"            try:"},{"line_number":75,"context_line":"                self.extend_volume(volume, vol_size)"},{"line_number":76,"context_line":"            except Exception:"},{"line_number":77,"context_line":"                LOG.error(_LE(\u0027Resizing %s failed. Cleaning volume.\u0027),"},{"line_number":78,"context_line":"                          volume.name)"},{"line_number":79,"context_line":"                path \u003d self.local_path(volume)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ffe62b97_20f12d02","line":76,"updated":"2017-03-28 10:03:44.000000000","message":"Please, catch more specific exception here","commit_id":"7c0a06fc0be23b975d4a80e855e5bca1412eaf54"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"1ffdcf4e26963c12df71cf8e7063bc039c80d8d0","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                raise"},{"line_number":82,"context_line":"        return {\u0027provider_location\u0027: volume.provider_location}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def _volid_to_vol(self, volid):"},{"line_number":85,"context_line":"        vol \u003d self.db.volume_get(self._context, volid)"},{"line_number":86,"context_line":"        return vol"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_da92319f","line":84,"range":{"start_line":84,"start_character":8,"end_line":84,"end_character":21},"updated":"2017-02-23 14:12:52.000000000","message":"It\u0027s better to name it _get_vol_by_id or something like this.","commit_id":"7c0a06fc0be23b975d4a80e855e5bca1412eaf54"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"1ffdcf4e26963c12df71cf8e7063bc039c80d8d0","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        try:"},{"line_number":91,"context_line":"            LOG.debug(\u0027Deleting file at path %s\u0027, path)"},{"line_number":92,"context_line":"            self._execute(\u0027rm\u0027, \u0027-f\u0027, path, run_as_root\u003dTrue)"},{"line_number":93,"context_line":"            return True"},{"line_number":94,"context_line":"        except Exception as e:"},{"line_number":95,"context_line":"            LOG.warning(_LW(\u0027Exception during deleting %s\u0027), e)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_9acef9b2","line":93,"range":{"start_line":93,"start_character":12,"end_line":93,"end_character":23},"updated":"2017-02-23 14:12:52.000000000","message":"do we need this return? You don\u0027t check it anywhere","commit_id":"7c0a06fc0be23b975d4a80e855e5bca1412eaf54"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"aeda077df6dcf7890799a679e1a1a5292f87b5ab","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            LOG.debug(\u0027Deleting file at path %s\u0027, path)"},{"line_number":92,"context_line":"            self._execute(\u0027rm\u0027, \u0027-f\u0027, path, run_as_root\u003dTrue)"},{"line_number":93,"context_line":"            return True"},{"line_number":94,"context_line":"        except Exception as e:"},{"line_number":95,"context_line":"            LOG.warning(_LW(\u0027Exception during deleting %s\u0027), e)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def create_snapshot(self, snapshot):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ffe62b97_603975a2","line":94,"updated":"2017-03-28 10:03:44.000000000","message":"Please, catch more specific exception","commit_id":"7c0a06fc0be23b975d4a80e855e5bca1412eaf54"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"aeda077df6dcf7890799a679e1a1a5292f87b5ab","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":109,"context_line":"        \"\"\"Delete a snapshot.\"\"\""},{"line_number":110,"context_line":"        if not snapshot.provider_location:"},{"line_number":111,"context_line":"            LOG.warning(_LW(\u0027Snapshot %s does not have provider_location \u0027"},{"line_number":112,"context_line":"                            \u0027specified, skipping\u0027), snapshot.name)"},{"line_number":113,"context_line":"            return"},{"line_number":114,"context_line":"        self._ensure_share_mounted(snapshot.provider_location)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ffe62b97_20580df8","line":111,"updated":"2017-03-28 10:03:44.000000000","message":"Please, remove translation markers from LOG messages over the code","commit_id":"7c0a06fc0be23b975d4a80e855e5bca1412eaf54"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"1ffdcf4e26963c12df71cf8e7063bc039c80d8d0","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        # of the file.  create_volume_from_snapshot() calls method"},{"line_number":124,"context_line":"        # do_clone_volume()."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        self.create_volume_from_snapshot(volume, src_vref)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def _get_local_volume_path(self, provider_loc, vol_name):"},{"line_number":129,"context_line":"        mnt_path \u003d self._get_mount_point_for_share(provider_loc)"}],"source_content_type":"text/x-python","patch_set":9,"id":"da36d5c6_d537e8fc","line":126,"range":{"start_line":126,"start_character":8,"end_line":126,"end_character":58},"updated":"2017-02-23 14:12:52.000000000","message":"And the moment that i don\u0027t like the most - you still use interweaving of methods\u0027 calls.\n\nAfter calling \"create_cloned_volume\", that means that we will just clone volume, you will get \"VeritasNFSDriver1 create_volume_from_snapshot called\" text in you debug logs.\nFor me it\u0027s weird, even if the operations have the same result at the end.","commit_id":"7c0a06fc0be23b975d4a80e855e5bca1412eaf54"},{"author":{"_account_id":23276,"name":"Nicholas Jones","email":"nj762h@att.com","username":"nj762h"},"change_message_id":"d79b0758a8931b216ba4dafa8c0a8ce62a98e98b","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        \"\"\"Delete a snapshot.\"\"\""},{"line_number":111,"context_line":"        if not snapshot.provider_location:"},{"line_number":112,"context_line":"            LOG.warning(\u0027Snapshot %s does not have provider_location \u0027"},{"line_number":113,"context_line":"                            \u0027specified, skipping\u0027, snapshot.name)"},{"line_number":114,"context_line":"            return"},{"line_number":115,"context_line":"        self._ensure_share_mounted(snapshot.provider_location)"},{"line_number":116,"context_line":"        snap_path \u003d self.local_path(snapshot)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5ff73747_2122a101","line":113,"range":{"start_line":113,"start_character":25,"end_line":113,"end_character":28},"updated":"2017-04-25 15:00:57.000000000","message":"pep8 doesn\u0027t like this indent","commit_id":"8130f018cb93fb945d214cab5b9e0f7559f9c1d8"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"5e0504ce636a03a41bf115f1de179fbb9386fe16","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    \"\"\"Veritas Clustered NFS based cinder driver"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"            1.0.0 - Kilo driver"},{"line_number":34,"context_line":"            1.0.2 - Mitaka/Newton/Okata driver"},{"line_number":35,"context_line":"            1.0.3 - Pike Driver"},{"line_number":36,"context_line":"    Executes commands relating to Volumes."},{"line_number":37,"context_line":"    \"\"\""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f044301_31d90883","line":35,"range":{"start_line":33,"start_character":1,"end_line":35,"end_character":31},"updated":"2017-05-04 08:59:36.000000000","message":"Where 1.0.1 version and it\u0027s better to add more useful information. Not just timestamps connected to release.\nOr it will be the 1.0.0 version, initial variant.","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"ae61f05a5d054b8a16322c6d69163415f410d103","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    \"\"\"Veritas Clustered NFS based cinder driver"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"            1.0.0 - Kilo driver"},{"line_number":34,"context_line":"            1.0.2 - Mitaka/Newton/Okata driver"},{"line_number":35,"context_line":"            1.0.3 - Pike Driver"},{"line_number":36,"context_line":"    Executes commands relating to Volumes."},{"line_number":37,"context_line":"    \"\"\""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f044301_36d95af2","line":35,"range":{"start_line":33,"start_character":1,"end_line":35,"end_character":31},"in_reply_to":"3f044301_31d90883","updated":"2017-05-23 06:05:12.000000000","message":"Done","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8a13ebd44128d00e79cd5f3573219eab3bafc6a1","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        \"\"\"Creates a volume from snapshot.\"\"\""},{"line_number":61,"context_line":"        LOG.debug(\u0027VeritasNFSDriver1 create_volume_from_snapshot called \u0027"},{"line_number":62,"context_line":"                  \u0027%(volume)s %(snapshot)s\u0027,"},{"line_number":63,"context_line":"                  {\u0027volume\u0027: str(volume), \u0027snapshot\u0027: str(snapshot)})"},{"line_number":64,"context_line":"        vol_name \u003d volume.name"},{"line_number":65,"context_line":"        snap_name \u003d snapshot.name"},{"line_number":66,"context_line":"        vol_size \u003d volume.size"}],"source_content_type":"text/x-python","patch_set":11,"id":"5ff73747_c381e1c5","line":63,"updated":"2017-05-03 13:49:24.000000000","message":"Please, use volume and snapshot IDs here. Also, we should use six. text_type instead of str","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"ae61f05a5d054b8a16322c6d69163415f410d103","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        \"\"\"Creates a volume from snapshot.\"\"\""},{"line_number":61,"context_line":"        LOG.debug(\u0027VeritasNFSDriver1 create_volume_from_snapshot called \u0027"},{"line_number":62,"context_line":"                  \u0027%(volume)s %(snapshot)s\u0027,"},{"line_number":63,"context_line":"                  {\u0027volume\u0027: str(volume), \u0027snapshot\u0027: str(snapshot)})"},{"line_number":64,"context_line":"        vol_name \u003d volume.name"},{"line_number":65,"context_line":"        snap_name \u003d snapshot.name"},{"line_number":66,"context_line":"        vol_size \u003d volume.size"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f044301_c60fa82c","line":63,"in_reply_to":"5ff73747_c3120163","updated":"2017-05-23 06:05:12.000000000","message":"Done","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7588ead9d20cdd7906849597e4b56157237dfb8d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        \"\"\"Creates a volume from snapshot.\"\"\""},{"line_number":61,"context_line":"        LOG.debug(\u0027VeritasNFSDriver1 create_volume_from_snapshot called \u0027"},{"line_number":62,"context_line":"                  \u0027%(volume)s %(snapshot)s\u0027,"},{"line_number":63,"context_line":"                  {\u0027volume\u0027: str(volume), \u0027snapshot\u0027: str(snapshot)})"},{"line_number":64,"context_line":"        vol_name \u003d volume.name"},{"line_number":65,"context_line":"        snap_name \u003d snapshot.name"},{"line_number":66,"context_line":"        vol_size \u003d volume.size"}],"source_content_type":"text/x-python","patch_set":11,"id":"5ff73747_c3120163","line":63,"in_reply_to":"5ff73747_c381e1c5","updated":"2017-05-03 13:55:09.000000000","message":"Better yet, this is already being formatted into a string and handled correctly in the LOG call, so do not do unnecessary string conversion.","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"ae61f05a5d054b8a16322c6d69163415f410d103","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        \"\"\"Creates a volume from snapshot.\"\"\""},{"line_number":61,"context_line":"        LOG.debug(\u0027VeritasNFSDriver1 create_volume_from_snapshot called \u0027"},{"line_number":62,"context_line":"                  \u0027%(volume)s %(snapshot)s\u0027,"},{"line_number":63,"context_line":"                  {\u0027volume\u0027: str(volume), \u0027snapshot\u0027: str(snapshot)})"},{"line_number":64,"context_line":"        vol_name \u003d volume.name"},{"line_number":65,"context_line":"        snap_name \u003d snapshot.name"},{"line_number":66,"context_line":"        vol_size \u003d volume.size"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f044301_462dd893","line":63,"in_reply_to":"5ff73747_c381e1c5","updated":"2017-05-23 06:05:12.000000000","message":"Volume and snapshot IDs are used.Removed string conversion","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"5e0504ce636a03a41bf115f1de179fbb9386fe16","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        vol_name \u003d volume.name"},{"line_number":65,"context_line":"        snap_name \u003d snapshot.name"},{"line_number":66,"context_line":"        vol_size \u003d volume.size"},{"line_number":67,"context_line":"        if hasattr(snapshot, \u0027volume_size\u0027):"},{"line_number":68,"context_line":"            snap_size \u003d snapshot.volume_size"},{"line_number":69,"context_line":"        else:"},{"line_number":70,"context_line":"            snap_size \u003d snapshot.size"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f044301_71e1d0fe","line":67,"range":{"start_line":67,"start_character":7,"end_line":67,"end_character":44},"updated":"2017-05-04 08:59:36.000000000","message":"why do we need this check? I thought snapshot object had volume_size attr.","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"ae61f05a5d054b8a16322c6d69163415f410d103","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        vol_name \u003d volume.name"},{"line_number":65,"context_line":"        snap_name \u003d snapshot.name"},{"line_number":66,"context_line":"        vol_size \u003d volume.size"},{"line_number":67,"context_line":"        if hasattr(snapshot, \u0027volume_size\u0027):"},{"line_number":68,"context_line":"            snap_size \u003d snapshot.volume_size"},{"line_number":69,"context_line":"        else:"},{"line_number":70,"context_line":"            snap_size \u003d snapshot.size"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f044301_0627d0b5","line":67,"range":{"start_line":67,"start_character":7,"end_line":67,"end_character":44},"in_reply_to":"3f044301_71e1d0fe","updated":"2017-05-23 06:05:12.000000000","message":"Done","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"5e0504ce636a03a41bf115f1de179fbb9386fe16","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            snap_size \u003d snapshot.volume_size"},{"line_number":69,"context_line":"        else:"},{"line_number":70,"context_line":"            snap_size \u003d snapshot.size"},{"line_number":71,"context_line":"        LOG.debug(\u0027VeritasNFSDriver create_volume_from_snapshot called \u0027"},{"line_number":72,"context_line":"                  \u0027%(vol_name)s %(snap_name)s\u0027,"},{"line_number":73,"context_line":"                  {\u0027vol_name\u0027: vol_name, \u0027snap_name\u0027: snap_name})"},{"line_number":74,"context_line":"        self._do_clone_volume(snapshot, snap_name, volume)"},{"line_number":75,"context_line":"        volume.provider_location \u003d snapshot.provider_location"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f044301_517db41a","line":73,"range":{"start_line":71,"start_character":0,"end_line":73,"end_character":65},"updated":"2017-05-04 08:59:36.000000000","message":"maybe we need markers here, live \u0027vol_name \u003d \u0027 and \u0027snap_name \u003d \u0027, because it\u0027s not obligatory to provide them. It\u0027s better whether use id instead of name or even change this log structure","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"ae61f05a5d054b8a16322c6d69163415f410d103","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            snap_size \u003d snapshot.volume_size"},{"line_number":69,"context_line":"        else:"},{"line_number":70,"context_line":"            snap_size \u003d snapshot.size"},{"line_number":71,"context_line":"        LOG.debug(\u0027VeritasNFSDriver create_volume_from_snapshot called \u0027"},{"line_number":72,"context_line":"                  \u0027%(vol_name)s %(snap_name)s\u0027,"},{"line_number":73,"context_line":"                  {\u0027vol_name\u0027: vol_name, \u0027snap_name\u0027: snap_name})"},{"line_number":74,"context_line":"        self._do_clone_volume(snapshot, snap_name, volume)"},{"line_number":75,"context_line":"        volume.provider_location \u003d snapshot.provider_location"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f044301_e63bc4ce","line":73,"range":{"start_line":71,"start_character":0,"end_line":73,"end_character":65},"in_reply_to":"3f044301_517db41a","updated":"2017-05-23 06:05:12.000000000","message":"Done","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8a13ebd44128d00e79cd5f3573219eab3bafc6a1","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        volume.provider_location \u003d snapshot.provider_location"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        if vol_size !\u003d snap_size:"},{"line_number":78,"context_line":"            try:"},{"line_number":79,"context_line":"                self.extend_volume(volume, vol_size)"},{"line_number":80,"context_line":"            except Exception:"},{"line_number":81,"context_line":"                LOG.error(\u0027Resizing %s failed. Cleaning volume.\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"5ff73747_e3ca9d18","line":78,"updated":"2017-05-03 13:49:24.000000000","message":"Please, use save_and_resise context manager here","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"ae61f05a5d054b8a16322c6d69163415f410d103","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        volume.provider_location \u003d snapshot.provider_location"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        if vol_size !\u003d snap_size:"},{"line_number":78,"context_line":"            try:"},{"line_number":79,"context_line":"                self.extend_volume(volume, vol_size)"},{"line_number":80,"context_line":"            except Exception:"},{"line_number":81,"context_line":"                LOG.error(\u0027Resizing %s failed. Cleaning volume.\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f044301_d6c8f622","line":78,"in_reply_to":"5ff73747_e3ca9d18","updated":"2017-05-23 06:05:12.000000000","message":"Done","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8a13ebd44128d00e79cd5f3573219eab3bafc6a1","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if vol_size !\u003d snap_size:"},{"line_number":78,"context_line":"            try:"},{"line_number":79,"context_line":"                self.extend_volume(volume, vol_size)"},{"line_number":80,"context_line":"            except Exception:"},{"line_number":81,"context_line":"                LOG.error(\u0027Resizing %s failed. Cleaning volume.\u0027,"},{"line_number":82,"context_line":"                          volume.name)"},{"line_number":83,"context_line":"                path \u003d self.local_path(volume)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5ff73747_a386d5da","line":80,"updated":"2017-05-03 13:49:24.000000000","message":"Can we handle more specific exception here?","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"ae61f05a5d054b8a16322c6d69163415f410d103","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if vol_size !\u003d snap_size:"},{"line_number":78,"context_line":"            try:"},{"line_number":79,"context_line":"                self.extend_volume(volume, vol_size)"},{"line_number":80,"context_line":"            except Exception:"},{"line_number":81,"context_line":"                LOG.error(\u0027Resizing %s failed. Cleaning volume.\u0027,"},{"line_number":82,"context_line":"                          volume.name)"},{"line_number":83,"context_line":"                path \u003d self.local_path(volume)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f044301_e6406438","line":80,"in_reply_to":"5ff73747_a386d5da","updated":"2017-05-23 06:05:12.000000000","message":"Replaced by a more detailed error","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8a13ebd44128d00e79cd5f3573219eab3bafc6a1","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            LOG.debug(\u0027Deleting file at path %s\u0027, path)"},{"line_number":96,"context_line":"            self._execute(\u0027rm\u0027, \u0027-f\u0027, path, run_as_root\u003dTrue)"},{"line_number":97,"context_line":"            return True"},{"line_number":98,"context_line":"        except Exception as e:"},{"line_number":99,"context_line":"            LOG.warning(\u0027Exception during deleting %s\u0027, e)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def create_snapshot(self, snapshot):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5ff73747_0361093a","line":98,"updated":"2017-05-03 13:49:24.000000000","message":"The same as abowe","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"ae61f05a5d054b8a16322c6d69163415f410d103","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            LOG.debug(\u0027Deleting file at path %s\u0027, path)"},{"line_number":96,"context_line":"            self._execute(\u0027rm\u0027, \u0027-f\u0027, path, run_as_root\u003dTrue)"},{"line_number":97,"context_line":"            return True"},{"line_number":98,"context_line":"        except Exception as e:"},{"line_number":99,"context_line":"            LOG.warning(\u0027Exception during deleting %s\u0027, e)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def create_snapshot(self, snapshot):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f044301_b6cd6a32","line":98,"in_reply_to":"5ff73747_0361093a","updated":"2017-05-23 06:05:12.000000000","message":"Done","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8a13ebd44128d00e79cd5f3573219eab3bafc6a1","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        path \u003d self.local_path(volume)"},{"line_number":159,"context_line":"        volname \u003d volume.name"},{"line_number":160,"context_line":"        self._execute(\u0027truncate\u0027, \u0027-s\u0027, \u0027%sG\u0027 % size, path, run_as_root\u003dTrue)"},{"line_number":161,"context_line":"        LOG.debug(\"VeritasNFSDriver: extend_volume vol_name %r\", volname)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def _update_volume_stats(self):"},{"line_number":164,"context_line":"        super(VeritasCNFSDriver, self)._update_volume_stats()"}],"source_content_type":"text/x-python","patch_set":11,"id":"5ff73747_03efc987","line":161,"updated":"2017-05-03 13:49:24.000000000","message":"Please, use volume id here","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"ae61f05a5d054b8a16322c6d69163415f410d103","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        path \u003d self.local_path(volume)"},{"line_number":159,"context_line":"        volname \u003d volume.name"},{"line_number":160,"context_line":"        self._execute(\u0027truncate\u0027, \u0027-s\u0027, \u0027%sG\u0027 % size, path, run_as_root\u003dTrue)"},{"line_number":161,"context_line":"        LOG.debug(\"VeritasNFSDriver: extend_volume vol_name %r\", volname)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def _update_volume_stats(self):"},{"line_number":164,"context_line":"        super(VeritasCNFSDriver, self)._update_volume_stats()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f044301_46527815","line":161,"in_reply_to":"5ff73747_03efc987","updated":"2017-05-23 06:05:12.000000000","message":"Done","commit_id":"c5f649d46d5ee79eb978f5df6b0fc1e33c8e924d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"58d0bd776f5641b175475be647b46c58094b6372","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    VERSION \u003d \"1.0.3\""},{"line_number":39,"context_line":"    # ThirdPartySytems wiki page"},{"line_number":40,"context_line":"    CI_WIKI_NAME \u003d \"Veritas_Access_CI\""},{"line_number":41,"context_line":"    driver_volume_type \u003d \u0027nfs\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":44,"context_line":"        self._execute \u003d None"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f044301_2804d214","line":41,"range":{"start_line":41,"start_character":4,"end_line":41,"end_character":22},"updated":"2017-05-05 12:49:04.000000000","message":"Constants should be all upper case.","commit_id":"385e1b03fca750aaa962b827c44abcedfda69ee8"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"15512933ba750d99313bc626f3f095bfdc65727e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    VERSION \u003d \"1.0.3\""},{"line_number":39,"context_line":"    # ThirdPartySytems wiki page"},{"line_number":40,"context_line":"    CI_WIKI_NAME \u003d \"Veritas_Access_CI\""},{"line_number":41,"context_line":"    driver_volume_type \u003d \u0027nfs\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":44,"context_line":"        self._execute \u003d None"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f044301_a5a59906","line":41,"range":{"start_line":41,"start_character":4,"end_line":41,"end_character":22},"in_reply_to":"3f044301_2804d214","updated":"2017-05-23 06:04:00.000000000","message":"Done","commit_id":"385e1b03fca750aaa962b827c44abcedfda69ee8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"58d0bd776f5641b175475be647b46c58094b6372","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":59,"context_line":"        \"\"\"Creates a volume from snapshot.\"\"\""},{"line_number":60,"context_line":"        LOG.debug(\u0027VeritasNFSDriver1 create_volume_from_snapshot called \u0027"},{"line_number":61,"context_line":"                  \u0027 volume_id \u003d %(volume)s and snapshot_id \u003d %(snapshot)s\u0027,"},{"line_number":62,"context_line":"                  {\u0027volume\u0027: volume.id, \u0027snapshot\u0027: snapshot.volume_id})"},{"line_number":63,"context_line":"        vol_name \u003d volume.name"},{"line_number":64,"context_line":"        snap_name \u003d snapshot.name"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f044301_0809162b","line":61,"range":{"start_line":61,"start_character":19,"end_line":61,"end_character":20},"updated":"2017-05-05 12:49:04.000000000","message":"Extra space here.","commit_id":"385e1b03fca750aaa962b827c44abcedfda69ee8"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"15512933ba750d99313bc626f3f095bfdc65727e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":59,"context_line":"        \"\"\"Creates a volume from snapshot.\"\"\""},{"line_number":60,"context_line":"        LOG.debug(\u0027VeritasNFSDriver1 create_volume_from_snapshot called \u0027"},{"line_number":61,"context_line":"                  \u0027 volume_id \u003d %(volume)s and snapshot_id \u003d %(snapshot)s\u0027,"},{"line_number":62,"context_line":"                  {\u0027volume\u0027: volume.id, \u0027snapshot\u0027: snapshot.volume_id})"},{"line_number":63,"context_line":"        vol_name \u003d volume.name"},{"line_number":64,"context_line":"        snap_name \u003d snapshot.name"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f044301_85a85ddb","line":61,"range":{"start_line":61,"start_character":19,"end_line":61,"end_character":20},"in_reply_to":"3f044301_0809162b","updated":"2017-05-23 06:04:00.000000000","message":"Done","commit_id":"385e1b03fca750aaa962b827c44abcedfda69ee8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"58d0bd776f5641b175475be647b46c58094b6372","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                self.extend_volume(volume, vol_size)"},{"line_number":77,"context_line":"            except Exception:"},{"line_number":78,"context_line":"                LOG.error(\u0027Failed to extend the volume %(vol_name)s from size \u0027"},{"line_number":79,"context_line":"                          \u0027%(snap_size)s to size %(vol_size)s.\u0027"},{"line_number":80,"context_line":"                          \u0027Cleaning the volume.\u0027,"},{"line_number":81,"context_line":"                          {\u0027vol_name\u0027: vol_name, \u0027snap_size\u0027: snap_size, "},{"line_number":82,"context_line":"                           \u0027vol_size\u0027: vol_size})"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f044301_082236a5","line":79,"range":{"start_line":79,"start_character":62,"end_line":79,"end_character":63},"updated":"2017-05-05 12:49:04.000000000","message":"Need space at the end so it doesn\u0027t run together with the next line.","commit_id":"385e1b03fca750aaa962b827c44abcedfda69ee8"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"15512933ba750d99313bc626f3f095bfdc65727e","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                self.extend_volume(volume, vol_size)"},{"line_number":77,"context_line":"            except Exception:"},{"line_number":78,"context_line":"                LOG.error(\u0027Failed to extend the volume %(vol_name)s from size \u0027"},{"line_number":79,"context_line":"                          \u0027%(snap_size)s to size %(vol_size)s.\u0027"},{"line_number":80,"context_line":"                          \u0027Cleaning the volume.\u0027,"},{"line_number":81,"context_line":"                          {\u0027vol_name\u0027: vol_name, \u0027snap_size\u0027: snap_size, "},{"line_number":82,"context_line":"                           \u0027vol_size\u0027: vol_size})"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f044301_65af91e3","line":79,"range":{"start_line":79,"start_character":62,"end_line":79,"end_character":63},"in_reply_to":"3f044301_082236a5","updated":"2017-05-23 06:04:00.000000000","message":"Done","commit_id":"385e1b03fca750aaa962b827c44abcedfda69ee8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"58d0bd776f5641b175475be647b46c58094b6372","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                LOG.error(\u0027Failed to extend the volume %(vol_name)s from size \u0027"},{"line_number":79,"context_line":"                          \u0027%(snap_size)s to size %(vol_size)s.\u0027"},{"line_number":80,"context_line":"                          \u0027Cleaning the volume.\u0027,"},{"line_number":81,"context_line":"                          {\u0027vol_name\u0027: vol_name, \u0027snap_size\u0027: snap_size, "},{"line_number":82,"context_line":"                           \u0027vol_size\u0027: vol_size})"},{"line_number":83,"context_line":"                path \u003d self.local_path(volume)"},{"line_number":84,"context_line":"                self._delete_file(path)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f044301_6819ba77","line":81,"range":{"start_line":81,"start_character":72,"end_line":81,"end_character":73},"updated":"2017-05-05 12:49:04.000000000","message":"Remove trailing space.","commit_id":"385e1b03fca750aaa962b827c44abcedfda69ee8"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"15512933ba750d99313bc626f3f095bfdc65727e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                LOG.error(\u0027Failed to extend the volume %(vol_name)s from size \u0027"},{"line_number":79,"context_line":"                          \u0027%(snap_size)s to size %(vol_size)s.\u0027"},{"line_number":80,"context_line":"                          \u0027Cleaning the volume.\u0027,"},{"line_number":81,"context_line":"                          {\u0027vol_name\u0027: vol_name, \u0027snap_size\u0027: snap_size, "},{"line_number":82,"context_line":"                           \u0027vol_size\u0027: vol_size})"},{"line_number":83,"context_line":"                path \u003d self.local_path(volume)"},{"line_number":84,"context_line":"                self._delete_file(path)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f044301_45aa55d2","line":81,"range":{"start_line":81,"start_character":72,"end_line":81,"end_character":73},"in_reply_to":"3f044301_6819ba77","updated":"2017-05-23 06:04:00.000000000","message":"Done","commit_id":"385e1b03fca750aaa962b827c44abcedfda69ee8"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"56cde2377b9f344ba79c8198a7f4c678133b70ba","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":67,"context_line":"        \"\"\"Creates a volume from snapshot.\"\"\""},{"line_number":68,"context_line":"        LOG.debug(\u0027VeritasNFSDriver1 create_volume_from_snapshot called \u0027"},{"line_number":69,"context_line":"                  \u0027volume_id \u003d %(volume)s and snapshot_id \u003d %(snapshot)s\u0027,"},{"line_number":70,"context_line":"                  {\u0027volume\u0027: volume.id, \u0027snapshot\u0027: snapshot.id})"},{"line_number":71,"context_line":"        vol_name \u003d volume.name"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f013ff3_d5f0576a","line":68,"range":{"start_line":68,"start_character":35,"end_line":68,"end_character":36},"updated":"2017-05-16 18:10:54.000000000","message":"Is this a typo?","commit_id":"8eb5847c3826800459a6f3d790d213e36eafda39"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"51d39978e39c79621e553207dbf2ffd1509c67fb","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":67,"context_line":"        \"\"\"Creates a volume from snapshot.\"\"\""},{"line_number":68,"context_line":"        LOG.debug(\u0027VeritasNFSDriver1 create_volume_from_snapshot called \u0027"},{"line_number":69,"context_line":"                  \u0027volume_id \u003d %(volume)s and snapshot_id \u003d %(snapshot)s\u0027,"},{"line_number":70,"context_line":"                  {\u0027volume\u0027: volume.id, \u0027snapshot\u0027: snapshot.id})"},{"line_number":71,"context_line":"        vol_name \u003d volume.name"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f013ff3_e41b9918","line":68,"range":{"start_line":68,"start_character":35,"end_line":68,"end_character":36},"in_reply_to":"1f013ff3_d5f0576a","updated":"2017-05-23 06:00:50.000000000","message":"Done","commit_id":"8eb5847c3826800459a6f3d790d213e36eafda39"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"56cde2377b9f344ba79c8198a7f4c678133b70ba","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        try:"},{"line_number":99,"context_line":"            LOG.debug(\u0027Deleting file at path %s\u0027, path)"},{"line_number":100,"context_line":"            self._execute(\u0027rm\u0027, \u0027-f\u0027, path, run_as_root\u003dTrue)"},{"line_number":101,"context_line":"            return True"},{"line_number":102,"context_line":"        except OSError as ex:"},{"line_number":103,"context_line":"            LOG.warning(\u0027Exception during deleting %s\u0027, ex.strerror)"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1f013ff3_5589e7c7","line":101,"range":{"start_line":101,"start_character":19,"end_line":101,"end_character":23},"updated":"2017-05-16 18:10:54.000000000","message":"This return is never used.","commit_id":"8eb5847c3826800459a6f3d790d213e36eafda39"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"51d39978e39c79621e553207dbf2ffd1509c67fb","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        try:"},{"line_number":99,"context_line":"            LOG.debug(\u0027Deleting file at path %s\u0027, path)"},{"line_number":100,"context_line":"            self._execute(\u0027rm\u0027, \u0027-f\u0027, path, run_as_root\u003dTrue)"},{"line_number":101,"context_line":"            return True"},{"line_number":102,"context_line":"        except OSError as ex:"},{"line_number":103,"context_line":"            LOG.warning(\u0027Exception during deleting %s\u0027, ex.strerror)"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1f013ff3_a4d35138","line":101,"range":{"start_line":101,"start_character":19,"end_line":101,"end_character":23},"in_reply_to":"1f013ff3_5589e7c7","updated":"2017-05-23 06:00:50.000000000","message":"Done","commit_id":"8eb5847c3826800459a6f3d790d213e36eafda39"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"56cde2377b9f344ba79c8198a7f4c678133b70ba","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":127,"context_line":"        \"\"\"Create a clone of the volume.\"\"\""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        LOG.debug(\u0027VeritasNFSDriver1 create_cloned_volume called \u0027"},{"line_number":130,"context_line":"                  \u0027volume_id \u003d %(volume)s and src_vol_id \u003d %(src_vol_id)s\u0027,"},{"line_number":131,"context_line":"                  {\u0027volume\u0027: volume.id, \u0027src_vol_id\u0027: src_vref.id})"},{"line_number":132,"context_line":"        vol_name \u003d volume.name"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f013ff3_5504474a","line":129,"range":{"start_line":129,"start_character":35,"end_line":129,"end_character":36},"updated":"2017-05-16 18:10:54.000000000","message":"?","commit_id":"8eb5847c3826800459a6f3d790d213e36eafda39"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"51d39978e39c79621e553207dbf2ffd1509c67fb","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":127,"context_line":"        \"\"\"Create a clone of the volume.\"\"\""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        LOG.debug(\u0027VeritasNFSDriver1 create_cloned_volume called \u0027"},{"line_number":130,"context_line":"                  \u0027volume_id \u003d %(volume)s and src_vol_id \u003d %(src_vol_id)s\u0027,"},{"line_number":131,"context_line":"                  {\u0027volume\u0027: volume.id, \u0027src_vol_id\u0027: src_vref.id})"},{"line_number":132,"context_line":"        vol_name \u003d volume.name"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f013ff3_44e00dfb","line":129,"range":{"start_line":129,"start_character":35,"end_line":129,"end_character":36},"in_reply_to":"1f013ff3_5504474a","updated":"2017-05-23 06:00:50.000000000","message":"Done","commit_id":"8eb5847c3826800459a6f3d790d213e36eafda39"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d17265de022f22829ae53b866fc4bf7446328c66","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2016 Veritas Technologies LLC"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff0f0b1f_6b2529ab","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2017-05-19 03:22:54.000000000","message":"2017","commit_id":"43457d4476e4d20a17e9fca5a2ee1ba9f4d5487e"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"00bcc2b422abe47d12c86da564f804c7edf365ff","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2016 Veritas Technologies LLC"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff0f0b1f_e437cd4c","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"ff0f0b1f_6b2529ab","updated":"2017-05-23 05:57:50.000000000","message":"Done","commit_id":"43457d4476e4d20a17e9fca5a2ee1ba9f4d5487e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d17265de022f22829ae53b866fc4bf7446328c66","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        try:"},{"line_number":99,"context_line":"            LOG.debug(\u0027Deleting file at path %s\u0027, path)"},{"line_number":100,"context_line":"            self._execute(\u0027rm\u0027, \u0027-f\u0027, path, run_as_root\u003dTrue)"},{"line_number":101,"context_line":"            return True"},{"line_number":102,"context_line":"        except OSError as ex:"},{"line_number":103,"context_line":"            LOG.warning(\u0027Exception during deleting %s\u0027, ex.strerror)"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"ff0f0b1f_0b1d8d65","line":101,"range":{"start_line":101,"start_character":12,"end_line":101,"end_character":23},"updated":"2017-05-19 03:22:54.000000000","message":"Eric has a comment on this in patch set 18.  This is not addressed.","commit_id":"43457d4476e4d20a17e9fca5a2ee1ba9f4d5487e"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"00bcc2b422abe47d12c86da564f804c7edf365ff","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        try:"},{"line_number":99,"context_line":"            LOG.debug(\u0027Deleting file at path %s\u0027, path)"},{"line_number":100,"context_line":"            self._execute(\u0027rm\u0027, \u0027-f\u0027, path, run_as_root\u003dTrue)"},{"line_number":101,"context_line":"            return True"},{"line_number":102,"context_line":"        except OSError as ex:"},{"line_number":103,"context_line":"            LOG.warning(\u0027Exception during deleting %s\u0027, ex.strerror)"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"ff0f0b1f_fcf8e149","line":101,"range":{"start_line":101,"start_character":12,"end_line":101,"end_character":23},"in_reply_to":"ff0f0b1f_0b1d8d65","updated":"2017-05-23 05:57:50.000000000","message":"Done","commit_id":"43457d4476e4d20a17e9fca5a2ee1ba9f4d5487e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d17265de022f22829ae53b866fc4bf7446328c66","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        backend_name \u003d self.configuration.safe_get(\u0027volume_backend_name\u0027)"},{"line_number":185,"context_line":"        self._stats[\"volume_backend_name\"] \u003d backend_name or \u0027VeritasCNFS\u0027"},{"line_number":186,"context_line":"        self._stats[\"vendor_name\"] \u003d \u0027Veritas\u0027"},{"line_number":187,"context_line":"        self._stats[\"reserved_percentage\"] \u003d 0"},{"line_number":188,"context_line":"        self._stats[\"driver_version\"] \u003d self.VERSION"},{"line_number":189,"context_line":"        self._stats[\"storage_protocol\"] \u003d self.DRIVER_VOLUME_TYPE"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff0f0b1f_eb5ed910","line":187,"range":{"start_line":187,"start_character":45,"end_line":187,"end_character":46},"updated":"2017-05-19 03:22:54.000000000","message":"Please read reserved_percentage from cinder.conf.\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/driver.py#L45","commit_id":"43457d4476e4d20a17e9fca5a2ee1ba9f4d5487e"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"00bcc2b422abe47d12c86da564f804c7edf365ff","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        backend_name \u003d self.configuration.safe_get(\u0027volume_backend_name\u0027)"},{"line_number":185,"context_line":"        self._stats[\"volume_backend_name\"] \u003d backend_name or \u0027VeritasCNFS\u0027"},{"line_number":186,"context_line":"        self._stats[\"vendor_name\"] \u003d \u0027Veritas\u0027"},{"line_number":187,"context_line":"        self._stats[\"reserved_percentage\"] \u003d 0"},{"line_number":188,"context_line":"        self._stats[\"driver_version\"] \u003d self.VERSION"},{"line_number":189,"context_line":"        self._stats[\"storage_protocol\"] \u003d self.DRIVER_VOLUME_TYPE"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff0f0b1f_7cedf189","line":187,"range":{"start_line":187,"start_character":45,"end_line":187,"end_character":46},"in_reply_to":"ff0f0b1f_eb5ed910","updated":"2017-05-23 05:57:50.000000000","message":"Done","commit_id":"43457d4476e4d20a17e9fca5a2ee1ba9f4d5487e"}]}
