)]}'
{"cinder/volume/drivers/hpe/hpe_lefthand_iscsi.py":[{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"4f1e78031778346004198d19ea2f4fa7c8e6ff2e","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"            volume_update_list \u003d []"},{"line_number":1415,"context_line":"            for volume in volumes:"},{"line_number":1416,"context_line":"                if self._volume_of_replicated_type(volume):"},{"line_number":1417,"context_line":"                    # Try and stop the remote snapshot schedule. If the priamry"},{"line_number":1418,"context_line":"                    # array is down, we will continue with the failover."},{"line_number":1419,"context_line":"                    client \u003d None"},{"line_number":1420,"context_line":"                    try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_8431bf5c","line":1417,"range":{"start_line":1417,"start_character":72,"end_line":1417,"end_character":79},"updated":"2016-03-01 07:12:06.000000000","message":"Typo. s/priamry/primary","commit_id":"2650eafdbd1df3380b07ba7945ee3370eb227502"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"ed65b2cdd956836c230178fa7df6f586d5f76262","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"            volume_update_list \u003d []"},{"line_number":1415,"context_line":"            for volume in volumes:"},{"line_number":1416,"context_line":"                if self._volume_of_replicated_type(volume):"},{"line_number":1417,"context_line":"                    # Try and stop the remote snapshot schedule. If the priamry"},{"line_number":1418,"context_line":"                    # array is down, we will continue with the failover."},{"line_number":1419,"context_line":"                    client \u003d None"},{"line_number":1420,"context_line":"                    try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7af24918_86417c3c","line":1417,"range":{"start_line":1417,"start_character":72,"end_line":1417,"end_character":79},"in_reply_to":"9aed3d3a_8431bf5c","updated":"2016-03-01 15:44:37.000000000","message":"Done","commit_id":"2650eafdbd1df3380b07ba7945ee3370eb227502"},{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"4f1e78031778346004198d19ea2f4fa7c8e6ff2e","unresolved":false,"context_lines":[{"line_number":1603,"context_line":"        return volume_update_list"},{"line_number":1604,"context_line":""},{"line_number":1605,"context_line":"    def _is_host_ready_for_failback(self, volumes, array_config):"},{"line_number":1606,"context_line":"        \"\"\"Checks to make sure the volumes have been syncrhonized"},{"line_number":1607,"context_line":""},{"line_number":1608,"context_line":"        This entails ensuring the remote snapshot schedule has been resumed"},{"line_number":1609,"context_line":"        on the backends and the secondary volume\u0027s data has been copied back"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_7f8ec22e","line":1606,"range":{"start_line":1606,"start_character":53,"end_line":1606,"end_character":65},"updated":"2016-03-01 07:12:06.000000000","message":"Typo. s/syncronized/synchronized","commit_id":"2650eafdbd1df3380b07ba7945ee3370eb227502"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"ed65b2cdd956836c230178fa7df6f586d5f76262","unresolved":false,"context_lines":[{"line_number":1603,"context_line":"        return volume_update_list"},{"line_number":1604,"context_line":""},{"line_number":1605,"context_line":"    def _is_host_ready_for_failback(self, volumes, array_config):"},{"line_number":1606,"context_line":"        \"\"\"Checks to make sure the volumes have been syncrhonized"},{"line_number":1607,"context_line":""},{"line_number":1608,"context_line":"        This entails ensuring the remote snapshot schedule has been resumed"},{"line_number":1609,"context_line":"        on the backends and the secondary volume\u0027s data has been copied back"}],"source_content_type":"text/x-python","patch_set":1,"id":"7af24918_06828c52","line":1606,"range":{"start_line":1606,"start_character":53,"end_line":1606,"end_character":65},"in_reply_to":"9aed3d3a_7f8ec22e","updated":"2016-03-01 15:44:37.000000000","message":"Done","commit_id":"2650eafdbd1df3380b07ba7945ee3370eb227502"},{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"4f1e78031778346004198d19ea2f4fa7c8e6ff2e","unresolved":false,"context_lines":[{"line_number":1626,"context_line":""},{"line_number":1627,"context_line":"                    volume_info \u003d cl.getVolumeByName(volume[\u0027name\u0027])"},{"line_number":1628,"context_line":"                    if not volume_info[\u0027isPrimary\u0027] or not is_schedule_active:"},{"line_number":1629,"context_line":"                        is_ready \u003d False"},{"line_number":1630,"context_line":"        except Exception as ex:"},{"line_number":1631,"context_line":"            LOG.error(_LW(\"There was a problem when trying to determine if \""},{"line_number":1632,"context_line":"                          \"the volume can be failed-back: %s\") %"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_ff52d265","line":1629,"range":{"start_line":1629,"start_character":24,"end_line":1629,"end_character":40},"updated":"2016-03-01 07:12:06.000000000","message":"Maybe we can put a break here and skip the checking left?","commit_id":"2650eafdbd1df3380b07ba7945ee3370eb227502"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"ed65b2cdd956836c230178fa7df6f586d5f76262","unresolved":false,"context_lines":[{"line_number":1626,"context_line":""},{"line_number":1627,"context_line":"                    volume_info \u003d cl.getVolumeByName(volume[\u0027name\u0027])"},{"line_number":1628,"context_line":"                    if not volume_info[\u0027isPrimary\u0027] or not is_schedule_active:"},{"line_number":1629,"context_line":"                        is_ready \u003d False"},{"line_number":1630,"context_line":"        except Exception as ex:"},{"line_number":1631,"context_line":"            LOG.error(_LW(\"There was a problem when trying to determine if \""},{"line_number":1632,"context_line":"                          \"the volume can be failed-back: %s\") %"}],"source_content_type":"text/x-python","patch_set":1,"id":"7af24918_c6b9c430","line":1629,"range":{"start_line":1629,"start_character":24,"end_line":1629,"end_character":40},"in_reply_to":"9aed3d3a_ff52d265","updated":"2016-03-01 15:44:37.000000000","message":"Done","commit_id":"2650eafdbd1df3380b07ba7945ee3370eb227502"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"7563255bacb8699ced6bc6c861ecfbd68f96bc60","unresolved":false,"context_lines":[{"line_number":1412,"context_line":""},{"line_number":1413,"context_line":"            target_id \u003d failover_target[\u0027backend_id\u0027]"},{"line_number":1414,"context_line":"            volume_update_list \u003d []"},{"line_number":1415,"context_line":"            for volume in volumes:"},{"line_number":1416,"context_line":"                if self._volume_of_replicated_type(volume):"},{"line_number":1417,"context_line":"                    # Try and stop the remote snapshot schedule. If the primary"},{"line_number":1418,"context_line":"                    # array is down, we will continue with the failover."}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_6e035074","line":1415,"range":{"start_line":1415,"start_character":0,"end_line":1415,"end_character":34},"updated":"2016-03-01 22:05:45.000000000","message":"Oh, one thing I forgot, you probably want to update the status of the non-replicating volumes as well.  Set them to an error state.  Otherwise the user has no indication of the fact that they just lost those volumes and they\u0027ll try and access them etc.","commit_id":"1b9e13f993daaac27454079cc92659484be79b00"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"81b2108ca1db420b79e125c5fdefdad734438df9","unresolved":false,"context_lines":[{"line_number":1412,"context_line":""},{"line_number":1413,"context_line":"            target_id \u003d failover_target[\u0027backend_id\u0027]"},{"line_number":1414,"context_line":"            volume_update_list \u003d []"},{"line_number":1415,"context_line":"            for volume in volumes:"},{"line_number":1416,"context_line":"                if self._volume_of_replicated_type(volume):"},{"line_number":1417,"context_line":"                    # Try and stop the remote snapshot schedule. If the primary"},{"line_number":1418,"context_line":"                    # array is down, we will continue with the failover."}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_f683b6ca","line":1415,"range":{"start_line":1415,"start_character":0,"end_line":1415,"end_character":34},"in_reply_to":"7af24918_6e035074","updated":"2016-03-01 23:37:54.000000000","message":"Done","commit_id":"1b9e13f993daaac27454079cc92659484be79b00"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"99db6280ba415f3eb6d25b68f3588848dc70af6d","unresolved":false,"context_lines":[{"line_number":1418,"context_line":"                    # array is down, we will continue with the failover."},{"line_number":1419,"context_line":"                    client \u003d None"},{"line_number":1420,"context_line":"                    try:"},{"line_number":1421,"context_line":"                        client \u003d self._login(timeout\u003d30)"},{"line_number":1422,"context_line":"                        name \u003d volume[\u0027name\u0027] + self.REP_SCHEDULE_SUFFIX + ("},{"line_number":1423,"context_line":"                            \"_Pri\")"},{"line_number":1424,"context_line":"                        client.stopRemoteSnapshotSchedule(name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_6e0eb035","line":1421,"range":{"start_line":1421,"start_character":0,"end_line":1421,"end_character":56},"updated":"2016-03-01 22:00:02.000000000","message":"OUCH, 30 seconds?  That could cause some serious issues for customers I think.  Just to log in to the LH box?","commit_id":"1b9e13f993daaac27454079cc92659484be79b00"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"81b2108ca1db420b79e125c5fdefdad734438df9","unresolved":false,"context_lines":[{"line_number":1418,"context_line":"                    # array is down, we will continue with the failover."},{"line_number":1419,"context_line":"                    client \u003d None"},{"line_number":1420,"context_line":"                    try:"},{"line_number":1421,"context_line":"                        client \u003d self._login(timeout\u003d30)"},{"line_number":1422,"context_line":"                        name \u003d volume[\u0027name\u0027] + self.REP_SCHEDULE_SUFFIX + ("},{"line_number":1423,"context_line":"                            \"_Pri\")"},{"line_number":1424,"context_line":"                        client.stopRemoteSnapshotSchedule(name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_969a3213","line":1421,"range":{"start_line":1421,"start_character":0,"end_line":1421,"end_character":56},"in_reply_to":"7af24918_6e0eb035","updated":"2016-03-01 23:37:54.000000000","message":"We give an extremely generous 30 seconds for the request to the primary to timeout in order to confirm the array is actually offline. Without the timeout value, it will set until the cinder API times out the request, so I am forcing a timeout here.","commit_id":"1b9e13f993daaac27454079cc92659484be79b00"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"99db6280ba415f3eb6d25b68f3588848dc70af6d","unresolved":false,"context_lines":[{"line_number":1582,"context_line":"                        {\u0027volume_id\u0027: volume[\u0027id\u0027],"},{"line_number":1583,"context_line":"                         \u0027updates\u0027: {\u0027replication_status\u0027: \u0027available\u0027,"},{"line_number":1584,"context_line":"                                     \u0027provider_location\u0027:"},{"line_number":1585,"context_line":"                                     provider_location[\u0027provider_location\u0027]}})"},{"line_number":1586,"context_line":"                except Exception as ex:"},{"line_number":1587,"context_line":"                    # The secondary array was not able to execute the fail-back"},{"line_number":1588,"context_line":"                    # properly. The replication status is now in an unknown"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_ce72647c","line":1585,"range":{"start_line":1585,"start_character":0,"end_line":1585,"end_character":78},"updated":"2016-03-01 22:00:02.000000000","message":"Do you need to update provider_auth here?  I\u0027m assuming you\u0027re duplicating the same credentials with the volume, but worth mentioning.","commit_id":"1b9e13f993daaac27454079cc92659484be79b00"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"81b2108ca1db420b79e125c5fdefdad734438df9","unresolved":false,"context_lines":[{"line_number":1582,"context_line":"                        {\u0027volume_id\u0027: volume[\u0027id\u0027],"},{"line_number":1583,"context_line":"                         \u0027updates\u0027: {\u0027replication_status\u0027: \u0027available\u0027,"},{"line_number":1584,"context_line":"                                     \u0027provider_location\u0027:"},{"line_number":1585,"context_line":"                                     provider_location[\u0027provider_location\u0027]}})"},{"line_number":1586,"context_line":"                except Exception as ex:"},{"line_number":1587,"context_line":"                    # The secondary array was not able to execute the fail-back"},{"line_number":1588,"context_line":"                    # properly. The replication status is now in an unknown"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_f6445675","line":1585,"range":{"start_line":1585,"start_character":0,"end_line":1585,"end_character":78},"in_reply_to":"7af24918_ce72647c","updated":"2016-03-01 23:37:54.000000000","message":"After a failover, the driver instance will log into to secondary array based on the value of self._active_backend_id. It will have all the login credentials to do this. The provider_location is being updated here so we can still attach the volumes.","commit_id":"1b9e13f993daaac27454079cc92659484be79b00"}]}
