)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":7,"context_line":"VMAX driver - Replication, replacing SMI-S with REST"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In VMAX driver version 3.0, SMI-S has been replaced with unisphere"},{"line_number":10,"context_line":"REST. This is porting Replication from SMIS to REST."},{"line_number":11,"context_line":"See original https://review.openstack.org/#/c/409079/ for more"},{"line_number":12,"context_line":"details"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":32,"id":"3f1d235d_595ff1e4","line":10,"range":{"start_line":10,"start_character":22,"end_line":10,"end_character":33},"updated":"2017-07-10 14:44:49.000000000","message":"Replication V2.1","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"}],"cinder/tests/unit/volume/drivers/dell_emc/vmax/test_vmax.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":5128,"context_line":"        rep_status, rep_data \u003d self.common.setup_volume_replication("},{"line_number":5129,"context_line":"            self.data.array, self.data.test_volume, self.data.device_id,"},{"line_number":5130,"context_line":"            self.extra_specs)"},{"line_number":5131,"context_line":"        self.assertEqual(\u0027enabled\u0027, rep_status)"},{"line_number":5132,"context_line":"        self.assertEqual({\u0027array\u0027: self.data.remote_array,"},{"line_number":5133,"context_line":"                          \u0027device_id\u0027: self.data.device_id}, rep_data)"},{"line_number":5134,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_798d0d7a","line":5131,"range":{"start_line":5131,"start_character":25,"end_line":5131,"end_character":34},"updated":"2017-07-10 14:44:49.000000000","message":"Please use fields.ReplicationStatus","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":5138,"context_line":"        rep_status, rep_data \u003d self.common.setup_volume_replication("},{"line_number":5139,"context_line":"            self.data.array, self.data.test_volume, self.data.device_id,"},{"line_number":5140,"context_line":"            self.extra_specs, self.data.device_id2)"},{"line_number":5141,"context_line":"        self.assertEqual(\u0027enabled\u0027, rep_status)"},{"line_number":5142,"context_line":"        self.assertEqual({\u0027array\u0027: self.data.remote_array,"},{"line_number":5143,"context_line":"                          \u0027device_id\u0027: self.data.device_id2}, rep_data)"},{"line_number":5144,"context_line":"        mock_create.assert_not_called()"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_39ed5525","line":5141,"range":{"start_line":5141,"start_character":25,"end_line":5141,"end_character":34},"updated":"2017-07-10 14:44:49.000000000","message":"Same.  This comment applies to all rep_status.","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5cfe7db84c51b0381e82312a42946b68f9e11a61","unresolved":false,"context_lines":[{"line_number":3924,"context_line":""},{"line_number":3925,"context_line":"    def test_failover_host(self):"},{"line_number":3926,"context_line":"        with mock.patch.object(self.common, \u0027failover_host\u0027,"},{"line_number":3927,"context_line":"                               return_value\u003d{}) as mock_fo:"},{"line_number":3928,"context_line":"            self.driver.failover_host({}, [self.data.test_volume])"},{"line_number":3929,"context_line":"            mock_fo.assert_called_once_with([self.data.test_volume], None,"},{"line_number":3930,"context_line":"                                            None)"}],"source_content_type":"text/x-python","patch_set":39,"id":"1f1a1f67_a75b9b85","line":3927,"range":{"start_line":3927,"start_character":44,"end_line":3927,"end_character":46},"updated":"2017-07-12 20:50:30.000000000","message":"failover_host returns secondary_id, volume_update_list, []","commit_id":"fff97161103e199d610af273f95185fab31056e0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5cfe7db84c51b0381e82312a42946b68f9e11a61","unresolved":false,"context_lines":[{"line_number":3925,"context_line":"    def test_failover_host(self):"},{"line_number":3926,"context_line":"        with mock.patch.object(self.common, \u0027failover_host\u0027,"},{"line_number":3927,"context_line":"                               return_value\u003d{}) as mock_fo:"},{"line_number":3928,"context_line":"            self.driver.failover_host({}, [self.data.test_volume])"},{"line_number":3929,"context_line":"            mock_fo.assert_called_once_with([self.data.test_volume], None,"},{"line_number":3930,"context_line":"                                            None)"},{"line_number":3931,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"1f1a1f67_07fa4f41","line":3928,"range":{"start_line":3928,"start_character":38,"end_line":3928,"end_character":65},"updated":"2017-07-12 20:50:30.000000000","message":"This is wrong. The driver interface is as follows:\n\nfailover_host(self, context, volumes, secondary_id\u003dNone, groups\u003dNone)\n\ncontext is not {}","commit_id":"fff97161103e199d610af273f95185fab31056e0"}],"cinder/volume/drivers/dell_emc/vmax/common.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"76ba20aad65bd255df503758ba4d1ad2a501d696","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                _(\"Connector must not be None - Cannot get the required \""},{"line_number":412,"context_line":"                  \"information needed to unmap the volume\"))"},{"line_number":413,"context_line":"            LOG.exception(exception_message)"},{"line_number":414,"context_line":"            raise exception.VolumeBackendAPIException(exception_message)"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        device_info \u003d self.find_host_lun_id("},{"line_number":417,"context_line":"            volume, connector[\u0027host\u0027], extra_specs)"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f1d235d_0e0eb53a","line":414,"range":{"start_line":414,"start_character":54,"end_line":414,"end_character":71},"updated":"2017-07-02 14:33:59.000000000","message":"data\u003dexception_message","commit_id":"ebe5038bed8097d04de0f5d6d5ef071753e525c8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"76ba20aad65bd255df503758ba4d1ad2a501d696","unresolved":false,"context_lines":[{"line_number":2058,"context_line":"        :param device_id: the source device id"},{"line_number":2059,"context_line":"        :param target_device: the target device id"},{"line_number":2060,"context_line":"        :param volume_name: the volume name"},{"line_number":2061,"context_line":"        :param rep_extra_specs: replication extra specifications"},{"line_number":2062,"context_line":"        \"\"\""},{"line_number":2063,"context_line":"        are_vols_paired, local_vol_state, pair_state \u003d ("},{"line_number":2064,"context_line":"            self.rest.are_vols_rdf_paired("}],"source_content_type":"text/x-python","patch_set":26,"id":"3f1d235d_7102a80b","line":2061,"updated":"2017-07-02 14:33:59.000000000","message":"Missing rdf_group param.","commit_id":"ebe5038bed8097d04de0f5d6d5ef071753e525c8"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"1dd50189f14a9c68fa7ea8b294679fc19d932a59","unresolved":false,"context_lines":[{"line_number":2058,"context_line":"        :param device_id: the source device id"},{"line_number":2059,"context_line":"        :param target_device: the target device id"},{"line_number":2060,"context_line":"        :param volume_name: the volume name"},{"line_number":2061,"context_line":"        :param rep_extra_specs: replication extra specifications"},{"line_number":2062,"context_line":"        \"\"\""},{"line_number":2063,"context_line":"        are_vols_paired, local_vol_state, pair_state \u003d ("},{"line_number":2064,"context_line":"            self.rest.are_vols_rdf_paired("}],"source_content_type":"text/x-python","patch_set":26,"id":"3f1d235d_3a0ab520","line":2061,"in_reply_to":"3f1d235d_7102a80b","updated":"2017-07-03 13:40:27.000000000","message":"Ok","commit_id":"ebe5038bed8097d04de0f5d6d5ef071753e525c8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                          {\u0027rep_config\u0027: self.rep_config})"},{"line_number":186,"context_line":"        elif self.rep_devices and len(self.rep_devices) \u003e 1:"},{"line_number":187,"context_line":"            LOG.error(\"More than one replication target is configured. \""},{"line_number":188,"context_line":"                      \"EMC VMAX only suppports a single replication \""},{"line_number":189,"context_line":"                      \"target. Replication will not be enabled.\")"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def _get_slo_workload_combinations(self, array_info):"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_7eecd3f2","line":188,"range":{"start_line":188,"start_character":23,"end_line":188,"end_character":26},"updated":"2017-07-10 14:44:49.000000000","message":"Dell EMC","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        :param extra_specs: the extra specifications"},{"line_number":321,"context_line":"        :param delete_src: flag to indicate if source should be deleted on"},{"line_number":322,"context_line":"                           if replication fails"},{"line_number":323,"context_line":"        :return: replication model_update"},{"line_number":324,"context_line":"        \"\"\""},{"line_number":325,"context_line":"        array \u003d volume_dict[\u0027array\u0027]"},{"line_number":326,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_1eb5dfee","line":323,"range":{"start_line":323,"start_character":8,"end_line":323,"end_character":16},"updated":"2017-07-10 14:44:49.000000000","message":":returns:","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":1957,"context_line":"        :param device_id: the device id"},{"line_number":1958,"context_line":"        :param extra_specs: the extra specifications"},{"line_number":1959,"context_line":"        :param target_device_id: the target device id"},{"line_number":1960,"context_line":"        :return: replication_status -- str, replication_driver_data -- dict"},{"line_number":1961,"context_line":"        \"\"\""},{"line_number":1962,"context_line":"        source_name \u003d volume.name"},{"line_number":1963,"context_line":"        LOG.debug(\u0027Starting replication setup \u0027"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_be3a6b31","line":1960,"range":{"start_line":1960,"start_character":8,"end_line":1960,"end_character":16},"updated":"2017-07-10 14:44:49.000000000","message":":returns:","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":1983,"context_line":""},{"line_number":1984,"context_line":"        LOG.debug(\"Create volume replica: Target device: %(target)s \""},{"line_number":1985,"context_line":"                  \"Source Device: %(source)s \""},{"line_number":1986,"context_line":"                  \"Volume identifier: %(name)s \" %"},{"line_number":1987,"context_line":"                  {\u0027target\u0027: target_device_id,"},{"line_number":1988,"context_line":"                   \u0027source\u0027: device_id,"},{"line_number":1989,"context_line":"                   \u0027name\u0027: target_name})"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_5e1357b9","line":1986,"range":{"start_line":1986,"start_character":46,"end_line":1986,"end_character":47},"updated":"2017-07-10 14:44:49.000000000","message":"Remove ending white space and add a period.","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":2009,"context_line":"        :param volume_name: the volume name"},{"line_number":2010,"context_line":"        :param device_id: the device id"},{"line_number":2011,"context_line":"        :param extra_specs: extra specifications"},{"line_number":2012,"context_line":"        :raises VolumeBackendAPIException:"},{"line_number":2013,"context_line":"        \"\"\""},{"line_number":2014,"context_line":"        LOG.debug(\u0027Starting cleanup replication from volume: \u0027"},{"line_number":2015,"context_line":"                  \u0027%s.\u0027, volume_name)"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_9efc4f3f","line":2012,"range":{"start_line":2012,"start_character":8,"end_line":2012,"end_character":15},"updated":"2017-07-10 14:44:49.000000000","message":":raises:","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":2009,"context_line":"        :param volume_name: the volume name"},{"line_number":2010,"context_line":"        :param device_id: the device id"},{"line_number":2011,"context_line":"        :param extra_specs: extra specifications"},{"line_number":2012,"context_line":"        :raises VolumeBackendAPIException:"},{"line_number":2013,"context_line":"        \"\"\""},{"line_number":2014,"context_line":"        LOG.debug(\u0027Starting cleanup replication from volume: \u0027"},{"line_number":2015,"context_line":"                  \u0027%s.\u0027, volume_name)"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_5e9477e8","line":2012,"range":{"start_line":2012,"start_character":41,"end_line":2012,"end_character":42},"updated":"2017-07-10 14:44:49.000000000","message":"Remove ending \":\"","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":2106,"context_line":"        \"\"\"Retrieves an SRDF group instance."},{"line_number":2107,"context_line":""},{"line_number":2108,"context_line":"        :param array: the array serial number"},{"line_number":2109,"context_line":"        :return: rdf_group_no, remote_array"},{"line_number":2110,"context_line":"        \"\"\""},{"line_number":2111,"context_line":"        if not self.rep_config:"},{"line_number":2112,"context_line":"            exception_message \u003d (_(\"Replication is not configured on \""}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_be84abb2","line":2109,"range":{"start_line":2109,"start_character":8,"end_line":2109,"end_character":16},"updated":"2017-07-10 14:44:49.000000000","message":":returns:","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":2143,"context_line":"        2. replication_status: new status for replication-enabled volume"},{"line_number":2144,"context_line":"        :param volumes: the list of volumes to be failed over"},{"line_number":2145,"context_line":"        :param secondary_id: the target backend"},{"line_number":2146,"context_line":"        :return: secondary_id, volume_update_list"},{"line_number":2147,"context_line":"        \"\"\""},{"line_number":2148,"context_line":"        volume_update_list \u003d []"},{"line_number":2149,"context_line":"        if secondary_id !\u003d \u0027default\u0027:"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_9e91eff4","line":2146,"range":{"start_line":2146,"start_character":8,"end_line":2146,"end_character":16},"updated":"2017-07-10 14:44:49.000000000","message":":returns:","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":2205,"context_line":"        :param vol: the volume object"},{"line_number":2206,"context_line":"        :param failover: flag to indicate failover or failback -- bool"},{"line_number":2207,"context_line":"        :param extra_specs: the extra specifications"},{"line_number":2208,"context_line":"        :return: model_update -- dict"},{"line_number":2209,"context_line":"        \"\"\""},{"line_number":2210,"context_line":"        loc \u003d vol.provider_location"},{"line_number":2211,"context_line":"        rep_data \u003d vol.replication_driver_data"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_3ec2dbea","line":2208,"range":{"start_line":2208,"start_character":8,"end_line":2208,"end_character":16},"updated":"2017-07-10 14:44:49.000000000","message":":returns:","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":2255,"context_line":"        volumes from primary array."},{"line_number":2256,"context_line":"        :param volume: the volume object"},{"line_number":2257,"context_line":"        :param extra_specs: the extra specifications"},{"line_number":2258,"context_line":"        :return: volume_update"},{"line_number":2259,"context_line":"        \"\"\""},{"line_number":2260,"context_line":"        # Check if volume still exists on the primary"},{"line_number":2261,"context_line":"        volume_update \u003d {\u0027volume_id\u0027: volume.id}"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_febb436f","line":2258,"range":{"start_line":2258,"start_character":8,"end_line":2258,"end_character":16},"updated":"2017-07-10 14:44:49.000000000","message":":returns:","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":2281,"context_line":"        :param array: the array serial number"},{"line_number":2282,"context_line":"        :param volume: the volume object"},{"line_number":2283,"context_line":"        :param device_id: the device id"},{"line_number":2284,"context_line":"        :return: target_device, target_array, rdf_group, state"},{"line_number":2285,"context_line":"        \"\"\""},{"line_number":2286,"context_line":"        target_device, local_vol_state, pair_state \u003d None, \u0027\u0027, \u0027\u0027"},{"line_number":2287,"context_line":"        rdf_group, remote_array \u003d self.get_rdf_details(array)"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_beadcb32","line":2284,"range":{"start_line":2284,"start_character":8,"end_line":2284,"end_character":16},"updated":"2017-07-10 14:44:49.000000000","message":":returns:","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":2387,"context_line":"        :param remote_array: the remote array serial number"},{"line_number":2388,"context_line":"        :param target_device: the target device id"},{"line_number":2389,"context_line":"        :param extra_specs: the extra specifications"},{"line_number":2390,"context_line":"        :return: rdf_dict"},{"line_number":2391,"context_line":"        \"\"\""},{"line_number":2392,"context_line":"        rep_extra_specs \u003d self._get_replication_extra_specs("},{"line_number":2393,"context_line":"            extra_specs, rep_config)"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_7ea73351","line":2390,"range":{"start_line":2390,"start_character":8,"end_line":2390,"end_character":16},"updated":"2017-07-10 14:44:49.000000000","message":":returns:","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":2445,"context_line":"        :param device_id: the device id"},{"line_number":2446,"context_line":"        :param volume_name: the volume name"},{"line_number":2447,"context_line":"        :param extra_specs: the extra specifications"},{"line_number":2448,"context_line":"        :return: storagegroup_name"},{"line_number":2449,"context_line":"        \"\"\""},{"line_number":2450,"context_line":"        do_disable_compression \u003d self.utils.is_compression_disabled("},{"line_number":2451,"context_line":"            extra_specs)"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_5e623718","line":2448,"range":{"start_line":2448,"start_character":8,"end_line":2448,"end_character":16},"updated":"2017-07-10 14:44:49.000000000","message":":returns:","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":2516,"context_line":""},{"line_number":2517,"context_line":"        :param rep_config: the replication configuration"},{"line_number":2518,"context_line":"        :param array_info: the array info"},{"line_number":2519,"context_line":"        :return: secondary_info - dict"},{"line_number":2520,"context_line":"        \"\"\""},{"line_number":2521,"context_line":"        secondary_info \u003d array_info.copy()"},{"line_number":2522,"context_line":"        secondary_info[\u0027SerialNumber\u0027] \u003d six.text_type(rep_config[\u0027array\u0027])"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_fe70e3de","line":2519,"range":{"start_line":2519,"start_character":8,"end_line":2519,"end_character":16},"updated":"2017-07-10 14:44:49.000000000","message":":returns:","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b17c8013910324ba284daa1de3c0597ccc9e406c","unresolved":false,"context_lines":[{"line_number":1539,"context_line":""},{"line_number":1540,"context_line":"        Leave the volume intact on the backend array."},{"line_number":1541,"context_line":"        :param volume: the volume object"},{"line_number":1542,"context_line":"        :raises VolumeBackendAPIException:"},{"line_number":1543,"context_line":"        \"\"\""},{"line_number":1544,"context_line":"        volume_name \u003d volume.name"},{"line_number":1545,"context_line":"        volume_id \u003d volume.id"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f1d235d_6bdcf045","side":"PARENT","line":1542,"updated":"2017-07-11 13:15:31.000000000","message":"Is this change intended?\n\nIn the future, please don\u0027t mix a feature patch with white space changes.","commit_id":"51252cf5049e1e714411ea7ce3f309c31e51822a"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"232171bf9aaf08fe8c31981221414942ffc13513","unresolved":false,"context_lines":[{"line_number":1539,"context_line":""},{"line_number":1540,"context_line":"        Leave the volume intact on the backend array."},{"line_number":1541,"context_line":"        :param volume: the volume object"},{"line_number":1542,"context_line":"        :raises VolumeBackendAPIException:"},{"line_number":1543,"context_line":"        \"\"\""},{"line_number":1544,"context_line":"        volume_name \u003d volume.name"},{"line_number":1545,"context_line":"        volume_id \u003d volume.id"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f1d235d_29cba053","side":"PARENT","line":1542,"in_reply_to":"3f1d235d_6bdcf045","updated":"2017-07-11 14:07:04.000000000","message":"yes this raises should be removed.","commit_id":"51252cf5049e1e714411ea7ce3f309c31e51822a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b17c8013910324ba284daa1de3c0597ccc9e406c","unresolved":false,"context_lines":[{"line_number":2196,"context_line":"                        volume, extra_specs)"},{"line_number":2197,"context_line":"                    volume_update_list.append(recovery)"},{"line_number":2198,"context_line":""},{"line_number":2199,"context_line":"        LOG.info(\"Failover host complete\")"},{"line_number":2200,"context_line":"        return secondary_id, volume_update_list"},{"line_number":2201,"context_line":""},{"line_number":2202,"context_line":"    def _failover_volume(self, vol, failover, extra_specs):"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f1d235d_2b21584e","line":2199,"updated":"2017-07-11 13:15:31.000000000","message":"Add ending period.","commit_id":"0e83ab97452b75c88edc528aac7f62056c9f3815"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"232171bf9aaf08fe8c31981221414942ffc13513","unresolved":false,"context_lines":[{"line_number":2196,"context_line":"                        volume, extra_specs)"},{"line_number":2197,"context_line":"                    volume_update_list.append(recovery)"},{"line_number":2198,"context_line":""},{"line_number":2199,"context_line":"        LOG.info(\"Failover host complete\")"},{"line_number":2200,"context_line":"        return secondary_id, volume_update_list"},{"line_number":2201,"context_line":""},{"line_number":2202,"context_line":"    def _failover_volume(self, vol, failover, extra_specs):"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f1d235d_e9efe8e6","line":2199,"in_reply_to":"3f1d235d_2b21584e","updated":"2017-07-11 14:07:04.000000000","message":"ok","commit_id":"0e83ab97452b75c88edc528aac7f62056c9f3815"}],"cinder/volume/drivers/dell_emc/vmax/fc.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":451,"context_line":"        :param volumes: the list of volumes to be failed over"},{"line_number":452,"context_line":"        :param secondary_id: the backend to be failed over to, is \u0027default\u0027"},{"line_number":453,"context_line":"                             if fail back"},{"line_number":454,"context_line":"        :return: secondary_id, volume_update_list"},{"line_number":455,"context_line":"        \"\"\""},{"line_number":456,"context_line":"        return self.common.failover_host(volumes, secondary_id)"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_9e1a0f15","line":454,"range":{"start_line":454,"start_character":8,"end_line":454,"end_character":16},"updated":"2017-07-10 14:44:49.000000000","message":":returns:","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"}],"cinder/volume/drivers/dell_emc/vmax/iscsi.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"76ba20aad65bd255df503758ba4d1ad2a501d696","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        \"\"\""},{"line_number":389,"context_line":"        return self.common.retype(volume, new_type, host)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"    def failover_host(self, context, volumes, secondary_id\u003dNone):"},{"line_number":392,"context_line":"        \"\"\"Failover volumes to a secondary host/ backend."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"        :param context: the context"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f1d235d_6e1d2972","line":391,"updated":"2017-07-02 14:33:59.000000000","message":"Please note that I have a patch in review that adds a param to this function.  If my patch gets merged before yours, you\u0027ll need to update this.\n\nhttps://review.openstack.org/#/c/477688/6/cinder/volume/driver.py","commit_id":"ebe5038bed8097d04de0f5d6d5ef071753e525c8"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"1dd50189f14a9c68fa7ea8b294679fc19d932a59","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        \"\"\""},{"line_number":389,"context_line":"        return self.common.retype(volume, new_type, host)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"    def failover_host(self, context, volumes, secondary_id\u003dNone):"},{"line_number":392,"context_line":"        \"\"\"Failover volumes to a secondary host/ backend."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"        :param context: the context"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f1d235d_da3741e3","line":391,"in_reply_to":"3f1d235d_6e1d2972","updated":"2017-07-03 13:40:27.000000000","message":"We will.  Thank you","commit_id":"ebe5038bed8097d04de0f5d6d5ef071753e525c8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b17c8013910324ba284daa1de3c0597ccc9e406c","unresolved":false,"context_lines":[{"line_number":395,"context_line":"        :param volumes: the list of volumes to be failed over"},{"line_number":396,"context_line":"        :param secondary_id: the backend to be failed over to, is \u0027default\u0027"},{"line_number":397,"context_line":"                             if fail back"},{"line_number":398,"context_line":"        :return: secondary_id, volume_update_list"},{"line_number":399,"context_line":"        \"\"\""},{"line_number":400,"context_line":"        return self.common.failover_host(volumes, secondary_id)"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f1d235d_6bcbd0a4","line":398,"range":{"start_line":398,"start_character":8,"end_line":398,"end_character":16},"updated":"2017-07-11 13:15:31.000000000","message":":returns:","commit_id":"0e83ab97452b75c88edc528aac7f62056c9f3815"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"232171bf9aaf08fe8c31981221414942ffc13513","unresolved":false,"context_lines":[{"line_number":395,"context_line":"        :param volumes: the list of volumes to be failed over"},{"line_number":396,"context_line":"        :param secondary_id: the backend to be failed over to, is \u0027default\u0027"},{"line_number":397,"context_line":"                             if fail back"},{"line_number":398,"context_line":"        :return: secondary_id, volume_update_list"},{"line_number":399,"context_line":"        \"\"\""},{"line_number":400,"context_line":"        return self.common.failover_host(volumes, secondary_id)"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f1d235d_a9a0d0a6","line":398,"range":{"start_line":398,"start_character":8,"end_line":398,"end_character":16},"in_reply_to":"3f1d235d_6bcbd0a4","updated":"2017-07-11 14:07:04.000000000","message":"Ok","commit_id":"0e83ab97452b75c88edc528aac7f62056c9f3815"}],"cinder/volume/drivers/dell_emc/vmax/masking.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"76ba20aad65bd255df503758ba4d1ad2a501d696","unresolved":false,"context_lines":[{"line_number":594,"context_line":"        \"\"\"Remove a volume from a storage group."},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        :param serial_number: the array serial number"},{"line_number":597,"context_line":"        :param device_id: the volume device id(s)"},{"line_number":598,"context_line":"        :param storagegroup_name: the name of the storage group"},{"line_number":599,"context_line":"        :param volume_name: the volume name"},{"line_number":600,"context_line":"        :param extra_specs: the extra specifications"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f1d235d_0e2595c2","line":597,"range":{"start_line":597,"start_character":26,"end_line":597,"end_character":49},"updated":"2017-07-02 14:33:59.000000000","message":"Does this contain more than 1 device id?  If so, please name the param device_ids; otherwise, remove (s).","commit_id":"ebe5038bed8097d04de0f5d6d5ef071753e525c8"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"1dd50189f14a9c68fa7ea8b294679fc19d932a59","unresolved":false,"context_lines":[{"line_number":594,"context_line":"        \"\"\"Remove a volume from a storage group."},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        :param serial_number: the array serial number"},{"line_number":597,"context_line":"        :param device_id: the volume device id(s)"},{"line_number":598,"context_line":"        :param storagegroup_name: the name of the storage group"},{"line_number":599,"context_line":"        :param volume_name: the volume name"},{"line_number":600,"context_line":"        :param extra_specs: the extra specifications"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f1d235d_5a09f1da","line":597,"range":{"start_line":597,"start_character":26,"end_line":597,"end_character":49},"in_reply_to":"3f1d235d_0e2595c2","updated":"2017-07-03 13:40:27.000000000","message":"I will remove the (s)","commit_id":"ebe5038bed8097d04de0f5d6d5ef071753e525c8"}],"cinder/volume/drivers/dell_emc/vmax/provision.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b17c8013910324ba284daa1de3c0597ccc9e406c","unresolved":false,"context_lines":[{"line_number":437,"context_line":"        :param failover: flag to indicate failover or failback -- bool"},{"line_number":438,"context_line":"        \"\"\""},{"line_number":439,"context_line":"        if local_vol_state \u003d\u003d WRITE_DISABLED:"},{"line_number":440,"context_line":"            LOG.info(\"Volume %(dev)s is already failed over. \","},{"line_number":441,"context_line":"                     {\u0027dev\u0027: device_id})"},{"line_number":442,"context_line":"            return"},{"line_number":443,"context_line":"        if failover:"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f1d235d_2b971893","line":440,"range":{"start_line":440,"start_character":60,"end_line":440,"end_character":61},"updated":"2017-07-11 13:15:31.000000000","message":"Remove trailing space.","commit_id":"0e83ab97452b75c88edc528aac7f62056c9f3815"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"232171bf9aaf08fe8c31981221414942ffc13513","unresolved":false,"context_lines":[{"line_number":437,"context_line":"        :param failover: flag to indicate failover or failback -- bool"},{"line_number":438,"context_line":"        \"\"\""},{"line_number":439,"context_line":"        if local_vol_state \u003d\u003d WRITE_DISABLED:"},{"line_number":440,"context_line":"            LOG.info(\"Volume %(dev)s is already failed over. \","},{"line_number":441,"context_line":"                     {\u0027dev\u0027: device_id})"},{"line_number":442,"context_line":"            return"},{"line_number":443,"context_line":"        if failover:"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f1d235d_a989f026","line":440,"range":{"start_line":440,"start_character":60,"end_line":440,"end_character":61},"in_reply_to":"3f1d235d_2b971893","updated":"2017-07-11 14:07:04.000000000","message":"Sure","commit_id":"0e83ab97452b75c88edc528aac7f62056c9f3815"}],"cinder/volume/drivers/dell_emc/vmax/rest.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":1732,"context_line":"        :param device_id: the device id"},{"line_number":1733,"context_line":"        :param target_device: the target device id"},{"line_number":1734,"context_line":"        :param rdf_group: the rdf group"},{"line_number":1735,"context_line":"        :return: paired -- bool, state -- string"},{"line_number":1736,"context_line":"        \"\"\""},{"line_number":1737,"context_line":"        paired, local_vol_state, rdf_pair_state \u003d False, \u0027\u0027, \u0027\u0027"},{"line_number":1738,"context_line":"        volume \u003d self.get_rdf_group_volume(array, rdf_group, device_id)"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f1d235d_3e641bb9","line":1735,"range":{"start_line":1735,"start_character":8,"end_line":1735,"end_character":16},"updated":"2017-07-10 14:44:49.000000000","message":":returns:","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"}],"cinder/volume/drivers/dell_emc/vmax/utils.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b17c8013910324ba284daa1de3c0597ccc9e406c","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        \"\"\"Check if a volume has been failed over."},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"        :param volume: the volume object"},{"line_number":496,"context_line":"        :return: bool"},{"line_number":497,"context_line":"        \"\"\""},{"line_number":498,"context_line":"        if volume is not None:"},{"line_number":499,"context_line":"            if volume.get(\u0027replication_status\u0027) and ("}],"source_content_type":"text/x-python","patch_set":35,"id":"3f1d235d_1836f0e8","line":496,"range":{"start_line":496,"start_character":8,"end_line":496,"end_character":16},"updated":"2017-07-11 13:15:31.000000000","message":":returns:","commit_id":"0e83ab97452b75c88edc528aac7f62056c9f3815"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"232171bf9aaf08fe8c31981221414942ffc13513","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        \"\"\"Check if a volume has been failed over."},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"        :param volume: the volume object"},{"line_number":496,"context_line":"        :return: bool"},{"line_number":497,"context_line":"        \"\"\""},{"line_number":498,"context_line":"        if volume is not None:"},{"line_number":499,"context_line":"            if volume.get(\u0027replication_status\u0027) and ("}],"source_content_type":"text/x-python","patch_set":35,"id":"3f1d235d_e976c83e","line":496,"range":{"start_line":496,"start_character":8,"end_line":496,"end_character":16},"in_reply_to":"3f1d235d_1836f0e8","updated":"2017-07-11 14:07:04.000000000","message":"Sure","commit_id":"0e83ab97452b75c88edc528aac7f62056c9f3815"}],"releasenotes/notes/vmax-rest-replication-612fcfd136cc076e.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"124b3c5c8951029fea8ec345d791161889d7e019","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adding Replication functionality to VMAX driver version 3.0."}],"source_content_type":"text/x-yaml","patch_set":32,"id":"3f1d235d_336c5407","line":4,"range":{"start_line":4,"start_character":11,"end_line":4,"end_character":22},"updated":"2017-07-10 14:44:49.000000000","message":"Replication V2.1","commit_id":"f0f89cf16ed7e4c58282a7c48bdeb3520600bf75"}]}
