)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b00d52d931ef23e4317fb699c30d1082603a6cec","unresolved":false,"context_lines":[{"line_number":22,"context_line":"To ensure that snapshots are indeed available across replicas:"},{"line_number":23,"context_line":"1) Track snapshots across replicas as different"},{"line_number":24,"context_line":"    snapshot instances."},{"line_number":25,"context_line":"2) Make an \u0027aggregate_snapshot_status\u0027 property to convey the"},{"line_number":26,"context_line":"    availability of a snapshot across all the active/in_sync"},{"line_number":27,"context_line":"    replicas of a share."},{"line_number":28,"context_line":"3) Provide all the information necessary for drivers to:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1af94dfe_056b3686","line":25,"range":{"start_line":25,"start_character":12,"end_line":25,"end_character":37},"updated":"2016-03-17 16:52:52.000000000","message":"will fix this to \u0027aggregate_status\u0027","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"13f37df1fe1323d3cde3ec673e8bb43bcc26ae20","unresolved":false,"context_lines":[{"line_number":22,"context_line":"To ensure that snapshots are indeed available across replicas:"},{"line_number":23,"context_line":"1) Track snapshots across replicas as different"},{"line_number":24,"context_line":"    snapshot instances."},{"line_number":25,"context_line":"2) Make an \u0027aggregate_snapshot_status\u0027 property to convey the"},{"line_number":26,"context_line":"    availability of a snapshot across all the active/in_sync"},{"line_number":27,"context_line":"    replicas of a share."},{"line_number":28,"context_line":"3) Provide all the information necessary for drivers to:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1af94dfe_7519f1d6","line":25,"range":{"start_line":25,"start_character":12,"end_line":25,"end_character":37},"in_reply_to":"1af94dfe_056b3686","updated":"2016-03-17 19:06:25.000000000","message":"Done","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b00d52d931ef23e4317fb699c30d1082603a6cec","unresolved":false,"context_lines":[{"line_number":28,"context_line":"3) Provide all the information necessary for drivers to:"},{"line_number":29,"context_line":"    - Create a snapshot on the primary and send it across"},{"line_number":30,"context_line":"       to all replicas"},{"line_number":31,"context_line":"    - Update snapshot status across replicas as and when it"},{"line_number":32,"context_line":"       transitions from \u0027creating\u0027 to \u0027available\u0027"},{"line_number":33,"context_line":"    - Delete a snapshot on the primary and ensure that it is"},{"line_number":34,"context_line":"       deleted in the replicas as well."},{"line_number":35,"context_line":"4) Set snapshot instance to \u0027error\u0027 if it was in any transitional"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1af94dfe_2533d2ac","line":32,"range":{"start_line":31,"start_character":6,"end_line":32,"end_character":49},"updated":"2016-03-17 16:52:52.000000000","message":"what?","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"13f37df1fe1323d3cde3ec673e8bb43bcc26ae20","unresolved":false,"context_lines":[{"line_number":28,"context_line":"3) Provide all the information necessary for drivers to:"},{"line_number":29,"context_line":"    - Create a snapshot on the primary and send it across"},{"line_number":30,"context_line":"       to all replicas"},{"line_number":31,"context_line":"    - Update snapshot status across replicas as and when it"},{"line_number":32,"context_line":"       transitions from \u0027creating\u0027 to \u0027available\u0027"},{"line_number":33,"context_line":"    - Delete a snapshot on the primary and ensure that it is"},{"line_number":34,"context_line":"       deleted in the replicas as well."},{"line_number":35,"context_line":"4) Set snapshot instance to \u0027error\u0027 if it was in any transitional"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1af94dfe_957bddf4","line":32,"range":{"start_line":31,"start_character":6,"end_line":32,"end_character":49},"in_reply_to":"1af94dfe_2533d2ac","updated":"2016-03-17 19:06:25.000000000","message":"Done","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b00d52d931ef23e4317fb699c30d1082603a6cec","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    - Update snapshot status across replicas as and when it"},{"line_number":32,"context_line":"       transitions from \u0027creating\u0027 to \u0027available\u0027"},{"line_number":33,"context_line":"    - Delete a snapshot on the primary and ensure that it is"},{"line_number":34,"context_line":"       deleted in the replicas as well."},{"line_number":35,"context_line":"4) Set snapshot instance to \u0027error\u0027 if it was in any transitional"},{"line_number":36,"context_line":"    state when it\u0027s replica was \u0027promoted\u0027 to become an \u0027active\u0027"},{"line_number":37,"context_line":"    instance."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1af94dfe_c522ee51","line":34,"range":{"start_line":34,"start_character":15,"end_line":34,"end_character":17},"updated":"2016-03-17 16:52:52.000000000","message":"on","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"13f37df1fe1323d3cde3ec673e8bb43bcc26ae20","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    - Update snapshot status across replicas as and when it"},{"line_number":32,"context_line":"       transitions from \u0027creating\u0027 to \u0027available\u0027"},{"line_number":33,"context_line":"    - Delete a snapshot on the primary and ensure that it is"},{"line_number":34,"context_line":"       deleted in the replicas as well."},{"line_number":35,"context_line":"4) Set snapshot instance to \u0027error\u0027 if it was in any transitional"},{"line_number":36,"context_line":"    state when it\u0027s replica was \u0027promoted\u0027 to become an \u0027active\u0027"},{"line_number":37,"context_line":"    instance."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1af94dfe_d581e5c4","line":34,"range":{"start_line":34,"start_character":15,"end_line":34,"end_character":17},"in_reply_to":"1af94dfe_c522ee51","updated":"2016-03-17 19:06:25.000000000","message":"Done","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b00d52d931ef23e4317fb699c30d1082603a6cec","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    - Delete a snapshot on the primary and ensure that it is"},{"line_number":34,"context_line":"       deleted in the replicas as well."},{"line_number":35,"context_line":"4) Set snapshot instance to \u0027error\u0027 if it was in any transitional"},{"line_number":36,"context_line":"    state when it\u0027s replica was \u0027promoted\u0027 to become an \u0027active\u0027"},{"line_number":37,"context_line":"    instance."},{"line_number":38,"context_line":"5) Pass down snapshot instances during create, delete and update"},{"line_number":39,"context_line":"replica driver calls."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1af94dfe_a51fe206","line":36,"range":{"start_line":36,"start_character":15,"end_line":36,"end_character":19},"updated":"2016-03-17 16:52:52.000000000","message":"its","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"13f37df1fe1323d3cde3ec673e8bb43bcc26ae20","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    - Delete a snapshot on the primary and ensure that it is"},{"line_number":34,"context_line":"       deleted in the replicas as well."},{"line_number":35,"context_line":"4) Set snapshot instance to \u0027error\u0027 if it was in any transitional"},{"line_number":36,"context_line":"    state when it\u0027s replica was \u0027promoted\u0027 to become an \u0027active\u0027"},{"line_number":37,"context_line":"    instance."},{"line_number":38,"context_line":"5) Pass down snapshot instances during create, delete and update"},{"line_number":39,"context_line":"replica driver calls."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1af94dfe_3573e916","line":36,"range":{"start_line":36,"start_character":15,"end_line":36,"end_character":19},"in_reply_to":"1af94dfe_a51fe206","updated":"2016-03-17 19:06:25.000000000","message":"Done","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b00d52d931ef23e4317fb699c30d1082603a6cec","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    state when it\u0027s replica was \u0027promoted\u0027 to become an \u0027active\u0027"},{"line_number":37,"context_line":"    instance."},{"line_number":38,"context_line":"5) Pass down snapshot instances during create, delete and update"},{"line_number":39,"context_line":"replica driver calls."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Also, grab the share_type afresh from parent share/snapshot"},{"line_number":42,"context_line":"to allow \u0027replication_key\u0027 to be copied to the share model during"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1af94dfe_a5e6c212","line":39,"range":{"start_line":39,"start_character":20,"end_line":39,"end_character":21},"updated":"2016-03-17 16:52:52.000000000","message":"Changes to replica interfaces.","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"625af792b53132d1d7ec0e9da98ddfc4bbd1bba1","unresolved":false,"context_lines":[{"line_number":1883,"context_line":""},{"line_number":1884,"context_line":""},{"line_number":1885,"context_line":"@require_context"},{"line_number":1886,"context_line":"def share_snapshot_instance_create(context, snapshot_id, kwargs, session\u003dNone):"},{"line_number":1887,"context_line":"    session \u003d session or get_session()"},{"line_number":1888,"context_line":"    values \u003d copy.deepcopy(kwargs)"},{"line_number":1889,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_3ce7dbe5","line":1886,"range":{"start_line":1886,"start_character":35,"end_line":1886,"end_character":77},"updated":"2016-03-15 17:27:02.000000000","message":"def share_snapshot_instance_create(context, snapshot_id, session\u003dNone, **kwargs):","commit_id":"d76f82b484d291f97694be2a0fff414776ea4e54"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b00d52d931ef23e4317fb699c30d1082603a6cec","unresolved":false,"context_lines":[{"line_number":1883,"context_line":""},{"line_number":1884,"context_line":""},{"line_number":1885,"context_line":"@require_context"},{"line_number":1886,"context_line":"def share_snapshot_instance_create(context, snapshot_id, kwargs, session\u003dNone):"},{"line_number":1887,"context_line":"    session \u003d session or get_session()"},{"line_number":1888,"context_line":"    values \u003d copy.deepcopy(kwargs)"},{"line_number":1889,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_f48b5966","line":1886,"range":{"start_line":1886,"start_character":56,"end_line":1886,"end_character":77},"updated":"2016-03-17 16:52:52.000000000","message":"update this","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"13f37df1fe1323d3cde3ec673e8bb43bcc26ae20","unresolved":false,"context_lines":[{"line_number":1883,"context_line":""},{"line_number":1884,"context_line":""},{"line_number":1885,"context_line":"@require_context"},{"line_number":1886,"context_line":"def share_snapshot_instance_create(context, snapshot_id, kwargs, session\u003dNone):"},{"line_number":1887,"context_line":"    session \u003d session or get_session()"},{"line_number":1888,"context_line":"    values \u003d copy.deepcopy(kwargs)"},{"line_number":1889,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_f7418eaa","line":1886,"range":{"start_line":1886,"start_character":56,"end_line":1886,"end_character":77},"in_reply_to":"1af94dfe_f48b5966","updated":"2016-03-17 19:06:25.000000000","message":"Done","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"}],"manila/exception.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"4fd51ab80a14a57dd06d568b3dfc5e5a3d48d550","unresolved":false,"context_lines":[{"line_number":458,"context_line":""},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"class ShareSnapshotInstanceNotFound(NotFound):"},{"line_number":461,"context_line":"    message \u003d _(\"Snapshot Instance %(instance_id)s could not be found.\")"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"class ShareSnapshotNotSupported(ManilaException):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_72b9decb","line":461,"range":{"start_line":461,"start_character":26,"end_line":461,"end_character":34},"updated":"2016-03-18 15:15:43.000000000","message":"s/Instance/instance","commit_id":"14d61c5a252f33fe2886e152f1f87e9a7e0ad462"}],"manila/share/driver.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cb7cf35054bb8b0d24c5f9e016317fcc4a19bcf4","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"                ..."},{"line_number":1455,"context_line":"            ]"},{"line_number":1456,"context_line":"        :param share_server: \u003cmodels.ShareServer\u003e or None"},{"line_number":1457,"context_line":"        :return: snapshot_instance_model_update -\u003e a dictionary containing"},{"line_number":1458,"context_line":"        values that need to be updated on the database for the snapshot"},{"line_number":1459,"context_line":"        instance."},{"line_number":1460,"context_line":"        :raises: Exception. Any exception in this method will set all"},{"line_number":1461,"context_line":"        instances to \u0027error\u0027."},{"line_number":1462,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_8cf6bcd5","line":1459,"range":{"start_line":1457,"start_character":8,"end_line":1459,"end_character":17},"updated":"2016-03-15 17:46:10.000000000","message":"Why dictionary? It is expected to be list of updated snapshot instances","commit_id":"d76f82b484d291f97694be2a0fff414776ea4e54"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b00d52d931ef23e4317fb699c30d1082603a6cec","unresolved":false,"context_lines":[{"line_number":1048,"context_line":"    def create_replica(self, context, replica_list, new_replica,"},{"line_number":1049,"context_line":"                       access_rules, replica_snapshots, share_server\u003dNone):"},{"line_number":1050,"context_line":"        \"\"\"Replicate the active replica to a new replica on this backend."},{"line_number":1051,"context_line":""},{"line_number":1052,"context_line":"        :param context: Current context"},{"line_number":1053,"context_line":"        :param replica_list: List of all replicas for a particular share."},{"line_number":1054,"context_line":"        This list also contains the replica to be created. The \u0027active\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_6de01cfb","line":1051,"range":{"start_line":1051,"start_character":0,"end_line":1051,"end_character":0},"updated":"2016-03-17 16:52:52.000000000","message":"To what backend is this call made?","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"13f37df1fe1323d3cde3ec673e8bb43bcc26ae20","unresolved":false,"context_lines":[{"line_number":1048,"context_line":"    def create_replica(self, context, replica_list, new_replica,"},{"line_number":1049,"context_line":"                       access_rules, replica_snapshots, share_server\u003dNone):"},{"line_number":1050,"context_line":"        \"\"\"Replicate the active replica to a new replica on this backend."},{"line_number":1051,"context_line":""},{"line_number":1052,"context_line":"        :param context: Current context"},{"line_number":1053,"context_line":"        :param replica_list: List of all replicas for a particular share."},{"line_number":1054,"context_line":"        This list also contains the replica to be created. The \u0027active\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_9715aa4a","line":1051,"range":{"start_line":1051,"start_character":0,"end_line":1051,"end_character":0},"in_reply_to":"1af94dfe_6de01cfb","updated":"2016-03-17 19:06:25.000000000","message":"Done","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"1bc091836af18927b1e0e119f0470e766983c378","unresolved":false,"context_lines":[{"line_number":1175,"context_line":"        \"\"\""},{"line_number":1176,"context_line":"        raise NotImplementedError()"},{"line_number":1177,"context_line":""},{"line_number":1178,"context_line":"    def delete_replica(self, context, replica_list, replica, replica_snapshots,"},{"line_number":1179,"context_line":"                       share_server\u003dNone):"},{"line_number":1180,"context_line":"        \"\"\"Delete a replica. This is called on the destination backend."},{"line_number":1181,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_c5d30e03","line":1178,"range":{"start_line":1178,"start_character":60,"end_line":1178,"end_character":79},"updated":"2016-03-17 13:13:51.000000000","message":"It is change of interface. So, interfaces of all drivers that use it should be updated too to avoid TypeError exception. And then driver will be able to just start using things provided via new args.","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b00d52d931ef23e4317fb699c30d1082603a6cec","unresolved":false,"context_lines":[{"line_number":1175,"context_line":"        \"\"\""},{"line_number":1176,"context_line":"        raise NotImplementedError()"},{"line_number":1177,"context_line":""},{"line_number":1178,"context_line":"    def delete_replica(self, context, replica_list, replica, replica_snapshots,"},{"line_number":1179,"context_line":"                       share_server\u003dNone):"},{"line_number":1180,"context_line":"        \"\"\"Delete a replica. This is called on the destination backend."},{"line_number":1181,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_2d5454fd","line":1178,"range":{"start_line":1178,"start_character":60,"end_line":1178,"end_character":79},"in_reply_to":"1af94dfe_c5d30e03","updated":"2016-03-17 16:52:52.000000000","message":"Done","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b00d52d931ef23e4317fb699c30d1082603a6cec","unresolved":false,"context_lines":[{"line_number":1178,"context_line":"    def delete_replica(self, context, replica_list, replica, replica_snapshots,"},{"line_number":1179,"context_line":"                       share_server\u003dNone):"},{"line_number":1180,"context_line":"        \"\"\"Delete a replica. This is called on the destination backend."},{"line_number":1181,"context_line":""},{"line_number":1182,"context_line":"        :param context: Current context"},{"line_number":1183,"context_line":"        :param replica_list: List of all replicas for a particular share."},{"line_number":1184,"context_line":"        This list also contains the replica to be deleted. The \u0027active\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_4dbc40dc","line":1181,"range":{"start_line":1181,"start_character":0,"end_line":1181,"end_character":0},"updated":"2016-03-17 16:52:52.000000000","message":"To what backend is this call made?","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"13f37df1fe1323d3cde3ec673e8bb43bcc26ae20","unresolved":false,"context_lines":[{"line_number":1178,"context_line":"    def delete_replica(self, context, replica_list, replica, replica_snapshots,"},{"line_number":1179,"context_line":"                       share_server\u003dNone):"},{"line_number":1180,"context_line":"        \"\"\"Delete a replica. This is called on the destination backend."},{"line_number":1181,"context_line":""},{"line_number":1182,"context_line":"        :param context: Current context"},{"line_number":1183,"context_line":"        :param replica_list: List of all replicas for a particular share."},{"line_number":1184,"context_line":"        This list also contains the replica to be deleted. The \u0027active\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_321ca469","line":1181,"range":{"start_line":1181,"start_character":0,"end_line":1181,"end_character":0},"in_reply_to":"1af94dfe_4dbc40dc","updated":"2016-03-17 19:06:25.000000000","message":"Done","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b00d52d931ef23e4317fb699c30d1082603a6cec","unresolved":false,"context_lines":[{"line_number":1275,"context_line":"    def promote_replica(self, context, replica_list, replica, access_rules,"},{"line_number":1276,"context_line":"                        share_server\u003dNone):"},{"line_number":1277,"context_line":"        \"\"\"Promote a replica to \u0027active\u0027 replica state."},{"line_number":1278,"context_line":""},{"line_number":1279,"context_line":"        :param context: Current context"},{"line_number":1280,"context_line":"        :param replica_list: List of all replicas for a particular share."},{"line_number":1281,"context_line":"        This list also contains the replica to be promoted. The \u0027active\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_cdd05022","line":1278,"range":{"start_line":1278,"start_character":0,"end_line":1278,"end_character":0},"updated":"2016-03-17 16:52:52.000000000","message":"To what backend is this call made?","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"13f37df1fe1323d3cde3ec673e8bb43bcc26ae20","unresolved":false,"context_lines":[{"line_number":1275,"context_line":"    def promote_replica(self, context, replica_list, replica, access_rules,"},{"line_number":1276,"context_line":"                        share_server\u003dNone):"},{"line_number":1277,"context_line":"        \"\"\"Promote a replica to \u0027active\u0027 replica state."},{"line_number":1278,"context_line":""},{"line_number":1279,"context_line":"        :param context: Current context"},{"line_number":1280,"context_line":"        :param replica_list: List of all replicas for a particular share."},{"line_number":1281,"context_line":"        This list also contains the replica to be promoted. The \u0027active\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_728aac1c","line":1278,"range":{"start_line":1278,"start_character":0,"end_line":1278,"end_character":0},"in_reply_to":"1af94dfe_cdd05022","updated":"2016-03-17 19:06:25.000000000","message":"Done","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b00d52d931ef23e4317fb699c30d1082603a6cec","unresolved":false,"context_lines":[{"line_number":1367,"context_line":"                             access_rules, replica_snapshots,"},{"line_number":1368,"context_line":"                             share_server\u003dNone):"},{"line_number":1369,"context_line":"        \"\"\"Update the replica_state of a replica."},{"line_number":1370,"context_line":""},{"line_number":1371,"context_line":"        Drivers should fix replication relationships that were broken if"},{"line_number":1372,"context_line":"        possible inside this method."},{"line_number":1373,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_4da3a0b2","line":1370,"range":{"start_line":1370,"start_character":0,"end_line":1370,"end_character":0},"updated":"2016-03-17 16:52:52.000000000","message":"To what backend is this call made?","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"13f37df1fe1323d3cde3ec673e8bb43bcc26ae20","unresolved":false,"context_lines":[{"line_number":1367,"context_line":"                             access_rules, replica_snapshots,"},{"line_number":1368,"context_line":"                             share_server\u003dNone):"},{"line_number":1369,"context_line":"        \"\"\"Update the replica_state of a replica."},{"line_number":1370,"context_line":""},{"line_number":1371,"context_line":"        Drivers should fix replication relationships that were broken if"},{"line_number":1372,"context_line":"        possible inside this method."},{"line_number":1373,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_328f8476","line":1370,"range":{"start_line":1370,"start_character":0,"end_line":1370,"end_character":0},"in_reply_to":"1af94dfe_4da3a0b2","updated":"2016-03-17 19:06:25.000000000","message":"Done","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b00d52d931ef23e4317fb699c30d1082603a6cec","unresolved":false,"context_lines":[{"line_number":1674,"context_line":"            ]"},{"line_number":1675,"context_line":"        :param share_replica: Dictionary of the replica the snapshot instance"},{"line_number":1676,"context_line":"        is meant to be associated with. Replica state of such a replica will"},{"line_number":1677,"context_line":"        always be \u0027in_sync\u0027."},{"line_number":1678,"context_line":"        Replicas in \u0027active\u0027, \u0027out_of_sync\u0027, \u0027error\u0027 states will not be passed"},{"line_number":1679,"context_line":"        via this parameter."},{"line_number":1680,"context_line":"            EXAMPLE:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_63914d47","line":1677,"range":{"start_line":1677,"start_character":26,"end_line":1677,"end_character":28},"updated":"2016-03-17 16:52:52.000000000","message":"WRONG. non-active replicas","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"13f37df1fe1323d3cde3ec673e8bb43bcc26ae20","unresolved":false,"context_lines":[{"line_number":1674,"context_line":"            ]"},{"line_number":1675,"context_line":"        :param share_replica: Dictionary of the replica the snapshot instance"},{"line_number":1676,"context_line":"        is meant to be associated with. Replica state of such a replica will"},{"line_number":1677,"context_line":"        always be \u0027in_sync\u0027."},{"line_number":1678,"context_line":"        Replicas in \u0027active\u0027, \u0027out_of_sync\u0027, \u0027error\u0027 states will not be passed"},{"line_number":1679,"context_line":"        via this parameter."},{"line_number":1680,"context_line":"            EXAMPLE:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_92ae5896","line":1677,"range":{"start_line":1677,"start_character":26,"end_line":1677,"end_character":28},"in_reply_to":"1af94dfe_63914d47","updated":"2016-03-17 19:06:25.000000000","message":"Done","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"4fd51ab80a14a57dd06d568b3dfc5e5a3d48d550","unresolved":false,"context_lines":[{"line_number":1655,"context_line":"        be \u0027creating\u0027 or \u0027deleting\u0027. If the driver sees that a snapshot"},{"line_number":1656,"context_line":"        instance has been removed from the replica\u0027s backend and the"},{"line_number":1657,"context_line":"        instance status was set to \u0027deleting\u0027, it is expected to raise a"},{"line_number":1658,"context_line":"        NotFound exception. All other exceptions will set the snapshot"},{"line_number":1659,"context_line":"        instance status to \u0027error\u0027."},{"line_number":1660,"context_line":""},{"line_number":1661,"context_line":"        :param context: Current context"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_583201a8","line":1658,"range":{"start_line":1658,"start_character":8,"end_line":1658,"end_character":16},"updated":"2016-03-18 15:15:43.000000000","message":"Any way we can use ShareResourceNotFound?","commit_id":"14d61c5a252f33fe2886e152f1f87e9a7e0ad462"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"4c4a2eaab9d1006109f29afe1506334192afbcfc","unresolved":false,"context_lines":[{"line_number":1655,"context_line":"        be \u0027creating\u0027 or \u0027deleting\u0027. If the driver sees that a snapshot"},{"line_number":1656,"context_line":"        instance has been removed from the replica\u0027s backend and the"},{"line_number":1657,"context_line":"        instance status was set to \u0027deleting\u0027, it is expected to raise a"},{"line_number":1658,"context_line":"        NotFound exception. All other exceptions will set the snapshot"},{"line_number":1659,"context_line":"        instance status to \u0027error\u0027."},{"line_number":1660,"context_line":""},{"line_number":1661,"context_line":"        :param context: Current context"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_1124cf5b","line":1658,"range":{"start_line":1658,"start_character":8,"end_line":1658,"end_character":16},"in_reply_to":"1af94dfe_11c84fa5","updated":"2016-03-18 15:54:18.000000000","message":"I suggest changing ShareSnapshotInstanceNotFound to subclass StorageResourceNotFound and use it here.","commit_id":"14d61c5a252f33fe2886e152f1f87e9a7e0ad462"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"f7c861b45977077a775451886f105e412b1eff34","unresolved":false,"context_lines":[{"line_number":1655,"context_line":"        be \u0027creating\u0027 or \u0027deleting\u0027. If the driver sees that a snapshot"},{"line_number":1656,"context_line":"        instance has been removed from the replica\u0027s backend and the"},{"line_number":1657,"context_line":"        instance status was set to \u0027deleting\u0027, it is expected to raise a"},{"line_number":1658,"context_line":"        NotFound exception. All other exceptions will set the snapshot"},{"line_number":1659,"context_line":"        instance status to \u0027error\u0027."},{"line_number":1660,"context_line":""},{"line_number":1661,"context_line":"        :param context: Current context"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_fbcf8253","line":1658,"range":{"start_line":1658,"start_character":8,"end_line":1658,"end_character":16},"in_reply_to":"1af94dfe_583201a8","updated":"2016-03-18 15:29:22.000000000","message":"Actually, it should be SnapshotNotFound, which like ShareResourceNotFound is a subclass of StorageResourceNotFound.","commit_id":"14d61c5a252f33fe2886e152f1f87e9a7e0ad462"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"ee21cc14920048b4f12b1e2381ff66fe90b9fac8","unresolved":false,"context_lines":[{"line_number":1655,"context_line":"        be \u0027creating\u0027 or \u0027deleting\u0027. If the driver sees that a snapshot"},{"line_number":1656,"context_line":"        instance has been removed from the replica\u0027s backend and the"},{"line_number":1657,"context_line":"        instance status was set to \u0027deleting\u0027, it is expected to raise a"},{"line_number":1658,"context_line":"        NotFound exception. All other exceptions will set the snapshot"},{"line_number":1659,"context_line":"        instance status to \u0027error\u0027."},{"line_number":1660,"context_line":""},{"line_number":1661,"context_line":"        :param context: Current context"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_11c84fa5","line":1658,"range":{"start_line":1658,"start_character":8,"end_line":1658,"end_character":16},"in_reply_to":"1af94dfe_fb75c2ca","updated":"2016-03-18 15:52:34.000000000","message":"The goal of StorageResourceException and all of its subclasses is to distinguish between issues with Manila objects and issues with corresponding backend storage objects.  It\u0027s not critical, and \u0027strongly\u0027 is a strong word, but IMO it\u0027s a helpful distinction.","commit_id":"14d61c5a252f33fe2886e152f1f87e9a7e0ad462"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"65d3dff438643ceb1d1e8b2843f2db131cc6d496","unresolved":false,"context_lines":[{"line_number":1655,"context_line":"        be \u0027creating\u0027 or \u0027deleting\u0027. If the driver sees that a snapshot"},{"line_number":1656,"context_line":"        instance has been removed from the replica\u0027s backend and the"},{"line_number":1657,"context_line":"        instance status was set to \u0027deleting\u0027, it is expected to raise a"},{"line_number":1658,"context_line":"        NotFound exception. All other exceptions will set the snapshot"},{"line_number":1659,"context_line":"        instance status to \u0027error\u0027."},{"line_number":1660,"context_line":""},{"line_number":1661,"context_line":"        :param context: Current context"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_fb75c2ca","line":1658,"range":{"start_line":1658,"start_character":8,"end_line":1658,"end_character":16},"in_reply_to":"1af94dfe_fbcf8253","updated":"2016-03-18 15:33:58.000000000","message":"This is a snapshot instance though.. there is a new exception in manila/exceptions.py, however, I kept this open to anything that derives from NotFound. Would you strongly recommend the change?","commit_id":"14d61c5a252f33fe2886e152f1f87e9a7e0ad462"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"4fd51ab80a14a57dd06d568b3dfc5e5a3d48d550","unresolved":false,"context_lines":[{"line_number":1752,"context_line":"        :return: replica_snapshot_model_update, a dictionary containing"},{"line_number":1753,"context_line":"        values that need to be updated on the database for the snapshot"},{"line_number":1754,"context_line":"        instance that represents the snapshot on the replica."},{"line_number":1755,"context_line":"        :raises: exception.NotFound() or any derivative for snapshots that"},{"line_number":1756,"context_line":"        are not found on the backend and their status was \u0027deleting\u0027."},{"line_number":1757,"context_line":"        \"\"\""},{"line_number":1758,"context_line":"        raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_78d6dd28","line":1755,"range":{"start_line":1755,"start_character":27,"end_line":1755,"end_character":35},"updated":"2016-03-18 15:15:43.000000000","message":"same as above.","commit_id":"14d61c5a252f33fe2886e152f1f87e9a7e0ad462"}],"manila/share/manager.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"625af792b53132d1d7ec0e9da98ddfc4bbd1bba1","unresolved":false,"context_lines":[{"line_number":1868,"context_line":"                share_server\u003dshare_server) or []"},{"line_number":1869,"context_line":"        except Exception:"},{"line_number":1870,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1871,"context_line":"                for instance in snapshot_instances:"},{"line_number":1872,"context_line":"                    self.db.share_snapshot_instance_update("},{"line_number":1873,"context_line":"                        context, instance[\u0027id\u0027],"},{"line_number":1874,"context_line":"                        {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":1875,"context_line":""},{"line_number":1876,"context_line":"        for instance in updated_instances:"},{"line_number":1877,"context_line":"            if instance[\u0027status\u0027] \u003d\u003d constants.STATUS_AVAILABLE:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_19a02cf4","line":1874,"range":{"start_line":1871,"start_character":16,"end_line":1874,"end_character":59},"updated":"2016-03-15 17:27:02.000000000","message":"Why all instances are updated? Only failed should be updated.","commit_id":"d76f82b484d291f97694be2a0fff414776ea4e54"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"4b2fa8cc10eaeb8d2b569103ab7750a943763875","unresolved":false,"context_lines":[{"line_number":1868,"context_line":"                share_server\u003dshare_server) or []"},{"line_number":1869,"context_line":"        except Exception:"},{"line_number":1870,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1871,"context_line":"                for instance in snapshot_instances:"},{"line_number":1872,"context_line":"                    self.db.share_snapshot_instance_update("},{"line_number":1873,"context_line":"                        context, instance[\u0027id\u0027],"},{"line_number":1874,"context_line":"                        {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":1875,"context_line":""},{"line_number":1876,"context_line":"        for instance in updated_instances:"},{"line_number":1877,"context_line":"            if instance[\u0027status\u0027] \u003d\u003d constants.STATUS_AVAILABLE:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_0dabb41e","line":1874,"range":{"start_line":1871,"start_character":16,"end_line":1874,"end_character":59},"in_reply_to":"1af94dfe_19a02cf4","updated":"2016-03-16 04:00:48.000000000","message":"Goutham or Alex can confirm, but I infer that if the driver raises an exception, it is indicating that the entire snapshot creation operation failed, so it follows that all instances would be in an error state.","commit_id":"d76f82b484d291f97694be2a0fff414776ea4e54"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"625af792b53132d1d7ec0e9da98ddfc4bbd1bba1","unresolved":false,"context_lines":[{"line_number":1916,"context_line":"                    deleted_instances \u003d snapshot_instances"},{"line_number":1917,"context_line":"                    e.reraise \u003d False"},{"line_number":1918,"context_line":"                else:"},{"line_number":1919,"context_line":"                    for instance in snapshot_instances:"},{"line_number":1920,"context_line":"                        self.db.share_snapshot_instance_update("},{"line_number":1921,"context_line":"                            context, instance[\u0027id\u0027],"},{"line_number":1922,"context_line":"                            {\u0027status\u0027: constants.STATUS_ERROR_DELETING})"},{"line_number":1923,"context_line":""},{"line_number":1924,"context_line":"        if not deleted_instances:"},{"line_number":1925,"context_line":"            deleted_instances \u003d list(filter("}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_d98d247d","line":1922,"range":{"start_line":1919,"start_character":20,"end_line":1922,"end_character":72},"updated":"2016-03-15 17:27:02.000000000","message":"same here.","commit_id":"d76f82b484d291f97694be2a0fff414776ea4e54"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"4b2fa8cc10eaeb8d2b569103ab7750a943763875","unresolved":false,"context_lines":[{"line_number":1946,"context_line":"                                                  with_share_data\u003dTrue)"},{"line_number":1947,"context_line":""},{"line_number":1948,"context_line":"        def qualified_replica(r):"},{"line_number":1949,"context_line":"            # Filter only in-sync replicas belonging to this backend"},{"line_number":1950,"context_line":"            return (share_utils.extract_host(r[\u0027host\u0027]) \u003d\u003d"},{"line_number":1951,"context_line":"                    share_utils.extract_host(self.host) and"},{"line_number":1952,"context_line":"                    r[\u0027replica_state\u0027] \u003d\u003d constants.REPLICA_STATE_IN_SYNC)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_6d49988b","line":1949,"range":{"start_line":1949,"start_character":12,"end_line":1949,"end_character":68},"updated":"2016-03-16 04:00:48.000000000","message":"I find these occasional comments really help the reader quickly understand the intent of the code.  I think you could use a few more in the following blocks.","commit_id":"d76f82b484d291f97694be2a0fff414776ea4e54"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b00d52d931ef23e4317fb699c30d1082603a6cec","unresolved":false,"context_lines":[{"line_number":1061,"context_line":"                context,"},{"line_number":1062,"context_line":"                list(filter(lambda x:"},{"line_number":1063,"context_line":"                            x[\u0027share_instance_id\u0027] \u003d\u003d share_replica_id,"},{"line_number":1064,"context_line":"                            instance_list))[0])"},{"line_number":1065,"context_line":"        }"},{"line_number":1066,"context_line":""},{"line_number":1067,"context_line":"        return snapshots"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_7e12800a","line":1064,"range":{"start_line":1064,"start_character":45,"end_line":1064,"end_character":47},"updated":"2016-03-17 16:52:52.000000000","message":"trailing comma","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"13f37df1fe1323d3cde3ec673e8bb43bcc26ae20","unresolved":false,"context_lines":[{"line_number":1061,"context_line":"                context,"},{"line_number":1062,"context_line":"                list(filter(lambda x:"},{"line_number":1063,"context_line":"                            x[\u0027share_instance_id\u0027] \u003d\u003d share_replica_id,"},{"line_number":1064,"context_line":"                            instance_list))[0])"},{"line_number":1065,"context_line":"        }"},{"line_number":1066,"context_line":""},{"line_number":1067,"context_line":"        return snapshots"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_b2971439","line":1064,"range":{"start_line":1064,"start_character":45,"end_line":1064,"end_character":47},"in_reply_to":"1af94dfe_7e12800a","updated":"2016-03-17 19:06:25.000000000","message":"Done","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"38e1aad9859a91569bb7700de6a9dc52e3bdea96","unresolved":false,"context_lines":[{"line_number":1160,"context_line":"        try:"},{"line_number":1161,"context_line":"            replica_ref \u003d self.driver.create_replica("},{"line_number":1162,"context_line":"                context, replica_list, share_replica,"},{"line_number":1163,"context_line":"                share_access_rules, available_share_snapshots,"},{"line_number":1164,"context_line":"                share_server\u003dshare_server) or {}"},{"line_number":1165,"context_line":""},{"line_number":1166,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_c5282ee5","line":1163,"range":{"start_line":1163,"start_character":36,"end_line":1163,"end_character":62},"updated":"2016-03-17 13:18:23.000000000","message":"You provide it here but do not allow update DB with results driver returns.","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b00d52d931ef23e4317fb699c30d1082603a6cec","unresolved":false,"context_lines":[{"line_number":1160,"context_line":"        try:"},{"line_number":1161,"context_line":"            replica_ref \u003d self.driver.create_replica("},{"line_number":1162,"context_line":"                context, replica_list, share_replica,"},{"line_number":1163,"context_line":"                share_access_rules, available_share_snapshots,"},{"line_number":1164,"context_line":"                share_server\u003dshare_server) or {}"},{"line_number":1165,"context_line":""},{"line_number":1166,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_9edb0c4f","line":1163,"range":{"start_line":1163,"start_character":36,"end_line":1163,"end_character":62},"in_reply_to":"1af94dfe_c5282ee5","updated":"2016-03-17 16:52:52.000000000","message":"Explained in the driver docstring here: https://review.openstack.org/#/c/292659/5/manila/share/driver.py","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"07c2030449fcdee43c66e301615c68caa4631815","unresolved":false,"context_lines":[{"line_number":1353,"context_line":"        )"},{"line_number":1354,"context_line":"        for instance in active_replica_snapshot_instances:"},{"line_number":1355,"context_line":"            if instance[\u0027status\u0027] in (constants.STATUS_CREATING,"},{"line_number":1356,"context_line":"                                      constants.STATUS_DELETING):"},{"line_number":1357,"context_line":"                self.db.share_snapshot_instance_update("},{"line_number":1358,"context_line":"                    context, instance[\u0027id\u0027],"},{"line_number":1359,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR})"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_fe1b30c8","line":1356,"updated":"2016-03-17 15:47:58.000000000","message":"A log line here may be helpful, just info level.","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"13f37df1fe1323d3cde3ec673e8bb43bcc26ae20","unresolved":false,"context_lines":[{"line_number":1353,"context_line":"        )"},{"line_number":1354,"context_line":"        for instance in active_replica_snapshot_instances:"},{"line_number":1355,"context_line":"            if instance[\u0027status\u0027] in (constants.STATUS_CREATING,"},{"line_number":1356,"context_line":"                                      constants.STATUS_DELETING):"},{"line_number":1357,"context_line":"                self.db.share_snapshot_instance_update("},{"line_number":1358,"context_line":"                    context, instance[\u0027id\u0027],"},{"line_number":1359,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR})"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_72b8ecc8","line":1356,"in_reply_to":"1af94dfe_fe1b30c8","updated":"2016-03-17 19:06:25.000000000","message":"Done","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"38e1aad9859a91569bb7700de6a9dc52e3bdea96","unresolved":false,"context_lines":[{"line_number":1479,"context_line":"        share_replica \u003d self._get_share_replica_dict(context, share_replica)"},{"line_number":1480,"context_line":""},{"line_number":1481,"context_line":"        try:"},{"line_number":1482,"context_line":"            replica_state \u003d self.driver.update_replica_state("},{"line_number":1483,"context_line":"                context, replica_list, share_replica, access_rules,"},{"line_number":1484,"context_line":"                available_share_snapshots, share_server\u003dshare_server)"},{"line_number":1485,"context_line":"        except Exception:"},{"line_number":1486,"context_line":"            msg \u003d _LE(\"Driver error when updating replica \""},{"line_number":1487,"context_line":"                      \"state for replica %s.\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_a553626a","line":1484,"range":{"start_line":1482,"start_character":12,"end_line":1484,"end_character":69},"updated":"2016-03-17 13:18:23.000000000","message":"Same here.","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b00d52d931ef23e4317fb699c30d1082603a6cec","unresolved":false,"context_lines":[{"line_number":1479,"context_line":"        share_replica \u003d self._get_share_replica_dict(context, share_replica)"},{"line_number":1480,"context_line":""},{"line_number":1481,"context_line":"        try:"},{"line_number":1482,"context_line":"            replica_state \u003d self.driver.update_replica_state("},{"line_number":1483,"context_line":"                context, replica_list, share_replica, access_rules,"},{"line_number":1484,"context_line":"                available_share_snapshots, share_server\u003dshare_server)"},{"line_number":1485,"context_line":"        except Exception:"},{"line_number":1486,"context_line":"            msg \u003d _LE(\"Driver error when updating replica \""},{"line_number":1487,"context_line":"                      \"state for replica %s.\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_fee05098","line":1484,"range":{"start_line":1482,"start_character":12,"end_line":1484,"end_character":69},"in_reply_to":"1af94dfe_a553626a","updated":"2016-03-17 16:52:52.000000000","message":"update_replica call updates the replica, update_replicated_snapshot takes a model update for the snapshot, as we discussed over IRC. We can revisit the design in Newton.. some possibilities include allowing the driver a limited DB handle to make these updates as necessary.","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"07c2030449fcdee43c66e301615c68caa4631815","unresolved":false,"context_lines":[{"line_number":1959,"context_line":"        updated_instances \u003d []"},{"line_number":1960,"context_line":""},{"line_number":1961,"context_line":"        try:"},{"line_number":1962,"context_line":"            updated_instances \u003d self.driver.create_replicated_snapshot("},{"line_number":1963,"context_line":"                context, replica_list, snapshot_instances,"},{"line_number":1964,"context_line":"                share_server\u003dshare_server) or []"},{"line_number":1965,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_9db9517c","line":1962,"range":{"start_line":1962,"start_character":12,"end_line":1962,"end_character":29},"updated":"2016-03-17 15:47:58.000000000","message":"maybe \u0027updated_snapshots\u0027 as instance is ambiguous now.","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"07c2030449fcdee43c66e301615c68caa4631815","unresolved":false,"context_lines":[{"line_number":2058,"context_line":"                    share_utils.extract_host(self.host) and"},{"line_number":2059,"context_line":"                    r[\u0027replica_state\u0027] !\u003d constants.REPLICA_STATE_ACTIVE)"},{"line_number":2060,"context_line":""},{"line_number":2061,"context_line":"        synced_host_replicas \u003d list(filter("},{"line_number":2062,"context_line":"            lambda x: qualified_replica(x), replicas))"},{"line_number":2063,"context_line":"        transitional_snapshot_instances \u003d []"},{"line_number":2064,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_2051f6d8","line":2061,"range":{"start_line":2061,"start_character":8,"end_line":2061,"end_character":28},"updated":"2016-03-17 15:47:58.000000000","message":"-synced","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"13f37df1fe1323d3cde3ec673e8bb43bcc26ae20","unresolved":false,"context_lines":[{"line_number":2058,"context_line":"                    share_utils.extract_host(self.host) and"},{"line_number":2059,"context_line":"                    r[\u0027replica_state\u0027] !\u003d constants.REPLICA_STATE_ACTIVE)"},{"line_number":2060,"context_line":""},{"line_number":2061,"context_line":"        synced_host_replicas \u003d list(filter("},{"line_number":2062,"context_line":"            lambda x: qualified_replica(x), replicas))"},{"line_number":2063,"context_line":"        transitional_snapshot_instances \u003d []"},{"line_number":2064,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_66c79164","line":2061,"range":{"start_line":2061,"start_character":8,"end_line":2061,"end_character":28},"in_reply_to":"1af94dfe_2051f6d8","updated":"2016-03-17 19:06:25.000000000","message":"Thanks! Done","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"}],"manila/tests/fake_share.py":[{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"4b2fa8cc10eaeb8d2b569103ab7750a943763875","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        \u0027replication_type\u0027: None,"},{"line_number":39,"context_line":"        \u0027is_busy\u0027: False,"},{"line_number":40,"context_line":"        \u0027consistency_group_id\u0027: \u0027fakecgid\u0027,"},{"line_number":41,"context_line":"        \u0027instance\u0027: {\u0027host\u0027: \u0027fakehost\u0027},"},{"line_number":42,"context_line":"    }"},{"line_number":43,"context_line":"    share.update(kwargs)"},{"line_number":44,"context_line":"    return db_fakes.FakeModel(share)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_711e9264","line":41,"range":{"start_line":41,"start_character":20,"end_line":41,"end_character":41},"updated":"2016-03-16 04:00:48.000000000","message":"Please wrap.","commit_id":"d76f82b484d291f97694be2a0fff414776ea4e54"}],"manila/tests/share/test_manager.py":[{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"07c2030449fcdee43c66e301615c68caa4631815","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        \"promote_share_replica\","},{"line_number":211,"context_line":"        \"periodic_share_replica_update\","},{"line_number":212,"context_line":"        \"update_share_replica\","},{"line_number":213,"context_line":"        \"create_replicated_snapshot\","},{"line_number":214,"context_line":"        \"periodic_share_replica_snapshot_update\","},{"line_number":215,"context_line":"    )"},{"line_number":216,"context_line":"    def test_call_driver_when_its_init_failed(self, method_name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_8df12804","line":213,"range":{"start_line":213,"start_character":9,"end_line":213,"end_character":35},"updated":"2016-03-17 15:47:58.000000000","message":"add delete_replicated_snapshot?","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"13f37df1fe1323d3cde3ec673e8bb43bcc26ae20","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        \"promote_share_replica\","},{"line_number":211,"context_line":"        \"periodic_share_replica_update\","},{"line_number":212,"context_line":"        \"update_share_replica\","},{"line_number":213,"context_line":"        \"create_replicated_snapshot\","},{"line_number":214,"context_line":"        \"periodic_share_replica_snapshot_update\","},{"line_number":215,"context_line":"    )"},{"line_number":216,"context_line":"    def test_call_driver_when_its_init_failed(self, method_name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_a68a3919","line":213,"range":{"start_line":213,"start_character":9,"end_line":213,"end_character":35},"in_reply_to":"1af94dfe_8df12804","updated":"2016-03-17 19:06:25.000000000","message":"Done","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"07c2030449fcdee43c66e301615c68caa4631815","unresolved":false,"context_lines":[{"line_number":4504,"context_line":"        self.assertEqual(1, mock_debug_log.call_count)"},{"line_number":4505,"context_line":"        self.assertEqual(0, mock_snapshot_update_call.call_count)"},{"line_number":4506,"context_line":""},{"line_number":4507,"context_line":"    def test__update_replica_snapshot_replica_deleted_from_database(self):"},{"line_number":4508,"context_line":"        replica_not_found \u003d exception.ShareReplicaNotFound(replica_id\u003d\u0027xyzzy\u0027)"},{"line_number":4509,"context_line":"        self.mock_object(db, \u0027share_replica_get\u0027, mock.Mock("},{"line_number":4510,"context_line":"            side_effect\u003dreplica_not_found))"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_681aca7e","line":4507,"range":{"start_line":4507,"start_character":8,"end_line":4507,"end_character":67},"updated":"2016-03-17 15:47:58.000000000","message":"why a dunder? test__update","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"132da88df5ec5f50380ce046a743e1563577c7e0","unresolved":false,"context_lines":[{"line_number":4504,"context_line":"        self.assertEqual(1, mock_debug_log.call_count)"},{"line_number":4505,"context_line":"        self.assertEqual(0, mock_snapshot_update_call.call_count)"},{"line_number":4506,"context_line":""},{"line_number":4507,"context_line":"    def test__update_replica_snapshot_replica_deleted_from_database(self):"},{"line_number":4508,"context_line":"        replica_not_found \u003d exception.ShareReplicaNotFound(replica_id\u003d\u0027xyzzy\u0027)"},{"line_number":4509,"context_line":"        self.mock_object(db, \u0027share_replica_get\u0027, mock.Mock("},{"line_number":4510,"context_line":"            side_effect\u003dreplica_not_found))"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_c3565ccd","line":4507,"range":{"start_line":4507,"start_character":8,"end_line":4507,"end_character":67},"in_reply_to":"1af94dfe_681aca7e","updated":"2016-03-17 15:53:03.000000000","message":"This was probably intentional.  I\u0027ve used this pattern myself, although only when I had two methods with similar names, one public and one private with the _ prefix.","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"13f37df1fe1323d3cde3ec673e8bb43bcc26ae20","unresolved":false,"context_lines":[{"line_number":4504,"context_line":"        self.assertEqual(1, mock_debug_log.call_count)"},{"line_number":4505,"context_line":"        self.assertEqual(0, mock_snapshot_update_call.call_count)"},{"line_number":4506,"context_line":""},{"line_number":4507,"context_line":"    def test__update_replica_snapshot_replica_deleted_from_database(self):"},{"line_number":4508,"context_line":"        replica_not_found \u003d exception.ShareReplicaNotFound(replica_id\u003d\u0027xyzzy\u0027)"},{"line_number":4509,"context_line":"        self.mock_object(db, \u0027share_replica_get\u0027, mock.Mock("},{"line_number":4510,"context_line":"            side_effect\u003dreplica_not_found))"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_e6972138","line":4507,"range":{"start_line":4507,"start_character":8,"end_line":4507,"end_character":67},"in_reply_to":"1af94dfe_c3565ccd","updated":"2016-03-17 19:06:25.000000000","message":"Thanks cknight. Yes that\u0027s true, there are two methods with somewhat similar names in the manager;","commit_id":"300b522dd2dedc24cea37a568ab7c8abc802dadb"}]}
