)]}'
{"cinder/volume/drivers/pure.py":[{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"2e60ea3966e6315a215be3e8a1f97d6c46c8c17d","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        self._replication_retention_long_term \u003d None"},{"line_number":135,"context_line":"        self._replication_retention_long_term_per_day \u003d None"},{"line_number":136,"context_line":"        self._is_replication_enabled \u003d False"},{"line_number":137,"context_line":"        self._active_backend_id \u003d kwargs.get(\u0027active_backend_id\u0027, None)"},{"line_number":138,"context_line":"        self._replication_status \u003d kwargs.get(\u0027replication_status\u0027, None)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def parse_replication_configs(self):"},{"line_number":141,"context_line":"        self._replication_interval \u003d ("}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_d6940044","line":138,"range":{"start_line":137,"start_character":8,"end_line":138,"end_character":73},"updated":"2016-02-06 02:22:46.000000000","message":"These are based on a guess of how things might work... need to solidify v2.1 changes and adjust accordingly","commit_id":"e1f643a1ecb13c5a27065b856796527fe9d17ded"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"2e60ea3966e6315a215be3e8a1f97d6c46c8c17d","unresolved":false,"context_lines":[{"line_number":1107,"context_line":"        return secondary_array._target_device_id"},{"line_number":1108,"context_line":""},{"line_number":1109,"context_line":"    @log_debug_trace"},{"line_number":1110,"context_line":"    def list_replication_targets(self, context):"},{"line_number":1111,"context_line":"        \"\"\"Return valid replication targets."},{"line_number":1112,"context_line":""},{"line_number":1113,"context_line":"        This will be a list of all configured replication targets that are"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_36a314b4","line":1110,"updated":"2016-02-06 02:22:46.000000000","message":"Note: I left this is because I\u0027m anticipating it making a comeback in the v2.1 code... totally based on speculation","commit_id":"e1f643a1ecb13c5a27065b856796527fe9d17ded"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"796679c22caf2f2885794ff6fa7690f32cd121ed","unresolved":false,"context_lines":[{"line_number":1144,"context_line":"        # After failover we want our current array to be swapped for the"},{"line_number":1145,"context_line":"        # secondary array we just failed over to."},{"line_number":1146,"context_line":"        self._set_current_array(secondary_array)"},{"line_number":1147,"context_line":"        return secondary_array._backend_id, []"},{"line_number":1148,"context_line":""},{"line_number":1149,"context_line":"    def _does_pgroup_exist(self, array, pgroup_name):"},{"line_number":1150,"context_line":"        \"\"\"Return True/False\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"9aed3d3a_004a7283","line":1147,"range":{"start_line":1147,"start_character":8,"end_line":1147,"end_character":46},"updated":"2016-02-25 23:36:59.000000000","message":"Will your iscsi connections still work this way?  In other words, don\u0027t you want to provide the provider-id updates here so that you can connect to the volumes that were failed over?  Or are you changing your SVIP on the target to accept the sessions from the primary cluster?","commit_id":"1aae043a18a42e607975a16155160a13254daac4"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"457a8be015856ce44bc36e3b377d8e5b17e94543","unresolved":false,"context_lines":[{"line_number":1144,"context_line":"        # After failover we want our current array to be swapped for the"},{"line_number":1145,"context_line":"        # secondary array we just failed over to."},{"line_number":1146,"context_line":"        self._set_current_array(secondary_array)"},{"line_number":1147,"context_line":"        return secondary_array._backend_id, []"},{"line_number":1148,"context_line":""},{"line_number":1149,"context_line":"    def _does_pgroup_exist(self, array, pgroup_name):"},{"line_number":1150,"context_line":"        \"\"\"Return True/False\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"9aed3d3a_dae4f23c","line":1147,"range":{"start_line":1147,"start_character":8,"end_line":1147,"end_character":46},"in_reply_to":"9aed3d3a_004a7283","updated":"2016-02-26 00:42:35.000000000","message":"Existing iscsi sessions would be broken since we don\u0027t have a way to do transparent failover between Pure arrays (well, we do but between the controllers of a like single array... ). \n\nI\u0027ll have to make sure there is some good documentation for how to do the failover cleanup because an admin would need to go and disconnect volumes that were attached (and would, in theory, still be \u0027attached\u0027 in one form or another to compute nodes or whatever) and then on the next initialize_connection we would just attach the failed-over volume to the host with new target info and stuff from the secondary array.","commit_id":"1aae043a18a42e607975a16155160a13254daac4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"2f1b98df78aea8687bfbe4adf066e9a44af4f8ba","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        self._replication_retention_long_term \u003d None"},{"line_number":144,"context_line":"        self._replication_retention_long_term_per_day \u003d None"},{"line_number":145,"context_line":"        self._is_replication_enabled \u003d False"},{"line_number":146,"context_line":"        self._active_backend_id \u003d kwargs.get(\u0027active_backend_id\u0027, None)"},{"line_number":147,"context_line":"        self._failed_over_primary_array \u003d None"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def parse_replication_configs(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aed3d3a_ff2ca403","line":146,"updated":"2016-02-29 22:24:17.000000000","message":"None is the default, so this is a little redundant. Not a big deal though.","commit_id":"1ca71dc912e6ff5cd0fc572ffcdb2f9beaf21273"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4c7e00bc1b949d5c893a653eab376f4eed9beb19","unresolved":false,"context_lines":[{"line_number":1412,"context_line":"                raise exception.PureDriverException("},{"line_number":1413,"context_line":"                    reason\u003d_(\"Unable to find viable secondary array from\""},{"line_number":1414,"context_line":"                             \"configured targets: %(targets)s.\") %"},{"line_number":1415,"context_line":"                    {\"targets\": str(self._replication_target_arrays)}"},{"line_number":1416,"context_line":"                )"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":"        if not pg_snap:"}],"source_content_type":"text/x-python","patch_set":12,"id":"7af24918_c1936ef9","line":1415,"updated":"2016-03-01 16:04:44.000000000","message":"str -\u003e six.text_type","commit_id":"ee2b305e3f1441faf53dab4ed3e95a2f38e12dae"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"4e592ffc2500b44135b707efaea4859f595447be","unresolved":false,"context_lines":[{"line_number":1412,"context_line":"                raise exception.PureDriverException("},{"line_number":1413,"context_line":"                    reason\u003d_(\"Unable to find viable secondary array from\""},{"line_number":1414,"context_line":"                             \"configured targets: %(targets)s.\") %"},{"line_number":1415,"context_line":"                    {\"targets\": str(self._replication_target_arrays)}"},{"line_number":1416,"context_line":"                )"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":"        if not pg_snap:"}],"source_content_type":"text/x-python","patch_set":12,"id":"7af24918_ab41d50d","line":1415,"in_reply_to":"7af24918_c1936ef9","updated":"2016-03-01 18:33:13.000000000","message":"Done","commit_id":"ee2b305e3f1441faf53dab4ed3e95a2f38e12dae"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"ed743b66329af1e2b2b92da6bda2c63922dfc4d1","unresolved":false,"context_lines":[{"line_number":1163,"context_line":"                          \u0027snapshot %(snap)s.\u0027, {\u0027vol\u0027: vol_name,"},{"line_number":1164,"context_line":"                                                 \u0027snap\u0027: snap[\u0027name\u0027]})"},{"line_number":1165,"context_line":"        # The only volumes remaining in the vol_names set have been left behind"},{"line_number":1166,"context_line":"        # on the array and should be considered as being in an error state."},{"line_number":1167,"context_line":"        model_updates \u003d []"},{"line_number":1168,"context_line":"        for vol in volumes:"},{"line_number":1169,"context_line":"            if self._get_vol_name(vol) in vol_names:"}],"source_content_type":"text/x-python","patch_set":13,"id":"7af24918_0e21ecfb","line":1166,"range":{"start_line":1166,"start_character":0,"end_line":1166,"end_character":75},"updated":"2016-03-01 22:07:59.000000000","message":"Nice!  You caught this part!","commit_id":"c876da7eb1c42fcc68b227ce5039808e19378894"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"10bacfeb25731ab47df6717e135e9f5093276c0f","unresolved":false,"context_lines":[{"line_number":1407,"context_line":"                except Exception:"},{"line_number":1408,"context_line":"                    LOG.exception(_LE(\u0027Error finding replicated pg snapshot \u0027"},{"line_number":1409,"context_line":"                                      \u0027on %(secondary)s.\u0027),"},{"line_number":1410,"context_line":"                                  {\u0027secondary\u0027: array._backend_id})"},{"line_number":1411,"context_line":""},{"line_number":1412,"context_line":"            if not secondary_array:"},{"line_number":1413,"context_line":"                raise exception.PureDriverException("}],"source_content_type":"text/x-python","patch_set":14,"id":"7af24918_f9827b51","line":1410,"range":{"start_line":1410,"start_character":0,"end_line":1410,"end_character":67},"updated":"2016-03-02 05:48:33.000000000","message":"DOH!!! Stupid Logs...\n\nmmm... Dooooonut!","commit_id":"a9e32691c2722ca8583c3b856aa11520cc630e5e"}]}
