)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"aff205852ad77af6b42c943c25ff3e0d1aaf924d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix bug for Nova live migration which use cinder with Dothill driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Nova\u0027s live migration calls cinder initialize_connection multiple times for the purposes of collecting the connection_info for a volume. Driver\u0027s need to be safe in initialize_connection and not assume that it\u0027s being remapped with another lun id"},{"line_number":10,"context_line":"If a host is already mapped ,this change will not  remap and return the origal lun id"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ib81f9a343a86cafa0ad51e1c9c5bac1c23ace4d3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a30ddce_a0b32be8","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":85},"updated":"2017-03-09 15:20:22.000000000","message":"-1 Please, fix commit message due to openstack git guide\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"6a0d09da130c5d70f94b4c1d17586e474dc9f4e0"}],"cinder/volume/drivers/dothill/dothill_client.py":[{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"aff205852ad77af6b42c943c25ff3e0d1aaf924d","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        raise exception.DotHillRequestError("},{"line_number":367,"context_line":"            message\u003d_(\"No LUNs available for mapping to host %s.\") % host)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    # fix Nova live migration."},{"line_number":370,"context_line":"    # check the nova-compute host is  mapped areadly ,if already mapped ,return"},{"line_number":371,"context_line":"    # \"mapped\" and lun_id else return unmapped"},{"line_number":372,"context_line":"    def _check_already_mapped(self, volume, host):"},{"line_number":373,"context_line":"        tree \u003d self._request(\"/show/volume-maps\", volume)"},{"line_number":374,"context_line":"        list_wwns \u003d [prop.text for prop in tree.xpath("}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_a03ecbd7","line":371,"range":{"start_line":369,"start_character":1,"end_line":371,"end_character":46},"updated":"2017-03-09 15:20:22.000000000","message":"Move this comment to the method body and make in more informative","commit_id":"6a0d09da130c5d70f94b4c1d17586e474dc9f4e0"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"aff205852ad77af6b42c943c25ff3e0d1aaf924d","unresolved":false,"context_lines":[{"line_number":372,"context_line":"    def _check_already_mapped(self, volume, host):"},{"line_number":373,"context_line":"        tree \u003d self._request(\"/show/volume-maps\", volume)"},{"line_number":374,"context_line":"        list_wwns \u003d [prop.text for prop in tree.xpath("},{"line_number":375,"context_line":"            \"//PROPERTY[@name\u003d\u0027identifier\u0027]\")]"},{"line_number":376,"context_line":"        if host in list_wwns:"},{"line_number":377,"context_line":"            index \u003d list_wwns.index(host)"},{"line_number":378,"context_line":"            lun_id \u003d [prop.text for prop in tree.xpath("}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_60513336","line":375,"range":{"start_line":375,"start_character":12,"end_line":375,"end_character":44},"updated":"2017-03-09 15:20:22.000000000","message":"What is the sense of this \u0027magic strings\u0027? Can we dispose of them?","commit_id":"6a0d09da130c5d70f94b4c1d17586e474dc9f4e0"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"aff205852ad77af6b42c943c25ff3e0d1aaf924d","unresolved":false,"context_lines":[{"line_number":386,"context_line":"            check_map \u003d self._check_already_mapped("},{"line_number":387,"context_line":"                volume_name, connector[\u0027wwpns\u0027][0])"},{"line_number":388,"context_line":"            if check_map[0] \u003d\u003d \"mapped\":"},{"line_number":389,"context_line":"                lun \u003d check_map[1]"},{"line_number":390,"context_line":"                return lun"},{"line_number":391,"context_line":"            lun \u003d self._get_first_available_lun_for_host(connector[\u0027wwpns\u0027][0])"},{"line_number":392,"context_line":"            host \u003d \",\".join(connector[\u0027wwpns\u0027])"},{"line_number":393,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_407b4ff5","line":390,"range":{"start_line":389,"start_character":0,"end_line":390,"end_character":26},"updated":"2017-03-09 15:20:22.000000000","message":"Why do we need get this data to separated variable? If we don\u0027t do anything to it. You can just left comment about it\u0027s sense","commit_id":"6a0d09da130c5d70f94b4c1d17586e474dc9f4e0"}]}
