)]}'
{"cinder/tests/unit/test_hpe3par.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"5e1ae8344edbd2daa6926158f879611efb060234","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                            \u0027ssh_conn_timeout\u0027: HPE3PAR_SAN_SSH_CON_TIMEOUT,"},{"line_number":183,"context_line":"                            \u0027san_private_key\u0027: HPE3PAR_SAN_SSH_PRIVATE}]"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    list_rep_targets \u003d [{\u0027backend_id\u0027: \u0027target\u0027}]"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    volume_encrypted \u003d {\u0027name\u0027: VOLUME_NAME,"},{"line_number":188,"context_line":"                        \u0027id\u0027: VOLUME_ID,"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_aa750f99","line":185,"range":{"start_line":185,"start_character":39,"end_line":185,"end_character":47},"updated":"2016-02-16 16:14:52.000000000","message":"Should be REPLICATION_BACKEND_ID","commit_id":"9f8dd40688fad0fba32e21b06a2c4b00c18351fe"}],"cinder/volume/drivers/hpe/hpe_3par_common.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"abd79e5239bee6bbc42ad3bf0c568748024f3ed6","unresolved":false,"context_lines":[{"line_number":76,"context_line":"FLASH_CACHE_API_VERSION \u003d 30201200"},{"line_number":77,"context_line":"SRSTATLD_API_VERSION \u003d 30201200"},{"line_number":78,"context_line":"REMOTE_COPY_API_VERSION \u003d 30202290"},{"line_number":79,"context_line":"REMOTE_COPY_API_VERSION \u003d 30201200"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"hpe3par_opts \u003d ["},{"line_number":82,"context_line":"    cfg.StrOpt(\u0027hpe3par_api_url\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a57f1b5_2c752963","line":79,"range":{"start_line":79,"start_character":0,"end_line":79,"end_character":34},"updated":"2016-02-11 23:23:33.000000000","message":"just for testing","commit_id":"4ce64d5bce2b1c3102891e9282ce6fee5a5f7d8a"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"abd79e5239bee6bbc42ad3bf0c568748024f3ed6","unresolved":false,"context_lines":[{"line_number":2837,"context_line":"                    cl \u003d self._create_replication_client(failover_target)"},{"line_number":2838,"context_line":"                    cl.recoverRemoteCopyGroupFromDisaster("},{"line_number":2839,"context_line":"                        remote_rcg_name, self.RC_ACTION_CHANGE_TO_PRIMARY)"},{"line_number":2840,"context_line":"                except Exception as ex:"},{"line_number":2841,"context_line":"                    msg \u003d _(\"There was a problem with the failover (%s) and \""},{"line_number":2842,"context_line":"                            \"it was unsuccessful.\") % six.text_type(ex)"},{"line_number":2843,"context_line":"                    LOG.error(msg)"},{"line_number":2844,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":2845,"context_line":"                finally:"},{"line_number":2846,"context_line":"                    self._destroy_replication_client(cl)"},{"line_number":2847,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a57f1b5_0c8ced7d","line":2844,"range":{"start_line":2840,"start_character":16,"end_line":2844,"end_character":71},"updated":"2016-02-11 23:23:33.000000000","message":"Probably don\u0027t want to blow up everything if one volumes cannot be failed over for some reason. Probably will rework this.","commit_id":"4ce64d5bce2b1c3102891e9282ce6fee5a5f7d8a"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"abd79e5239bee6bbc42ad3bf0c568748024f3ed6","unresolved":false,"context_lines":[{"line_number":2926,"context_line":"            if self._is_replication_configured_correct():"},{"line_number":2927,"context_line":"                self._replication_enabled \u003d True"},{"line_number":2928,"context_line":""},{"line_number":2929,"context_line":"    def _get_replicated_volume_type_ids(self):"},{"line_number":2930,"context_line":"        replicated_type_ids \u003d []"},{"line_number":2931,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":2932,"context_line":"        vol_types \u003d volume_types.get_all_types(ctxt)"},{"line_number":2933,"context_line":"        for vol_type in vol_types:"},{"line_number":2934,"context_line":"            type_vals \u003d vol_types[vol_type]"},{"line_number":2935,"context_line":"            extra_specs \u003d type_vals.get(\u0027extra_specs\u0027)"},{"line_number":2936,"context_line":"            volume_backend_name \u003d extra_specs.get(\u0027volume_backend_name\u0027)"},{"line_number":2937,"context_line":"            if extra_specs.get(\u0027replication_enabled\u0027) \u003d\u003d \u0027\u003cis\u003e True\u0027 and ("},{"line_number":2938,"context_line":"               volume_backend_name \u003d\u003d self.config.volume_backend_name):"},{"line_number":2939,"context_line":"                replicated_type_ids.append(type_vals.get(\u0027id\u0027))"},{"line_number":2940,"context_line":"        return replicated_type_ids"},{"line_number":2941,"context_line":""},{"line_number":2942,"context_line":"    def _is_valid_replication_array(self, target):"},{"line_number":2943,"context_line":"        required_flags \u003d [\u0027hpe3par_api_url\u0027, \u0027hpe3par_username\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a57f1b5_ece5d137","line":2940,"range":{"start_line":2929,"start_character":4,"end_line":2940,"end_character":34},"updated":"2016-02-11 23:23:33.000000000","message":"Don\u0027t need this anymore","commit_id":"4ce64d5bce2b1c3102891e9282ce6fee5a5f7d8a"},{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"346b4eeca68c8e6cdf6914cbc56fc4f7817dae61","unresolved":false,"context_lines":[{"line_number":2860,"context_line":"        errors \u003d []"},{"line_number":2861,"context_line":"        return errors"},{"line_number":2862,"context_line":""},{"line_number":2863,"context_line":"    def replication_failover(self, context, secondary_backend_id, volumes):"},{"line_number":2864,"context_line":"        \"\"\"Force failover to a secondary replication target.\"\"\""},{"line_number":2865,"context_line":"        # Ensure replication is enabled before we try and failover."},{"line_number":2866,"context_line":"        if not self._replication_enabled:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bae84128_80b59932","line":2863,"range":{"start_line":2863,"start_character":44,"end_line":2863,"end_character":64},"updated":"2016-02-22 06:35:34.000000000","message":"The parameter order for this method is not consistent with https://review.openstack.org/#/c/275797.(Replication v2.1 (Cheesecake)) Please compare the order with volume/manager.py line 3232 in that patch.","commit_id":"1b562ce36c9a616b742ee50db90dd80176fa5292"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"0af025f06a92c27f39f6d2818ebf17b09e46de8a","unresolved":false,"context_lines":[{"line_number":2860,"context_line":"        errors \u003d []"},{"line_number":2861,"context_line":"        return errors"},{"line_number":2862,"context_line":""},{"line_number":2863,"context_line":"    def replication_failover(self, context, secondary_backend_id, volumes):"},{"line_number":2864,"context_line":"        \"\"\"Force failover to a secondary replication target.\"\"\""},{"line_number":2865,"context_line":"        # Ensure replication is enabled before we try and failover."},{"line_number":2866,"context_line":"        if not self._replication_enabled:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bae84128_b5ac4436","line":2863,"range":{"start_line":2863,"start_character":44,"end_line":2863,"end_character":64},"in_reply_to":"bae84128_80b59932","updated":"2016-02-22 16:08:58.000000000","message":"Done","commit_id":"1b562ce36c9a616b742ee50db90dd80176fa5292"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"6ea760dd1e44d2d83e25c0245461084f266f3f49","unresolved":false,"context_lines":[{"line_number":2902,"context_line":"                    cl.recoverRemoteCopyGroupFromDisaster("},{"line_number":2903,"context_line":"                        remote_rcg_name, self.RC_ACTION_CHANGE_TO_PRIMARY)"},{"line_number":2904,"context_line":"                    volume_update_list.append("},{"line_number":2905,"context_line":"                        {\u0027volume_id\u0027: volume[\u0027id\u0027],"},{"line_number":2906,"context_line":"                         \u0027replication_status\u0027: \u0027failed-over\u0027})"},{"line_number":2907,"context_line":"                except Exception as ex:"},{"line_number":2908,"context_line":"                    msg \u003d (_LE(\"There was a problem with the failover \""}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_1256b8cd","line":2905,"updated":"2016-02-23 11:31:02.000000000","message":"looks like the dict returned is not consistent with https://review.openstack.org/#/c/275797/？","commit_id":"ff2c9f0c013f2d4356c6eb651083a45933c0e8f4"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"6054b32ed460405b551beb1b3caaf4178c38c56a","unresolved":false,"context_lines":[{"line_number":2902,"context_line":"                    cl.recoverRemoteCopyGroupFromDisaster("},{"line_number":2903,"context_line":"                        remote_rcg_name, self.RC_ACTION_CHANGE_TO_PRIMARY)"},{"line_number":2904,"context_line":"                    volume_update_list.append("},{"line_number":2905,"context_line":"                        {\u0027volume_id\u0027: volume[\u0027id\u0027],"},{"line_number":2906,"context_line":"                         \u0027replication_status\u0027: \u0027failed-over\u0027})"},{"line_number":2907,"context_line":"                except Exception as ex:"},{"line_number":2908,"context_line":"                    msg \u003d (_LE(\"There was a problem with the failover \""}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_4c083529","line":2905,"in_reply_to":"bae84128_1256b8cd","updated":"2016-02-25 00:22:51.000000000","message":"Done, will be in the next patch set","commit_id":"ff2c9f0c013f2d4356c6eb651083a45933c0e8f4"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"6ea760dd1e44d2d83e25c0245461084f266f3f49","unresolved":false,"context_lines":[{"line_number":2912,"context_line":"                           {\u0027error\u0027: six.text_type(ex),"},{"line_number":2913,"context_line":"                            \u0027volume\u0027: volume[\u0027id\u0027]})"},{"line_number":2914,"context_line":"                    LOG.error(msg)"},{"line_number":2915,"context_line":"                    volume_update_list.append("},{"line_number":2916,"context_line":"                        {\u0027volume_id\u0027: volume[\u0027id\u0027],"},{"line_number":2917,"context_line":"                         \u0027replication_status\u0027: \u0027error\u0027})"},{"line_number":2918,"context_line":"                finally:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_92492863","line":2915,"updated":"2016-02-23 11:31:02.000000000","message":"One question: if you do not update provider_location for the failed-over volume, is there any unexpected error after then?","commit_id":"ff2c9f0c013f2d4356c6eb651083a45933c0e8f4"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"6054b32ed460405b551beb1b3caaf4178c38c56a","unresolved":false,"context_lines":[{"line_number":2912,"context_line":"                           {\u0027error\u0027: six.text_type(ex),"},{"line_number":2913,"context_line":"                            \u0027volume\u0027: volume[\u0027id\u0027]})"},{"line_number":2914,"context_line":"                    LOG.error(msg)"},{"line_number":2915,"context_line":"                    volume_update_list.append("},{"line_number":2916,"context_line":"                        {\u0027volume_id\u0027: volume[\u0027id\u0027],"},{"line_number":2917,"context_line":"                         \u0027replication_status\u0027: \u0027error\u0027})"},{"line_number":2918,"context_line":"                finally:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_cc1c456d","line":2915,"in_reply_to":"bae84128_92492863","updated":"2016-02-25 00:22:51.000000000","message":"Not with our 3PAR implementation. There isn\u0027t really a need for provider_location as of now.","commit_id":"ff2c9f0c013f2d4356c6eb651083a45933c0e8f4"},{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"d8f706a08cab55c80233b12d66258ac5fa06d572","unresolved":false,"context_lines":[{"line_number":2946,"context_line":"        return volume_update_list"},{"line_number":2947,"context_line":""},{"line_number":2948,"context_line":"    def _is_host_ready_for_failback(self, volumes):"},{"line_number":2949,"context_line":"        \"\"\"Checks to make sure the volume has been syncrhonized"},{"line_number":2950,"context_line":""},{"line_number":2951,"context_line":"        This ensures that all the remote copy targets have been restored"},{"line_number":2952,"context_line":"        to their natural direction, and all of the volumes have been"}],"source_content_type":"text/x-python","patch_set":13,"id":"7af24918_b34e8a94","line":2949,"range":{"start_line":2949,"start_character":51,"end_line":2949,"end_character":63},"updated":"2016-03-01 12:43:52.000000000","message":"Typo. s/syncrhonized/synchronized","commit_id":"1a8d49c986308a5b2da4b952796d6356946cc4f2"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"c51c15e1a1b8ea814288f7fa6fd728633783e409","unresolved":false,"context_lines":[{"line_number":2946,"context_line":"        return volume_update_list"},{"line_number":2947,"context_line":""},{"line_number":2948,"context_line":"    def _is_host_ready_for_failback(self, volumes):"},{"line_number":2949,"context_line":"        \"\"\"Checks to make sure the volume has been syncrhonized"},{"line_number":2950,"context_line":""},{"line_number":2951,"context_line":"        This ensures that all the remote copy targets have been restored"},{"line_number":2952,"context_line":"        to their natural direction, and all of the volumes have been"}],"source_content_type":"text/x-python","patch_set":13,"id":"7af24918_fbb57dd0","line":2949,"range":{"start_line":2949,"start_character":51,"end_line":2949,"end_character":63},"in_reply_to":"7af24918_b34e8a94","updated":"2016-03-01 15:41:42.000000000","message":"Done","commit_id":"1a8d49c986308a5b2da4b952796d6356946cc4f2"},{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"d8f706a08cab55c80233b12d66258ac5fa06d572","unresolved":false,"context_lines":[{"line_number":2967,"context_line":"                    for target in targets:"},{"line_number":2968,"context_line":"                        if target[\u0027roleReversed\u0027] or ("},{"line_number":2969,"context_line":"                           target[\u0027state\u0027] !\u003d self.RC_GROUP_STARTED):"},{"line_number":2970,"context_line":"                            is_ready \u003d False"},{"line_number":2971,"context_line":"                            break"},{"line_number":2972,"context_line":""},{"line_number":2973,"context_line":"                    # Make sure all volumes are fully synced."}],"source_content_type":"text/x-python","patch_set":13,"id":"7af24918_c551c910","line":2970,"range":{"start_line":2970,"start_character":0,"end_line":2970,"end_character":44},"updated":"2016-03-01 12:43:52.000000000","message":"Can we just return here if we found is_ready \u003d\u003d False, and skip the next loops?","commit_id":"1a8d49c986308a5b2da4b952796d6356946cc4f2"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"c51c15e1a1b8ea814288f7fa6fd728633783e409","unresolved":false,"context_lines":[{"line_number":2967,"context_line":"                    for target in targets:"},{"line_number":2968,"context_line":"                        if target[\u0027roleReversed\u0027] or ("},{"line_number":2969,"context_line":"                           target[\u0027state\u0027] !\u003d self.RC_GROUP_STARTED):"},{"line_number":2970,"context_line":"                            is_ready \u003d False"},{"line_number":2971,"context_line":"                            break"},{"line_number":2972,"context_line":""},{"line_number":2973,"context_line":"                    # Make sure all volumes are fully synced."}],"source_content_type":"text/x-python","patch_set":13,"id":"7af24918_7b268d17","line":2970,"range":{"start_line":2970,"start_character":0,"end_line":2970,"end_character":44},"in_reply_to":"7af24918_c551c910","updated":"2016-03-01 15:41:42.000000000","message":"That is essentially what it does, the loop is broken and the next loop is entirely skipped if is_ready is set to False. I can modify it a bit and add multiple return statements instead.","commit_id":"1a8d49c986308a5b2da4b952796d6356946cc4f2"},{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"d8f706a08cab55c80233b12d66258ac5fa06d572","unresolved":false,"context_lines":[{"line_number":2978,"context_line":"                            for remote_volume in remote_volumes:"},{"line_number":2979,"context_line":"                                if remote_volume[\u0027syncStatus\u0027] !\u003d ("},{"line_number":2980,"context_line":"                                   self.SYNC_STATUS_COMPLETED):"},{"line_number":2981,"context_line":"                                    is_ready \u003d False"},{"line_number":2982,"context_line":"                                    break"},{"line_number":2983,"context_line":"        except Exception:"},{"line_number":2984,"context_line":"            # If there was a problem, we will return false so we can"}],"source_content_type":"text/x-python","patch_set":13,"id":"7af24918_e57325b3","line":2981,"range":{"start_line":2981,"start_character":36,"end_line":2981,"end_character":52},"updated":"2016-03-01 12:43:52.000000000","message":"ditto.","commit_id":"1a8d49c986308a5b2da4b952796d6356946cc4f2"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"c51c15e1a1b8ea814288f7fa6fd728633783e409","unresolved":false,"context_lines":[{"line_number":2978,"context_line":"                            for remote_volume in remote_volumes:"},{"line_number":2979,"context_line":"                                if remote_volume[\u0027syncStatus\u0027] !\u003d ("},{"line_number":2980,"context_line":"                                   self.SYNC_STATUS_COMPLETED):"},{"line_number":2981,"context_line":"                                    is_ready \u003d False"},{"line_number":2982,"context_line":"                                    break"},{"line_number":2983,"context_line":"        except Exception:"},{"line_number":2984,"context_line":"            # If there was a problem, we will return false so we can"}],"source_content_type":"text/x-python","patch_set":13,"id":"7af24918_5bd8f1ef","line":2981,"range":{"start_line":2981,"start_character":36,"end_line":2981,"end_character":52},"in_reply_to":"7af24918_e57325b3","updated":"2016-03-01 15:41:42.000000000","message":"Done","commit_id":"1a8d49c986308a5b2da4b952796d6356946cc4f2"}],"cinder/volume/drivers/hpe/hpe_3par_fc.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"abd79e5239bee6bbc42ad3bf0c568748024f3ed6","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":105,"context_line":"        super(HPE3PARFCDriver, self).__init__(*args, **kwargs)"},{"line_number":106,"context_line":"        self._active_backend_id \u003d kwargs.get(\u0027active_backend_id\u0027, None)"},{"line_number":107,"context_line":"        self.configuration.append_config_values(hpecommon.hpe3par_opts)"},{"line_number":108,"context_line":"        self.configuration.append_config_values(san.san_opts)"},{"line_number":109,"context_line":"        self.lookup_service \u003d fczm_utils.create_lookup_service()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a57f1b5_6c24815f","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":71},"updated":"2016-02-11 23:23:33.000000000","message":"Waiting to see how the driver will receive this.","commit_id":"4ce64d5bce2b1c3102891e9282ce6fee5a5f7d8a"}],"cinder/volume/drivers/hpe/hpe_3par_iscsi.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"abd79e5239bee6bbc42ad3bf0c568748024f3ed6","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":117,"context_line":"        super(HPE3PARISCSIDriver, self).__init__(*args, **kwargs)"},{"line_number":118,"context_line":"        self._active_backend_id \u003d kwargs.get(\u0027active_backend_id\u0027, None)"},{"line_number":119,"context_line":"        self.configuration.append_config_values(hpecommon.hpe3par_opts)"},{"line_number":120,"context_line":"        self.configuration.append_config_values(san.san_opts)"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a57f1b5_8c29bd39","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":71},"updated":"2016-02-11 23:23:33.000000000","message":"Waiting to see how the driver will receive this.","commit_id":"4ce64d5bce2b1c3102891e9282ce6fee5a5f7d8a"}]}
