)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"This patchset includes the unit tests."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"DocImpact"},{"line_number":23,"context_line":"Implements: blueprint macrosan-driver-cinder"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: I963de9efd8b34782669e275fd65355b5e44f7df9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aa78d24_93a817dd","line":23,"updated":"2016-07-06 07:07:31.000000000","message":"This blueprint is not found and I could not find it looking through the list. Please file the blueprint and update this link if needed.","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"This patchset includes the unit tests."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"DocImpact"},{"line_number":23,"context_line":"Implements: blueprint macrosan-driver-cinder"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: I963de9efd8b34782669e275fd65355b5e44f7df9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aa78d24_e2cdf966","line":23,"in_reply_to":"1aa78d24_93a817dd","updated":"2016-07-08 06:46:50.000000000","message":"\"macrosan-driver-cinder\" link has been updated,please check.","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"}],"cinder/tests/unit/test_macrosan_drivers.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from cinder.volume import volume_types"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"config_xml \u003d \u0027\u0027\u0027\u003c?xml version\u003d\u00271.0\u0027 encoding\u003d\u0027UTF-8\u0027?\u003e"},{"line_number":39,"context_line":"\u003ccinder_config\u003e"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_d3ae1fe5","line":36,"updated":"2016-07-06 07:07:31.000000000","message":"Please remove, there should not be any logging in unit tests.","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"}],"cinder/volume/drivers/macrosan/devop_client.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from cinder.exception import VolumeBackendAPIException"},{"line_number":17,"context_line":"from cinder import ssh_utils"},{"line_number":18,"context_line":"from cinder import utils"},{"line_number":19,"context_line":"import json"},{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":"from oslo_concurrency import processutils"},{"line_number":22,"context_line":"import re"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_d3dc5f75","line":19,"updated":"2016-07-06 07:07:31.000000000","message":"Please restructure imports to follow the guidelines of grouping by standard libs, third party libs, then local imports.","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from cinder.exception import VolumeBackendAPIException"},{"line_number":17,"context_line":"from cinder import ssh_utils"},{"line_number":18,"context_line":"from cinder import utils"},{"line_number":19,"context_line":"import json"},{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":"from oslo_concurrency import processutils"},{"line_number":22,"context_line":"import re"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_b9cad218","line":19,"in_reply_to":"1aa78d24_d3dc5f75","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        self.luns \u003d luns[:]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __str__(self):"},{"line_number":36,"context_line":"        return \"client: %s, sp1_ports: %s, sp2_ports: %s, initrs: %s\" %\\"},{"line_number":37,"context_line":"               (self.client, self.sp1_ports, self.sp2_ports, self.initrs)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_13e38734","line":36,"range":{"start_line":36,"start_character":71,"end_line":36,"end_character":72},"updated":"2016-07-06 07:07:31.000000000","message":"Remove this extra \\","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        self.luns \u003d luns[:]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __str__(self):"},{"line_number":36,"context_line":"        return \"client: %s, sp1_ports: %s, sp2_ports: %s, initrs: %s\" %\\"},{"line_number":37,"context_line":"               (self.client, self.sp1_ports, self.sp2_ports, self.initrs)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_59012e39","line":36,"range":{"start_line":36,"start_character":71,"end_line":36,"end_character":72},"in_reply_to":"1aa78d24_13e38734","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _devop(self, func, *args):"},{"line_number":52,"context_line":"        with self.sshpool.item() as ssh:"},{"line_number":53,"context_line":"            sshcmd \u003d \u0027python /odsp/scripts/devop.py %s %s\u0027 %\\"},{"line_number":54,"context_line":"                     (func, \u0027 \u0027.join(args))"},{"line_number":55,"context_line":"            o, _ \u003d processutils.ssh_execute(ssh, sshcmd)"},{"line_number":56,"context_line":"            return json.loads(o.strip())"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_b3c8b3a9","line":53,"range":{"start_line":53,"start_character":60,"end_line":53,"end_character":61},"updated":"2016-07-06 07:07:31.000000000","message":"Remove","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _devop(self, func, *args):"},{"line_number":52,"context_line":"        with self.sshpool.item() as ssh:"},{"line_number":53,"context_line":"            sshcmd \u003d \u0027python /odsp/scripts/devop.py %s %s\u0027 %\\"},{"line_number":54,"context_line":"                     (func, \u0027 \u0027.join(args))"},{"line_number":55,"context_line":"            o, _ \u003d processutils.ssh_execute(ssh, sshcmd)"},{"line_number":56,"context_line":"            return json.loads(o.strip())"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_99fb9647","line":53,"range":{"start_line":53,"start_character":60,"end_line":53,"end_character":61},"in_reply_to":"1aa78d24_b3c8b3a9","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                params \u003d {\u0027name\u0027: name, \u0027owner\u0027: owner,"},{"line_number":161,"context_line":"                          \u0027pool\u0027: pool, \u0027size\u0027: size}"},{"line_number":162,"context_line":"                params.update(lun_params)"},{"line_number":163,"context_line":"                cmd \u003d \u0027lun mgt createthinlun --name %(name)s --owner %(owner)s\u0027\\"},{"line_number":164,"context_line":"                      \u0027 --pool %(pool)s --size %(size)sGB\u0027\\"},{"line_number":165,"context_line":"                      \u0027 --extent %(extent-size)s\u0027\\"},{"line_number":166,"context_line":"                      \u0027 --low-watermark %(low-watermark)s\u0027\\"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_1368a786","line":163,"range":{"start_line":163,"start_character":79,"end_line":163,"end_character":80},"updated":"2016-07-06 07:07:31.000000000","message":"Wrap variable assignment in () to avoid using \\ for line continuation throughout.","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                params \u003d {\u0027name\u0027: name, \u0027owner\u0027: owner,"},{"line_number":161,"context_line":"                          \u0027pool\u0027: pool, \u0027size\u0027: size}"},{"line_number":162,"context_line":"                params.update(lun_params)"},{"line_number":163,"context_line":"                cmd \u003d \u0027lun mgt createthinlun --name %(name)s --owner %(owner)s\u0027\\"},{"line_number":164,"context_line":"                      \u0027 --pool %(pool)s --size %(size)sGB\u0027\\"},{"line_number":165,"context_line":"                      \u0027 --extent %(extent-size)s\u0027\\"},{"line_number":166,"context_line":"                      \u0027 --low-watermark %(low-watermark)s\u0027\\"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_79f86a4a","line":163,"range":{"start_line":163,"start_character":79,"end_line":163,"end_character":80},"in_reply_to":"1aa78d24_1368a786","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4e97f6154541a715a70f971e3b224894b3cacad0","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def remove_lun_from_target(self, tgt_name, lun_name, type\u003d\u0027FC\u0027):"},{"line_number":266,"context_line":"        with self.sshpool.item() as ssh:"},{"line_number":267,"context_line":"            cmd \u003d \u0027client target removelun -n %s -l %s -t %s -f\u0027 %\\"},{"line_number":268,"context_line":"                  (tgt_name, lun_name, type)"},{"line_number":269,"context_line":"            self.execute_cli(ssh, cmd)"},{"line_number":270,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_e41f4e59","line":267,"range":{"start_line":267,"start_character":66,"end_line":267,"end_character":67},"updated":"2016-07-10 12:19:48.000000000","message":"Wrap in () to avoid using \\ for line continuation.","commit_id":"90ea77516b8305a6e9654b3dbb24d1b4849d05c0"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"33257cff4e488c24d01b5e815dbee86df1fc3e67","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def remove_lun_from_target(self, tgt_name, lun_name, type\u003d\u0027FC\u0027):"},{"line_number":266,"context_line":"        with self.sshpool.item() as ssh:"},{"line_number":267,"context_line":"            cmd \u003d \u0027client target removelun -n %s -l %s -t %s -f\u0027 %\\"},{"line_number":268,"context_line":"                  (tgt_name, lun_name, type)"},{"line_number":269,"context_line":"            self.execute_cli(ssh, cmd)"},{"line_number":270,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_f526bf14","line":267,"range":{"start_line":267,"start_character":66,"end_line":267,"end_character":67},"in_reply_to":"1aa78d24_e41f4e59","updated":"2016-07-11 13:07:45.000000000","message":"Done","commit_id":"90ea77516b8305a6e9654b3dbb24d1b4849d05c0"}],"cinder/volume/drivers/macrosan/driver.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from cinder.volume import utils as volutils"},{"line_number":27,"context_line":"from cinder.volume import volume_types"},{"line_number":28,"context_line":"from cinder.zonemanager import utils as fczm_utils"},{"line_number":29,"context_line":"import os"},{"line_number":30,"context_line":"from os_brick.initiator.connector import ISCSIConnector"},{"line_number":31,"context_line":"from os_brick.initiator import linuxfc"},{"line_number":32,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_53334fab","line":29,"updated":"2016-07-06 07:07:31.000000000","message":"Rearrange imports.","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from cinder.volume import utils as volutils"},{"line_number":27,"context_line":"from cinder.volume import volume_types"},{"line_number":28,"context_line":"from cinder.zonemanager import utils as fczm_utils"},{"line_number":29,"context_line":"import os"},{"line_number":30,"context_line":"from os_brick.initiator.connector import ISCSIConnector"},{"line_number":31,"context_line":"from os_brick.initiator import linuxfc"},{"line_number":32,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_f9b9fa7a","line":29,"in_reply_to":"1aa78d24_53334fab","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            self.client.enable_lun_qos(name, strategy)"},{"line_number":197,"context_line":"        except Exception as e:"},{"line_number":198,"context_line":"            self.client.delete_lun(name)"},{"line_number":199,"context_line":"            raise e"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        return {\u0027provider_location\u0027: \u0027macrosan uuid:%s\u0027 % lun_uuid}"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_9385b708","line":199,"updated":"2016-07-06 07:07:31.000000000","message":"Should just be \"raise\", not \"raise e\".","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            self.client.enable_lun_qos(name, strategy)"},{"line_number":197,"context_line":"        except Exception as e:"},{"line_number":198,"context_line":"            self.client.delete_lun(name)"},{"line_number":199,"context_line":"            raise e"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        return {\u0027provider_location\u0027: \u0027macrosan uuid:%s\u0027 % lun_uuid}"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_99a9d627","line":199,"in_reply_to":"1aa78d24_9385b708","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":243,"context_line":"            try:"},{"line_number":244,"context_line":"                self.client.rename_lun(migrated_name, name)"},{"line_number":245,"context_line":"            except Exception:"},{"line_number":246,"context_line":"                LOG.info(_LI(\u0027\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d failed to rename %(migrated_name)s\u0027"},{"line_number":247,"context_line":"                             \u0027to %(name)s\u0027),"},{"line_number":248,"context_line":"                         {\u0027migrated_name\u0027: migrated_name, \u0027name\u0027: name})"},{"line_number":249,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_d3c9ff5a","line":246,"updated":"2016-07-06 07:07:31.000000000","message":"Need trailing space at the end so it doesn\u0027t get concatenated right with the \u0027to\u0027 at the start of the next line.","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":243,"context_line":"            try:"},{"line_number":244,"context_line":"                self.client.rename_lun(migrated_name, name)"},{"line_number":245,"context_line":"            except Exception:"},{"line_number":246,"context_line":"                LOG.info(_LI(\u0027\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d failed to rename %(migrated_name)s\u0027"},{"line_number":247,"context_line":"                             \u0027to %(name)s\u0027),"},{"line_number":248,"context_line":"                         {\u0027migrated_name\u0027: migrated_name, \u0027name\u0027: name})"},{"line_number":249,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_79a6aa54","line":246,"in_reply_to":"1aa78d24_d3c9ff5a","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":288,"context_line":"            try:"},{"line_number":289,"context_line":"                self.client.enable_snapshot_resource_autoexpand(volume_name)"},{"line_number":290,"context_line":"            except Exception:"},{"line_number":291,"context_line":"                LOG.warning(_LW(\u0027\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Enable snapshot resource auto\u0027"},{"line_number":292,"context_line":"                                \u0027expand for volume: %s error\u0027), volume_name)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_53e4efdf","line":291,"updated":"2016-07-06 07:07:31.000000000","message":"Needs trailing space.","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":288,"context_line":"            try:"},{"line_number":289,"context_line":"                self.client.enable_snapshot_resource_autoexpand(volume_name)"},{"line_number":290,"context_line":"            except Exception:"},{"line_number":291,"context_line":"                LOG.warning(_LW(\u0027\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Enable snapshot resource auto\u0027"},{"line_number":292,"context_line":"                                \u0027expand for volume: %s error\u0027), volume_name)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_196cc607","line":291,"in_reply_to":"1aa78d24_53e4efdf","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":295,"context_line":"                self.client.enable_snapshot(volume_name)"},{"line_number":296,"context_line":"            except VolumeBackendAPIException as e:"},{"line_number":297,"context_line":"                self.client.delete_snapshot_resource(volume_name)"},{"line_number":298,"context_line":"                raise e"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"        try:"},{"line_number":301,"context_line":"            self.client.create_snapshot_point(volume_name, snapshot_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_13d707ee","line":298,"updated":"2016-07-06 07:07:31.000000000","message":"/raise e/raise/","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":295,"context_line":"                self.client.enable_snapshot(volume_name)"},{"line_number":296,"context_line":"            except VolumeBackendAPIException as e:"},{"line_number":297,"context_line":"                self.client.delete_snapshot_resource(volume_name)"},{"line_number":298,"context_line":"                raise e"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"        try:"},{"line_number":301,"context_line":"            self.client.create_snapshot_point(volume_name, snapshot_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_59764ed9","line":298,"in_reply_to":"1aa78d24_13d707ee","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":305,"context_line":"            if created:"},{"line_number":306,"context_line":"                self.client.disable_snapshot(volume_name)"},{"line_number":307,"context_line":"                self.client.delete_snapshot_resource(volume_name)"},{"line_number":308,"context_line":"            raise e"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        return int(pointid)"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_530b4f8e","line":308,"updated":"2016-07-06 07:07:31.000000000","message":"/raise e/raise/","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":305,"context_line":"            if created:"},{"line_number":306,"context_line":"                self.client.disable_snapshot(volume_name)"},{"line_number":307,"context_line":"                self.client.delete_snapshot_resource(volume_name)"},{"line_number":308,"context_line":"            raise e"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        return int(pointid)"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_397382e9","line":308,"in_reply_to":"1aa78d24_530b4f8e","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":370,"context_line":"            device \u003d connector.connect_volume(conn[\u0027data\u0027])"},{"line_number":371,"context_line":"        except Exception as e:"},{"line_number":372,"context_line":"            self._terminate_connection(name, host, True)"},{"line_number":373,"context_line":"            raise e"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"        return {\u0027conn\u0027: conn, \u0027device\u0027: device, \u0027connector\u0027: connector}"},{"line_number":376,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_9301376d","line":373,"updated":"2016-07-06 07:07:31.000000000","message":"/raise e/raise/","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":370,"context_line":"            device \u003d connector.connect_volume(conn[\u0027data\u0027])"},{"line_number":371,"context_line":"        except Exception as e:"},{"line_number":372,"context_line":"            self._terminate_connection(name, host, True)"},{"line_number":373,"context_line":"            raise e"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"        return {\u0027conn\u0027: conn, \u0027device\u0027: device, \u0027connector\u0027: connector}"},{"line_number":376,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_9980b68d","line":373,"in_reply_to":"1aa78d24_9301376d","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":394,"context_line":"            volume_conn \u003d self._connect(volume_name, False)"},{"line_number":395,"context_line":"        except Exception as e:"},{"line_number":396,"context_line":"            self._delete_volume(volume_name)"},{"line_number":397,"context_line":"            raise e"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        try:"},{"line_number":400,"context_line":"            self.client.create_snapshot_view(snapshot_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_732dabfd","line":397,"updated":"2016-07-06 07:07:31.000000000","message":"/raise e/raise/","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":394,"context_line":"            volume_conn \u003d self._connect(volume_name, False)"},{"line_number":395,"context_line":"        except Exception as e:"},{"line_number":396,"context_line":"            self._delete_volume(volume_name)"},{"line_number":397,"context_line":"            raise e"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        try:"},{"line_number":400,"context_line":"            self.client.create_snapshot_view(snapshot_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_797d0ab1","line":397,"in_reply_to":"1aa78d24_732dabfd","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        except Exception as e:"},{"line_number":404,"context_line":"            self._disconnect(volume_conn, volume_name, False)"},{"line_number":405,"context_line":"            self._delete_volume(volume_name)"},{"line_number":406,"context_line":"            raise e"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        try:"},{"line_number":409,"context_line":"            snapshot_conn \u003d self._connect(snapshot_name, True)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_53322f60","line":406,"updated":"2016-07-06 07:07:31.000000000","message":"/raise e/raise/","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        except Exception as e:"},{"line_number":404,"context_line":"            self._disconnect(volume_conn, volume_name, False)"},{"line_number":405,"context_line":"            self._delete_volume(volume_name)"},{"line_number":406,"context_line":"            raise e"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        try:"},{"line_number":409,"context_line":"            snapshot_conn \u003d self._connect(snapshot_name, True)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_d9487e8d","line":406,"in_reply_to":"1aa78d24_53322f60","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            self.client.delete_snapshot_view(snapshot_name)"},{"line_number":412,"context_line":"            self._disconnect(volume_conn, volume_name, False)"},{"line_number":413,"context_line":"            self._delete_volume(volume_name)"},{"line_number":414,"context_line":"            raise e"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        try:"},{"line_number":417,"context_line":"            volutils.copy_volume(os.path"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_9338173f","line":414,"updated":"2016-07-06 07:07:31.000000000","message":"/raise e/raise/","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            self.client.delete_snapshot_view(snapshot_name)"},{"line_number":412,"context_line":"            self._disconnect(volume_conn, volume_name, False)"},{"line_number":413,"context_line":"            self._delete_volume(volume_name)"},{"line_number":414,"context_line":"            raise e"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        try:"},{"line_number":417,"context_line":"            volutils.copy_volume(os.path"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_1943266e","line":414,"in_reply_to":"1aa78d24_9338173f","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":425,"context_line":"            self.client.delete_snapshot_view(snapshot_name)"},{"line_number":426,"context_line":"            self._disconnect(volume_conn, volume_name, False)"},{"line_number":427,"context_line":"            self._delete_volume(volume_name)"},{"line_number":428,"context_line":"            raise e"},{"line_number":429,"context_line":"        else:"},{"line_number":430,"context_line":"            self._disconnect(snapshot_conn, snapshot_name, True)"},{"line_number":431,"context_line":"            self.client.delete_snapshot_view(snapshot_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_d33e1f27","line":428,"updated":"2016-07-06 07:07:31.000000000","message":"/raise e/raise/","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":425,"context_line":"            self.client.delete_snapshot_view(snapshot_name)"},{"line_number":426,"context_line":"            self._disconnect(volume_conn, volume_name, False)"},{"line_number":427,"context_line":"            self._delete_volume(volume_name)"},{"line_number":428,"context_line":"            raise e"},{"line_number":429,"context_line":"        else:"},{"line_number":430,"context_line":"            self._disconnect(snapshot_conn, snapshot_name, True)"},{"line_number":431,"context_line":"            self.client.delete_snapshot_view(snapshot_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_595dae47","line":428,"in_reply_to":"1aa78d24_d33e1f27","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        volume_name \u003d volume[\u0027id\u0027]"},{"line_number":448,"context_line":"        snapshot_name \u003d self._snapshot_name(snapshot[\u0027id\u0027])"},{"line_number":449,"context_line":"        snapshot_volumename \u003d\\"},{"line_number":450,"context_line":"            self._volume_name(snapshot_volume[\u0027provider_location\u0027])"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        return self._create_volume_from_snapshot(volume_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_134547b2","line":449,"range":{"start_line":449,"start_character":29,"end_line":449,"end_character":30},"updated":"2016-07-06 07:07:31.000000000","message":"Get rid of \\","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        volume_name \u003d volume[\u0027id\u0027]"},{"line_number":448,"context_line":"        snapshot_name \u003d self._snapshot_name(snapshot[\u0027id\u0027])"},{"line_number":449,"context_line":"        snapshot_volumename \u003d\\"},{"line_number":450,"context_line":"            self._volume_name(snapshot_volume[\u0027provider_location\u0027])"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        return self._create_volume_from_snapshot(volume_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_395a6251","line":449,"range":{"start_line":449,"start_character":29,"end_line":449,"end_character":30},"in_reply_to":"1aa78d24_134547b2","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":454,"context_line":"                                                 snapshot_name,"},{"line_number":455,"context_line":"                                                 pointid,"},{"line_number":456,"context_line":"                                                 snapshot_volumename,"},{"line_number":457,"context_line":"                                                 snapshot[\u0027volume_size\u0027])"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"    def _create_cloned_volume(self, volume_name, volume_size, src_volumename,"},{"line_number":460,"context_line":"                              src_volume_size, snapshot_name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_73c92b26","line":457,"updated":"2016-07-06 07:07:31.000000000","message":"Same comment as the create from clone below. Need to account for possible larger size being requested.","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":454,"context_line":"                                                 snapshot_name,"},{"line_number":455,"context_line":"                                                 pointid,"},{"line_number":456,"context_line":"                                                 snapshot_volumename,"},{"line_number":457,"context_line":"                                                 snapshot[\u0027volume_size\u0027])"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"    def _create_cloned_volume(self, volume_name, volume_size, src_volumename,"},{"line_number":460,"context_line":"                              src_volume_size, snapshot_name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_fd99e5d1","line":457,"in_reply_to":"1aa78d24_73c92b26","updated":"2016-07-08 06:46:50.000000000","message":"Code is according to the new size to create a new volume, so there is no problem.","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":484,"context_line":"            src_vref[\u0027id\u0027][:12] + timeutils.utcnow().strftime(\u0027%Y%m%d%H%M%S%f\u0027)"},{"line_number":485,"context_line":"        snapshot_name \u003d self._snapshot_name(snapshotid)"},{"line_number":486,"context_line":"        return self._create_cloned_volume(volume_name, volume[\u0027size\u0027],"},{"line_number":487,"context_line":"                                          src_volumename, src_vref[\u0027size\u0027],"},{"line_number":488,"context_line":"                                          snapshot_name)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    def _extend_volume(self, name, moresize):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_13738716","line":487,"updated":"2016-07-06 07:07:31.000000000","message":"volume may contain a larger size than the source volume. The new clone either needs to be created with that new size, or if the backend doesn\u0027t allow that, created at the src_vref size and then expanded to the desired size.","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":484,"context_line":"            src_vref[\u0027id\u0027][:12] + timeutils.utcnow().strftime(\u0027%Y%m%d%H%M%S%f\u0027)"},{"line_number":485,"context_line":"        snapshot_name \u003d self._snapshot_name(snapshotid)"},{"line_number":486,"context_line":"        return self._create_cloned_volume(volume_name, volume[\u0027size\u0027],"},{"line_number":487,"context_line":"                                          src_volumename, src_vref[\u0027size\u0027],"},{"line_number":488,"context_line":"                                          snapshot_name)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    def _extend_volume(self, name, moresize):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_07f77759","line":487,"in_reply_to":"1aa78d24_13738716","updated":"2016-07-08 06:46:50.000000000","message":"Code is according to the new size to create a new volume, so there is no problem.","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":585,"context_line":"                    break"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"            if not found:"},{"line_number":588,"context_line":"                raise VolumeBackendAPIException(\u0027Not Found Host %s\u0027 % host)"},{"line_number":589,"context_line":""},{"line_number":590,"context_line":"            iscsi_sp1 \u003d node.get(\u0027sp1\u0027)"},{"line_number":591,"context_line":"            iscsi_sp2 \u003d node.get(\u0027sp2\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_53f50f55","line":588,"updated":"2016-07-06 07:07:31.000000000","message":"All exception messages need to have the _() translation marker.","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":585,"context_line":"                    break"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"            if not found:"},{"line_number":588,"context_line":"                raise VolumeBackendAPIException(\u0027Not Found Host %s\u0027 % host)"},{"line_number":589,"context_line":""},{"line_number":590,"context_line":"            iscsi_sp1 \u003d node.get(\u0027sp1\u0027)"},{"line_number":591,"context_line":"            iscsi_sp2 \u003d node.get(\u0027sp2\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_9d47014b","line":588,"in_reply_to":"1aa78d24_53f50f55","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":650,"context_line":"                    self.client.add_lun_to_target(tgt_name, name, \u0027iSCSI\u0027)"},{"line_number":651,"context_line":"                lun_id \u003d self.client.get_lun_id(tgt_name, name, \u0027iSCSI\u0027)"},{"line_number":652,"context_line":"        except VolumeBackendAPIException as e:"},{"line_number":653,"context_line":"            raise e"},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        target_ips \u003d sp1_ports + sp2_ports"},{"line_number":656,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_13f8a748","line":653,"updated":"2016-07-06 07:07:31.000000000","message":"/raise e/raise/","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":650,"context_line":"                    self.client.add_lun_to_target(tgt_name, name, \u0027iSCSI\u0027)"},{"line_number":651,"context_line":"                lun_id \u003d self.client.get_lun_id(tgt_name, name, \u0027iSCSI\u0027)"},{"line_number":652,"context_line":"        except VolumeBackendAPIException as e:"},{"line_number":653,"context_line":"            raise e"},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        target_ips \u003d sp1_ports + sp2_ports"},{"line_number":656,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_dd9ea9b7","line":653,"in_reply_to":"1aa78d24_13f8a748","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":688,"context_line":"            else:"},{"line_number":689,"context_line":"                self.client.remove_lun_from_target(tgt_name, name, \u0027iSCSI\u0027)"},{"line_number":690,"context_line":"        except VolumeBackendAPIException as e:"},{"line_number":691,"context_line":"            raise e"},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"    @utils.synchronized(\u0027MacroSAN\u0027, external\u003dTrue)"},{"line_number":694,"context_line":"    @timing"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_539cef0e","line":691,"updated":"2016-07-06 07:07:31.000000000","message":"/raise e/raise/","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":688,"context_line":"            else:"},{"line_number":689,"context_line":"                self.client.remove_lun_from_target(tgt_name, name, \u0027iSCSI\u0027)"},{"line_number":690,"context_line":"        except VolumeBackendAPIException as e:"},{"line_number":691,"context_line":"            raise e"},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"    @utils.synchronized(\u0027MacroSAN\u0027, external\u003dTrue)"},{"line_number":694,"context_line":"    @timing"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_3da40d07","line":691,"in_reply_to":"1aa78d24_539cef0e","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":809,"context_line":"                    self.client.add_lun_to_target(tgt_name, name)"},{"line_number":810,"context_line":"                lun_id \u003d self.client.get_lun_id(tgt_name, name)"},{"line_number":811,"context_line":"        except VolumeBackendAPIException as e:"},{"line_number":812,"context_line":"            raise e"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"        properties \u003d {\u0027target_lun\u0027: lun_id,"},{"line_number":815,"context_line":"                      \u0027target_discovered\u0027: True,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_b3b43382","line":812,"updated":"2016-07-06 07:07:31.000000000","message":"/raise e/raise/","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":809,"context_line":"                    self.client.add_lun_to_target(tgt_name, name)"},{"line_number":810,"context_line":"                lun_id \u003d self.client.get_lun_id(tgt_name, name)"},{"line_number":811,"context_line":"        except VolumeBackendAPIException as e:"},{"line_number":812,"context_line":"            raise e"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"        properties \u003d {\u0027target_lun\u0027: lun_id,"},{"line_number":815,"context_line":"                      \u0027target_discovered\u0027: True,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_7dae95e8","line":812,"in_reply_to":"1aa78d24_b3b43382","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":847,"context_line":"            else:"},{"line_number":848,"context_line":"                self.client.remove_lun_from_target(tgt_name, name)"},{"line_number":849,"context_line":"        except VolumeBackendAPIException as e:"},{"line_number":850,"context_line":"            raise e"},{"line_number":851,"context_line":""},{"line_number":852,"context_line":"        return {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027, \u0027data\u0027: {}}"},{"line_number":853,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_7365ab1c","line":850,"updated":"2016-07-06 07:07:31.000000000","message":"/raise e/raise/","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":847,"context_line":"            else:"},{"line_number":848,"context_line":"                self.client.remove_lun_from_target(tgt_name, name)"},{"line_number":849,"context_line":"        except VolumeBackendAPIException as e:"},{"line_number":850,"context_line":"            raise e"},{"line_number":851,"context_line":""},{"line_number":852,"context_line":"        return {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027, \u0027data\u0027: {}}"},{"line_number":853,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_5dabd9d6","line":850,"in_reply_to":"1aa78d24_7365ab1c","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":853,"context_line":""},{"line_number":854,"context_line":"    @utils.synchronized(\u0027MacroSAN\u0027, external\u003dTrue)"},{"line_number":855,"context_line":"    @timing"},{"line_number":856,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":857,"context_line":"        LOG.info(_LI(\u0027\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d terminate_connection %s\u0027), connector)"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"        self.client.select_sshpool()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_d35d7f48","line":856,"updated":"2016-07-06 07:07:31.000000000","message":"Needs @fczm_utils.RemoveFCZone and handling.","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":853,"context_line":""},{"line_number":854,"context_line":"    @utils.synchronized(\u0027MacroSAN\u0027, external\u003dTrue)"},{"line_number":855,"context_line":"    @timing"},{"line_number":856,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":857,"context_line":"        LOG.info(_LI(\u0027\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d terminate_connection %s\u0027), connector)"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"        self.client.select_sshpool()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_dd85095a","line":856,"in_reply_to":"1aa78d24_d35d7f48","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4e97f6154541a715a70f971e3b224894b3cacad0","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    @utils.synchronized(\u0027MacroSAN-Attach\u0027, external\u003dTrue)"},{"line_number":273,"context_line":"    def _detach_volume(self, context, attach_info, volume,"},{"line_number":274,"context_line":"                       properties, force\u003dFalse, remote\u003dFalse):"},{"line_number":275,"context_line":"        time.sleep(0.5)"},{"line_number":276,"context_line":"        return super(MacroSANBaseDriver, self)._detach_volume(context,"},{"line_number":277,"context_line":"                                                              attach_info,"},{"line_number":278,"context_line":"                                                              volume,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_6434fedd","line":275,"updated":"2016-07-10 12:19:48.000000000","message":"Why are these sleep statements needed.\n\nIf needed, time.sleep needs to be mocked in the unit tests so the tests aren\u0027t slowed down.","commit_id":"90ea77516b8305a6e9654b3dbb24d1b4849d05c0"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"33257cff4e488c24d01b5e815dbee86df1fc3e67","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    @utils.synchronized(\u0027MacroSAN-Attach\u0027, external\u003dTrue)"},{"line_number":273,"context_line":"    def _detach_volume(self, context, attach_info, volume,"},{"line_number":274,"context_line":"                       properties, force\u003dFalse, remote\u003dFalse):"},{"line_number":275,"context_line":"        time.sleep(0.5)"},{"line_number":276,"context_line":"        return super(MacroSANBaseDriver, self)._detach_volume(context,"},{"line_number":277,"context_line":"                                                              attach_info,"},{"line_number":278,"context_line":"                                                              volume,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_75180f85","line":275,"in_reply_to":"1aa78d24_6434fedd","updated":"2016-07-11 13:07:45.000000000","message":"Done，don\u0027t need to sleep,remove","commit_id":"90ea77516b8305a6e9654b3dbb24d1b4849d05c0"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4e97f6154541a715a70f971e3b224894b3cacad0","unresolved":false,"context_lines":[{"line_number":486,"context_line":"    @timing"},{"line_number":487,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":488,"context_line":"        \"\"\"Creates a clone of the specified volume.\"\"\""},{"line_number":489,"context_line":"        LOG.info(_LI(\u0027\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d create cloned volume.\u0027))"},{"line_number":490,"context_line":"        self.client.select_sshpool()"},{"line_number":491,"context_line":"        volume_name \u003d volume[\u0027id\u0027]"},{"line_number":492,"context_line":"        src_volumename \u003d self._volume_name(src_vref[\u0027provider_location\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_c4597237","line":489,"range":{"start_line":489,"start_character":12,"end_line":489,"end_character":16},"updated":"2016-07-10 12:19:48.000000000","message":"Please change these types of logs to debug level.","commit_id":"90ea77516b8305a6e9654b3dbb24d1b4849d05c0"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"33257cff4e488c24d01b5e815dbee86df1fc3e67","unresolved":false,"context_lines":[{"line_number":486,"context_line":"    @timing"},{"line_number":487,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":488,"context_line":"        \"\"\"Creates a clone of the specified volume.\"\"\""},{"line_number":489,"context_line":"        LOG.info(_LI(\u0027\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d create cloned volume.\u0027))"},{"line_number":490,"context_line":"        self.client.select_sshpool()"},{"line_number":491,"context_line":"        volume_name \u003d volume[\u0027id\u0027]"},{"line_number":492,"context_line":"        src_volumename \u003d self._volume_name(src_vref[\u0027provider_location\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_f5899fcb","line":489,"range":{"start_line":489,"start_character":12,"end_line":489,"end_character":16},"in_reply_to":"1aa78d24_c4597237","updated":"2016-07-11 13:07:45.000000000","message":"Done","commit_id":"90ea77516b8305a6e9654b3dbb24d1b4849d05c0"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4e97f6154541a715a70f971e3b224894b3cacad0","unresolved":false,"context_lines":[{"line_number":575,"context_line":"                \u0027provider_location\u0027: new_volume[\u0027provider_location\u0027]}"},{"line_number":576,"context_line":""},{"line_number":577,"context_line":""},{"line_number":578,"context_line":"class MacroSANISCSIDriver(MacroSANBaseDriver, driver.ISCSIDriver):"},{"line_number":579,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":580,"context_line":"        super(MacroSANISCSIDriver, self).__init__(*args, **kwargs)"},{"line_number":581,"context_line":"        self.storage_protocol \u003d \u0027iSCSI\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_644b5e5a","line":578,"updated":"2016-07-10 12:19:48.000000000","message":"Needs cinder.interface.volumedriver class decorator for any concrete driver implementations.","commit_id":"90ea77516b8305a6e9654b3dbb24d1b4849d05c0"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"33257cff4e488c24d01b5e815dbee86df1fc3e67","unresolved":false,"context_lines":[{"line_number":575,"context_line":"                \u0027provider_location\u0027: new_volume[\u0027provider_location\u0027]}"},{"line_number":576,"context_line":""},{"line_number":577,"context_line":""},{"line_number":578,"context_line":"class MacroSANISCSIDriver(MacroSANBaseDriver, driver.ISCSIDriver):"},{"line_number":579,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":580,"context_line":"        super(MacroSANISCSIDriver, self).__init__(*args, **kwargs)"},{"line_number":581,"context_line":"        self.storage_protocol \u003d \u0027iSCSI\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_158f0bcd","line":578,"in_reply_to":"1aa78d24_644b5e5a","updated":"2016-07-11 13:07:45.000000000","message":"Done","commit_id":"90ea77516b8305a6e9654b3dbb24d1b4849d05c0"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4e97f6154541a715a70f971e3b224894b3cacad0","unresolved":false,"context_lines":[{"line_number":848,"context_line":"        else:"},{"line_number":849,"context_line":"            self.client.remove_lun_from_target(tgt_name, name)"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"        return {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027, \u0027data\u0027: {}}"},{"line_number":852,"context_line":""},{"line_number":853,"context_line":"    @utils.synchronized(\u0027MacroSAN\u0027, external\u003dTrue)"},{"line_number":854,"context_line":"    @timing"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_84764aa1","line":851,"range":{"start_line":851,"start_character":56,"end_line":851,"end_character":60},"updated":"2016-07-10 12:19:48.000000000","message":"This needs to actually be set to correct values for the FCZM.","commit_id":"90ea77516b8305a6e9654b3dbb24d1b4849d05c0"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"33257cff4e488c24d01b5e815dbee86df1fc3e67","unresolved":false,"context_lines":[{"line_number":848,"context_line":"        else:"},{"line_number":849,"context_line":"            self.client.remove_lun_from_target(tgt_name, name)"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"        return {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027, \u0027data\u0027: {}}"},{"line_number":852,"context_line":""},{"line_number":853,"context_line":"    @utils.synchronized(\u0027MacroSAN\u0027, external\u003dTrue)"},{"line_number":854,"context_line":"    @timing"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_f5b07f8d","line":851,"range":{"start_line":851,"start_character":56,"end_line":851,"end_character":60},"in_reply_to":"1aa78d24_84764aa1","updated":"2016-07-11 13:07:45.000000000","message":"Done","commit_id":"90ea77516b8305a6e9654b3dbb24d1b4849d05c0"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"cdc22b74f5434c5deba4dec69f0736e663c48936","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import time"},{"line_number":23,"context_line":"from xml.etree.ElementTree import parse"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from os_brick.initiator.connector import ISCSIConnector"},{"line_number":26,"context_line":"from os_brick.initiator import linuxfc"},{"line_number":27,"context_line":"from oslo_log import log as logging"},{"line_number":28,"context_line":"from oslo_utils import timeutils"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_895aa8f0","line":25,"updated":"2016-07-11 23:35:09.000000000","message":"Please don\u0027t import classes from inside a module.\n\nhttp://docs.openstack.org/developer/hacking/#imports","commit_id":"c24f0c5851863e438bfc8267a08fe4e6fa6499bc"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"be72fb40ef88ba23cd3734a6811c9d258e7874a1","unresolved":false,"context_lines":[{"line_number":247,"context_line":"            except Exception:"},{"line_number":248,"context_line":"                LOG.warning(_LW(\u0027\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d failed to rename %(migrated_name)s\u0027"},{"line_number":249,"context_line":"                                \u0027 to %(name)s\u0027),"},{"line_number":250,"context_line":"                            {\u0027migrated_name\u0027: migrated_name, \u0027name\u0027: name})"},{"line_number":251,"context_line":"        except Exception:"},{"line_number":252,"context_line":"            return"},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_6ef7c98c","line":250,"updated":"2016-10-17 20:34:14.000000000","message":"Please remove the \"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\" from this message.\n\nWarning messages should be admin-actionable -- what does this message actually mean?  What is the resulting state of things?","commit_id":"c24f0c5851863e438bfc8267a08fe4e6fa6499bc"}],"releasenotes/notes/macrosan-driver-cinder-901364bb9e75eff5.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c93e4ccca54e02a5f54e3b3d3662fed4f88da40a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added cinder driver for MacroSAN storage."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"1aa78d24_f327dbc7","line":3,"range":{"start_line":3,"start_character":10,"end_line":3,"end_character":16},"updated":"2016-07-06 07:07:31.000000000","message":"/cinder/backend/","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"},{"author":{"_account_id":22513,"name":"zengjia","email":"ynu.zengjia@gmail.com","username":"macrosan-zengjia"},"change_message_id":"7c8a01d81f2d7d23ae440e1166f83dff63ea1d6a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added cinder driver for MacroSAN storage."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"1aa78d24_ddece92b","line":3,"range":{"start_line":3,"start_character":10,"end_line":3,"end_character":16},"in_reply_to":"1aa78d24_f327dbc7","updated":"2016-07-08 06:46:50.000000000","message":"Done","commit_id":"0ec1d8792f225ab7ce0cd69c377223ca221a4329"}]}
