)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bdc18cb6c7464f49dd1b82f71dcf428008af082a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Introduce new Manila core concepts:"},{"line_number":10,"context_line":"- share instance"},{"line_number":11,"context_line":"- snapshot instance"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I326c00b8252f2630e72bb0c22ca294f79feee2be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a41bdd9_f5175ceb","line":12,"updated":"2015-07-12 22:00:00.000000000","message":"Is there a blueprint?","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"eb12e948984f3a1030c10d0d2e5698fa6d686c51","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Introduce new Manila core concepts:"},{"line_number":10,"context_line":"- share instance"},{"line_number":11,"context_line":"- snapshot instance"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I326c00b8252f2630e72bb0c22ca294f79feee2be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a41bdd9_02e636b4","line":12,"in_reply_to":"9a41bdd9_f5175ceb","updated":"2015-07-13 10:59:23.000000000","message":"Done","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"e2ba5001cea621ef882fc15d412a5b30521754b2","unresolved":false,"context_lines":[{"line_number":14,"context_line":"share and snapshot can have only one instance."},{"line_number":15,"context_line":"More complicated logic will be implemented in"},{"line_number":16,"context_line":"the scope of share migration and replication"},{"line_number":17,"context_line":"features."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Partially implements bp share-instances"},{"line_number":20,"context_line":"Change-Id: I326c00b8252f2630e72bb0c22ca294f79feee2be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3a50d1a3_fb0ff22b","line":17,"updated":"2015-07-21 20:36:30.000000000","message":"Please include the APIImpact flag\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Including_external_references","commit_id":"9d7bbda2dffbb6f3d17a539b5ddb5e1faa298ac1"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"818fc3522e4a543ccca1111a08391932e6178c9f","unresolved":false,"context_lines":[{"line_number":14,"context_line":"share and snapshot can have only one instance."},{"line_number":15,"context_line":"More complicated logic will be implemented in"},{"line_number":16,"context_line":"the scope of share migration and replication"},{"line_number":17,"context_line":"features."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Partially implements bp share-instances"},{"line_number":20,"context_line":"Change-Id: I326c00b8252f2630e72bb0c22ca294f79feee2be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3a50d1a3_5044a0b5","line":17,"in_reply_to":"3a50d1a3_fb0ff22b","updated":"2015-07-22 12:01:22.000000000","message":"This commit doesn\u0027t have Public API impact.","commit_id":"9d7bbda2dffbb6f3d17a539b5ddb5e1faa298ac1"}],"manila/db/api.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bdc18cb6c7464f49dd1b82f71dcf428008af082a","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"def share_instances_get_all_by_host(context, host):"},{"line_number":320,"context_line":"    \"\"\"Returns all shares with given host.\"\"\""},{"line_number":321,"context_line":"    return IMPL.share_instances_get_all_by_host(context, host)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_55b408f1","line":320,"updated":"2015-07-12 22:00:00.000000000","message":"share instances","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"eb12e948984f3a1030c10d0d2e5698fa6d686c51","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"def share_instances_get_all_by_host(context, host):"},{"line_number":320,"context_line":"    \"\"\"Returns all shares with given host.\"\"\""},{"line_number":321,"context_line":"    return IMPL.share_instances_get_all_by_host(context, host)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_62006235","line":320,"in_reply_to":"9a41bdd9_55b408f1","updated":"2015-07-13 10:59:23.000000000","message":"Done","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"}],"manila/db/migrations/alembic/versions/5077ffcc5f1c_add_share_instances.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"d224df93d2176a0c76e5e1205b116ee18f07e957","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\"\"\"add_share_instances"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Revision ID: 5077ffcc5f1c"},{"line_number":19,"context_line":"Revises: 57bed77826a8"},{"line_number":20,"context_line":"Create Date: 2015-06-26 12:54:55.630152"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_e3356fdb","line":19,"updated":"2015-07-10 15:13:56.000000000","message":"incorrect value","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"eb12e948984f3a1030c10d0d2e5698fa6d686c51","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\"\"\"add_share_instances"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Revision ID: 5077ffcc5f1c"},{"line_number":19,"context_line":"Revises: 57bed77826a8"},{"line_number":20,"context_line":"Create Date: 2015-06-26 12:54:55.630152"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_02ab961e","line":19,"in_reply_to":"ba3cc151_e3356fdb","updated":"2015-07-13 10:59:23.000000000","message":"Done","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"d224df93d2176a0c76e5e1205b116ee18f07e957","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"from manila.db.migrations import utils"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def create_share_instances_table(connection):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_a318c776","line":37,"updated":"2015-07-10 15:13:56.000000000","message":"Log is not used.","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"eb12e948984f3a1030c10d0d2e5698fa6d686c51","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"from manila.db.migrations import utils"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def create_share_instances_table(connection):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_2291faf0","line":37,"in_reply_to":"ba3cc151_a318c776","updated":"2015-07-13 10:59:23.000000000","message":"Done","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"96e22590963649eeb9805cd32d2f53a2b9e04068","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            \u0027updated_at\u0027: share.updated_at,"},{"line_number":69,"context_line":"            \u0027deleted_at\u0027: share.deleted_at,"},{"line_number":70,"context_line":"            \u0027deleted\u0027: share.deleted,"},{"line_number":71,"context_line":"            \u0027id\u0027: uuidutils.generate_uuid(),"},{"line_number":72,"context_line":"            \u0027share_id\u0027: share.id,"},{"line_number":73,"context_line":"            \u0027status\u0027: share.status,"},{"line_number":74,"context_line":"            \u0027scheduled_at\u0027: share.scheduled_at,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_3a6163d3","line":71,"updated":"2015-07-23 18:30:11.000000000","message":"The drivers aren\u0027t being asked to change their share IDs, so shouldn\u0027t you copy the share ID into the instance ID for existing shares?","commit_id":"9d7bbda2dffbb6f3d17a539b5ddb5e1faa298ac1"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"5e1fca0ac8be77c0e58f952544c22faae9f2c862","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            \u0027updated_at\u0027: share.updated_at,"},{"line_number":69,"context_line":"            \u0027deleted_at\u0027: share.deleted_at,"},{"line_number":70,"context_line":"            \u0027deleted\u0027: share.deleted,"},{"line_number":71,"context_line":"            \u0027id\u0027: uuidutils.generate_uuid(),"},{"line_number":72,"context_line":"            \u0027share_id\u0027: share.id,"},{"line_number":73,"context_line":"            \u0027status\u0027: share.status,"},{"line_number":74,"context_line":"            \u0027scheduled_at\u0027: share.scheduled_at,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_60162e57","line":71,"in_reply_to":"3a50d1a3_3a6163d3","updated":"2015-07-24 11:57:21.000000000","message":"Done","commit_id":"9d7bbda2dffbb6f3d17a539b5ddb5e1faa298ac1"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"81b876f67709242be33765c7fc446c3b616986fe","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            \u0027updated_at\u0027: share.updated_at,"},{"line_number":69,"context_line":"            \u0027deleted_at\u0027: share.deleted_at,"},{"line_number":70,"context_line":"            \u0027deleted\u0027: share.deleted,"},{"line_number":71,"context_line":"            \u0027id\u0027: uuidutils.generate_uuid(),"},{"line_number":72,"context_line":"            \u0027share_id\u0027: share.id,"},{"line_number":73,"context_line":"            \u0027status\u0027: share.status,"},{"line_number":74,"context_line":"            \u0027scheduled_at\u0027: share.scheduled_at,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_a3da0ae8","line":71,"in_reply_to":"3a50d1a3_3a6163d3","updated":"2015-07-24 08:27:51.000000000","message":"Great suggestion! Thanks!","commit_id":"9d7bbda2dffbb6f3d17a539b5ddb5e1faa298ac1"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"96e22590963649eeb9805cd32d2f53a2b9e04068","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            \u0027updated_at\u0027: snapshot.updated_at,"},{"line_number":168,"context_line":"            \u0027deleted_at\u0027: snapshot.deleted_at,"},{"line_number":169,"context_line":"            \u0027deleted\u0027: snapshot.deleted,"},{"line_number":170,"context_line":"            \u0027id\u0027: uuidutils.generate_uuid(),"},{"line_number":171,"context_line":"            \u0027snapshot_id\u0027: snapshot.id,"},{"line_number":172,"context_line":"            \u0027status\u0027: snapshot.status,"},{"line_number":173,"context_line":"            \u0027progress\u0027: snapshot.progress,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_da595ffe","line":170,"updated":"2015-07-23 18:30:11.000000000","message":"Same question.","commit_id":"9d7bbda2dffbb6f3d17a539b5ddb5e1faa298ac1"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"5e1fca0ac8be77c0e58f952544c22faae9f2c862","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            \u0027updated_at\u0027: snapshot.updated_at,"},{"line_number":168,"context_line":"            \u0027deleted_at\u0027: snapshot.deleted_at,"},{"line_number":169,"context_line":"            \u0027deleted\u0027: snapshot.deleted,"},{"line_number":170,"context_line":"            \u0027id\u0027: uuidutils.generate_uuid(),"},{"line_number":171,"context_line":"            \u0027snapshot_id\u0027: snapshot.id,"},{"line_number":172,"context_line":"            \u0027status\u0027: snapshot.status,"},{"line_number":173,"context_line":"            \u0027progress\u0027: snapshot.progress,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_431f7c5b","line":170,"in_reply_to":"3a50d1a3_da595ffe","updated":"2015-07-24 11:57:21.000000000","message":"Done","commit_id":"9d7bbda2dffbb6f3d17a539b5ddb5e1faa298ac1"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"0de25566d82c9ae7a3133042b1b91ffce3e89aa1","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        batch_op.add_column(Column(\u0027launched_at\u0027, DateTime))"},{"line_number":105,"context_line":"        batch_op.add_column(Column(\u0027terminated_at\u0027, DateTime))"},{"line_number":106,"context_line":"        batch_op.add_column(Column(\u0027share_network_id\u0027, String(length\u003d36),"},{"line_number":107,"context_line":"                            ForeignKey(\u0027share_networks.id\u0027),"},{"line_number":108,"context_line":"                            nullable\u003dTrue))"},{"line_number":109,"context_line":"        batch_op.add_column(Column(\u0027share_server_id\u0027, String(length\u003d36),"},{"line_number":110,"context_line":"                            ForeignKey(\u0027share_servers.id\u0027),"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a4dcd0f_ef0a7725","line":107,"updated":"2015-08-07 00:09:15.000000000","message":"does this FK lack a name in the old schema?","commit_id":"4d2b56282f00d856dc6ef1272709bf825de401ed"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"b6a5a355b7021aac1afa39d8eae2c04fefba013b","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        batch_op.add_column(Column(\u0027launched_at\u0027, DateTime))"},{"line_number":105,"context_line":"        batch_op.add_column(Column(\u0027terminated_at\u0027, DateTime))"},{"line_number":106,"context_line":"        batch_op.add_column(Column(\u0027share_network_id\u0027, String(length\u003d36),"},{"line_number":107,"context_line":"                            ForeignKey(\u0027share_networks.id\u0027),"},{"line_number":108,"context_line":"                            nullable\u003dTrue))"},{"line_number":109,"context_line":"        batch_op.add_column(Column(\u0027share_server_id\u0027, String(length\u003d36),"},{"line_number":110,"context_line":"                            ForeignKey(\u0027share_servers.id\u0027),"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a4dcd0f_2d505d0a","line":107,"in_reply_to":"1a4dcd0f_ef0a7725","updated":"2015-08-07 13:41:42.000000000","message":"Yes, see lines 85-87. I forced to detect FK names in runtime.","commit_id":"4d2b56282f00d856dc6ef1272709bf825de401ed"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"0de25566d82c9ae7a3133042b1b91ffce3e89aa1","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                            ForeignKey(\u0027share_networks.id\u0027),"},{"line_number":108,"context_line":"                            nullable\u003dTrue))"},{"line_number":109,"context_line":"        batch_op.add_column(Column(\u0027share_server_id\u0027, String(length\u003d36),"},{"line_number":110,"context_line":"                            ForeignKey(\u0027share_servers.id\u0027),"},{"line_number":111,"context_line":"                            nullable\u003dTrue))"},{"line_number":112,"context_line":"        batch_op.add_column(Column(\u0027availability_zone\u0027, String(length\u003d255)))"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a4dcd0f_8f05f314","line":110,"updated":"2015-08-07 00:09:15.000000000","message":"same question about FK name here","commit_id":"4d2b56282f00d856dc6ef1272709bf825de401ed"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"b6a5a355b7021aac1afa39d8eae2c04fefba013b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                            ForeignKey(\u0027share_networks.id\u0027),"},{"line_number":108,"context_line":"                            nullable\u003dTrue))"},{"line_number":109,"context_line":"        batch_op.add_column(Column(\u0027share_server_id\u0027, String(length\u003d36),"},{"line_number":110,"context_line":"                            ForeignKey(\u0027share_servers.id\u0027),"},{"line_number":111,"context_line":"                            nullable\u003dTrue))"},{"line_number":112,"context_line":"        batch_op.add_column(Column(\u0027availability_zone\u0027, String(length\u003d255)))"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a4dcd0f_0d59e134","line":110,"in_reply_to":"1a4dcd0f_8f05f314","updated":"2015-08-07 13:41:42.000000000","message":"ditto","commit_id":"4d2b56282f00d856dc6ef1272709bf825de401ed"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"435dd8833f497a66b3c638cd28616262699bb421","unresolved":false,"context_lines":[{"line_number":1389,"context_line":"@require_context"},{"line_number":1390,"context_line":"def share_delete(context, share_id):"},{"line_number":1391,"context_line":"    session \u003d get_session()"},{"line_number":1392,"context_line":""},{"line_number":1393,"context_line":"    with session.begin():"},{"line_number":1394,"context_line":"        share_ref \u003d share_get(context, share_id, session)"},{"line_number":1395,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_bdef0686","line":1392,"updated":"2015-07-09 16:07:53.000000000","message":"It is not clear to me if this method is deleting a share entry along with all instances or only the active instance.\n\nI\u0027m confused on what the behavior should be, if a user, which is unaware that there are several instances of a share issues a \"delete share_x\" command, he expects the share to be deleted, so I guess the instances should be deleted in this case. Maybe the delete_instance should be an admin-only operation. What do you think?","commit_id":"32ce9373fe886bab98d0779930843e43bcd3747d"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"0de25566d82c9ae7a3133042b1b91ffce3e89aa1","unresolved":false,"context_lines":[{"line_number":1272,"context_line":""},{"line_number":1273,"context_line":"@require_context"},{"line_number":1274,"context_line":"def _share_get_all_with_filters(context, project_id\u003dNone, share_server_id\u003dNone,"},{"line_number":1275,"context_line":"                                filters\u003dNone, is_public\u003dFalse, sort_key\u003dNone,"},{"line_number":1276,"context_line":"                                sort_dir\u003dNone):"},{"line_number":1277,"context_line":"    \"\"\"Returns sorted list of shares that satisfies filters."},{"line_number":1278,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a4dcd0f_8a8f2174","line":1275,"updated":"2015-08-07 00:09:15.000000000","message":"why remove ability to filter by network and host here?","commit_id":"4d2b56282f00d856dc6ef1272709bf825de401ed"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"b6a5a355b7021aac1afa39d8eae2c04fefba013b","unresolved":false,"context_lines":[{"line_number":1272,"context_line":""},{"line_number":1273,"context_line":"@require_context"},{"line_number":1274,"context_line":"def _share_get_all_with_filters(context, project_id\u003dNone, share_server_id\u003dNone,"},{"line_number":1275,"context_line":"                                filters\u003dNone, is_public\u003dFalse, sort_key\u003dNone,"},{"line_number":1276,"context_line":"                                sort_dir\u003dNone):"},{"line_number":1277,"context_line":"    \"\"\"Returns sorted list of shares that satisfies filters."},{"line_number":1278,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a4dcd0f_754fff33","line":1275,"in_reply_to":"1a4dcd0f_8a8f2174","updated":"2015-08-07 13:41:42.000000000","message":"There are two reasons:\n1. We should remove indirect access to share instance data thru share model/method\n2. This ability is not used anymore in other methods","commit_id":"4d2b56282f00d856dc6ef1272709bf825de401ed"}],"manila/db/sqlalchemy/models.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bdc18cb6c7464f49dd1b82f71dcf428008af082a","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        if item in deprecated_properties:"},{"line_number":208,"context_line":"            msg \u003d (\"Property \u0027%s\u0027 is deprecated. Please use appropriate \""},{"line_number":209,"context_line":"                   \"property from share instance.\" % item)"},{"line_number":210,"context_line":"            warnings.warn(msg)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        if item in proxified_properties:"},{"line_number":213,"context_line":"            return getattr(self.instance, item, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_15f9a080","line":210,"updated":"2015-07-12 22:00:00.000000000","message":"Why isn\u0027t LOG.warning used here for consistency?","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"eb12e948984f3a1030c10d0d2e5698fa6d686c51","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        if item in deprecated_properties:"},{"line_number":208,"context_line":"            msg \u003d (\"Property \u0027%s\u0027 is deprecated. Please use appropriate \""},{"line_number":209,"context_line":"                   \"property from share instance.\" % item)"},{"line_number":210,"context_line":"            warnings.warn(msg)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        if item in proxified_properties:"},{"line_number":213,"context_line":"            return getattr(self.instance, item, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_363b7bd3","line":210,"in_reply_to":"9a41bdd9_15f9a080","updated":"2015-07-13 10:59:23.000000000","message":"Done","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bdc18cb6c7464f49dd1b82f71dcf428008af082a","unresolved":false,"context_lines":[{"line_number":221,"context_line":"    @property"},{"line_number":222,"context_line":"    def instance(self):"},{"line_number":223,"context_line":"        if len(self.instances) \u003e 0:"},{"line_number":224,"context_line":"            return self.instances[0]"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    id \u003d Column(String(36), primary_key\u003dTrue)"},{"line_number":227,"context_line":"    deleted \u003d Column(String(36), default\u003d\u0027False\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_95ee108a","line":224,"updated":"2015-07-12 22:00:00.000000000","message":"How can this work properly if you only return one instance?  I see this instance is retrieved for many share operations, i.e., create share, manage share, etc, but what happens if there are more than 1 instance?","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"eb12e948984f3a1030c10d0d2e5698fa6d686c51","unresolved":false,"context_lines":[{"line_number":221,"context_line":"    @property"},{"line_number":222,"context_line":"    def instance(self):"},{"line_number":223,"context_line":"        if len(self.instances) \u003e 0:"},{"line_number":224,"context_line":"            return self.instances[0]"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    id \u003d Column(String(36), primary_key\u003dTrue)"},{"line_number":227,"context_line":"    deleted \u003d Column(String(36), default\u003d\u0027False\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_16b7573a","line":224,"in_reply_to":"9a41bdd9_95ee108a","updated":"2015-07-13 10:59:23.000000000","message":"This is minimalistic commit which assumes that\nshare can have only one instance. More complicated\nlogic will be implemented in the scope of share \nmigration and replication features.","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"96e22590963649eeb9805cd32d2f53a2b9e04068","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        all_export_locations \u003d []"},{"line_number":193,"context_line":"        for instance in self.instances:"},{"line_number":194,"context_line":"            for export_location in instance.export_locations:"},{"line_number":195,"context_line":"                all_export_locations.append(export_location[\u0027path\u0027])"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        return all_export_locations"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_fd9775e9","line":195,"updated":"2015-07-23 18:30:11.000000000","message":"This is OK for this patch, but in the near future, it\u0027s likely we\u0027ll want to return the export locations only for the primary (i.e. writable) instance(s).  And we will also need a way to indicate which export locations are in which AZs.","commit_id":"9d7bbda2dffbb6f3d17a539b5ddb5e1faa298ac1"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"81b876f67709242be33765c7fc446c3b616986fe","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        all_export_locations \u003d []"},{"line_number":193,"context_line":"        for instance in self.instances:"},{"line_number":194,"context_line":"            for export_location in instance.export_locations:"},{"line_number":195,"context_line":"                all_export_locations.append(export_location[\u0027path\u0027])"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        return all_export_locations"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_23627a17","line":195,"in_reply_to":"3a50d1a3_fd9775e9","updated":"2015-07-24 08:27:51.000000000","message":"1. This logic should change with Share Migration patch.\n2. It\u0027s pretty easy to implement (just add additional column in Export locations table), but it\u0027s definitly out-of-scope of this patch and should be considered in scope of Share Replication.","commit_id":"9d7bbda2dffbb6f3d17a539b5ddb5e1faa298ac1"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"96e22590963649eeb9805cd32d2f53a2b9e04068","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    @property"},{"line_number":218,"context_line":"    def instance(self):"},{"line_number":219,"context_line":"        if len(self.instances) \u003e 0:"},{"line_number":220,"context_line":"            return self.instances[0]"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    id \u003d Column(String(36), primary_key\u003dTrue)"},{"line_number":223,"context_line":"    deleted \u003d Column(String(36), default\u003d\u0027False\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_fd1a157c","line":220,"updated":"2015-07-23 18:30:11.000000000","message":"This will be a problem as soon as len(instances) \u003e 1.  What are the semantics when that happens?  Will this return the primary (active) instance?  What happens if multiple instances are writable?","commit_id":"9d7bbda2dffbb6f3d17a539b5ddb5e1faa298ac1"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"81b876f67709242be33765c7fc446c3b616986fe","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    @property"},{"line_number":218,"context_line":"    def instance(self):"},{"line_number":219,"context_line":"        if len(self.instances) \u003e 0:"},{"line_number":220,"context_line":"            return self.instances[0]"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    id \u003d Column(String(36), primary_key\u003dTrue)"},{"line_number":223,"context_line":"    deleted \u003d Column(String(36), default\u003d\u0027False\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_7503550e","line":220,"in_reply_to":"3a50d1a3_fd1a157c","updated":"2015-07-24 08:27:51.000000000","message":"Currently it\u0027s OK.\n\nWith implemented share migration this method should return primary (active) instance.\n\nShare Replication patch will REMOVE this legacy property at all.","commit_id":"9d7bbda2dffbb6f3d17a539b5ddb5e1faa298ac1"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"0de25566d82c9ae7a3133042b1b91ffce3e89aa1","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            return self.export_locations[0]"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    @property"},{"line_number":192,"context_line":"    def export_locations(self):"},{"line_number":193,"context_line":"        all_export_locations \u003d []"},{"line_number":194,"context_line":"        for instance in self.instances:"},{"line_number":195,"context_line":"            for export_location in instance.export_locations:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a4dcd0f_ea1ee50a","line":192,"updated":"2015-08-07 00:09:15.000000000","message":"We should only return export locations of the \"active\" instance, not all instances. In case of migration that\u0027s the migration source.\n\nThis will definitely need work for replication. Please add a TODO for replication here to return a map with lists of locations per AZ rather than a big combined list.","commit_id":"4d2b56282f00d856dc6ef1272709bf825de401ed"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"b6a5a355b7021aac1afa39d8eae2c04fefba013b","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            return self.export_locations[0]"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    @property"},{"line_number":192,"context_line":"    def export_locations(self):"},{"line_number":193,"context_line":"        all_export_locations \u003d []"},{"line_number":194,"context_line":"        for instance in self.instances:"},{"line_number":195,"context_line":"            for export_location in instance.export_locations:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a4dcd0f_42da4618","line":192,"in_reply_to":"1a4dcd0f_ea1ee50a","updated":"2015-08-07 13:41:42.000000000","message":"Done","commit_id":"4d2b56282f00d856dc6ef1272709bf825de401ed"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"efdffedba103affb89065cb24117fe9ca3a4ded9","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            return self.export_locations[0]"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    @property"},{"line_number":192,"context_line":"    def export_locations(self):"},{"line_number":193,"context_line":"        all_export_locations \u003d []"},{"line_number":194,"context_line":"        for instance in self.instances:"},{"line_number":195,"context_line":"            for export_location in instance.export_locations:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a4dcd0f_a13243a5","line":192,"in_reply_to":"1a4dcd0f_ea1ee50a","updated":"2015-08-07 01:19:27.000000000","message":"I believe this is an interesting alternative design, list all export locations of all instances, since they may be replicas, although I prefer the \"active instance\" design. Maybe have a separate call that does exactly that instead of doing that automatically whenever an user wants to just list his shares.\n\nIn that case, I believe we should only use \"self.instance.export_locations\". I already did something like an \"active instance\" here: https://review.openstack.org/#/c/179790/21/manila/db/sqlalchemy/models.py","commit_id":"4d2b56282f00d856dc6ef1272709bf825de401ed"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"5f0edb93ef0df359fc1e77c84b2de9ebf9a22091","unresolved":false,"context_lines":[{"line_number":396,"context_line":"class ShareSnapshot(BASE, ManilaBase):"},{"line_number":397,"context_line":"    \"\"\"Represents a snapshot of a share.\"\"\""},{"line_number":398,"context_line":"    __tablename__ \u003d \u0027share_snapshots\u0027"},{"line_number":399,"context_line":"    _extra_keys \u003d [\u0027name\u0027, \u0027share_name\u0027, \u0027status\u0027, \u0027progress\u0027]"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"    @property"},{"line_number":402,"context_line":"    def name(self):"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_e7290d39","line":399,"updated":"2015-08-07 21:04:12.000000000","message":"Progress? I guess it is Cinder left-over that we did not use.","commit_id":"4991853a6f5fd6a459fe9b7cac349720179ca5f4"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"48ba58e722864f814b33b4117d094907d526bb97","unresolved":false,"context_lines":[{"line_number":396,"context_line":"class ShareSnapshot(BASE, ManilaBase):"},{"line_number":397,"context_line":"    \"\"\"Represents a snapshot of a share.\"\"\""},{"line_number":398,"context_line":"    __tablename__ \u003d \u0027share_snapshots\u0027"},{"line_number":399,"context_line":"    _extra_keys \u003d [\u0027name\u0027, \u0027share_name\u0027, \u0027status\u0027, \u0027progress\u0027]"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"    @property"},{"line_number":402,"context_line":"    def name(self):"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_b7b8ef2b","line":399,"in_reply_to":"1a4dcd0f_e7290d39","updated":"2015-08-10 06:15:21.000000000","message":"Probably, but this field is used by Share API and Share Manager and if it\u0027s left over then we should remove it in separate patch.","commit_id":"4991853a6f5fd6a459fe9b7cac349720179ca5f4"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"5f0edb93ef0df359fc1e77c84b2de9ebf9a22091","unresolved":false,"context_lines":[{"line_number":412,"context_line":"            return self.instance.status"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"    @property"},{"line_number":415,"context_line":"    def progress(self):"},{"line_number":416,"context_line":"        if self.instance:"},{"line_number":417,"context_line":"            return self.instance.progress"},{"line_number":418,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_67165df3","line":415,"updated":"2015-08-07 21:04:12.000000000","message":"Do we really need it?","commit_id":"4991853a6f5fd6a459fe9b7cac349720179ca5f4"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"48ba58e722864f814b33b4117d094907d526bb97","unresolved":false,"context_lines":[{"line_number":412,"context_line":"            return self.instance.status"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"    @property"},{"line_number":415,"context_line":"    def progress(self):"},{"line_number":416,"context_line":"        if self.instance:"},{"line_number":417,"context_line":"            return self.instance.progress"},{"line_number":418,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_97861364","line":415,"in_reply_to":"1a4dcd0f_67165df3","updated":"2015-08-10 06:15:21.000000000","message":"See my previous response. Thanks!","commit_id":"4991853a6f5fd6a459fe9b7cac349720179ca5f4"}],"manila/share/manager.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bdc18cb6c7464f49dd1b82f71dcf428008af082a","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            configuration\u003dself.configuration"},{"line_number":125,"context_line":"        )"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def _ensure_share_has_pool(self, ctxt, share_instance):"},{"line_number":128,"context_line":"        pool \u003d share_utils.extract_host(share_instance[\u0027host\u0027], \u0027pool\u0027)"},{"line_number":129,"context_line":"        if pool is None:"},{"line_number":130,"context_line":"            # No pool name encoded in host, so this is a legacy"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_b57eb4e2","line":127,"updated":"2015-07-12 22:00:00.000000000","message":"This should be renamed to _ensure_share_instance_has_pool.","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"eb12e948984f3a1030c10d0d2e5698fa6d686c51","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            configuration\u003dself.configuration"},{"line_number":125,"context_line":"        )"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def _ensure_share_has_pool(self, ctxt, share_instance):"},{"line_number":128,"context_line":"        pool \u003d share_utils.extract_host(share_instance[\u0027host\u0027], \u0027pool\u0027)"},{"line_number":129,"context_line":"        if pool is None:"},{"line_number":130,"context_line":"            # No pool name encoded in host, so this is a legacy"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_96ecc7c8","line":127,"in_reply_to":"9a41bdd9_b57eb4e2","updated":"2015-07-13 10:59:23.000000000","message":"Done","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bdc18cb6c7464f49dd1b82f71dcf428008af082a","unresolved":false,"context_lines":[{"line_number":354,"context_line":"            filter_properties \u003d {}"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":357,"context_line":"        share_instance \u003d share_ref.instance"},{"line_number":358,"context_line":"        share_network_id \u003d share_instance.get(\u0027share_network_id\u0027, None)"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        if share_network_id and not self.driver.driver_handles_share_servers:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_95bcd06d","line":357,"updated":"2015-07-12 22:00:00.000000000","message":"What if # of instances for this share \u003e 1?","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"eb12e948984f3a1030c10d0d2e5698fa6d686c51","unresolved":false,"context_lines":[{"line_number":354,"context_line":"            filter_properties \u003d {}"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":357,"context_line":"        share_instance \u003d share_ref.instance"},{"line_number":358,"context_line":"        share_network_id \u003d share_instance.get(\u0027share_network_id\u0027, None)"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        if share_network_id and not self.driver.driver_handles_share_servers:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_962b6730","line":357,"in_reply_to":"9a41bdd9_95bcd06d","updated":"2015-07-13 10:59:23.000000000","message":"Please see updated commit message. Thanks!","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bdc18cb6c7464f49dd1b82f71dcf428008af082a","unresolved":false,"context_lines":[{"line_number":432,"context_line":"    def manage_share(self, context, share_id, driver_options):"},{"line_number":433,"context_line":"        context \u003d context.elevated()"},{"line_number":434,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":435,"context_line":"        share_instance \u003d share_ref.instance"},{"line_number":436,"context_line":"        project_id \u003d share_ref[\u0027project_id\u0027]"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_55b6488b","line":435,"updated":"2015-07-12 22:00:00.000000000","message":"What if # of instances for this share \u003e 1?","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"eb12e948984f3a1030c10d0d2e5698fa6d686c51","unresolved":false,"context_lines":[{"line_number":432,"context_line":"    def manage_share(self, context, share_id, driver_options):"},{"line_number":433,"context_line":"        context \u003d context.elevated()"},{"line_number":434,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":435,"context_line":"        share_instance \u003d share_ref.instance"},{"line_number":436,"context_line":"        project_id \u003d share_ref[\u0027project_id\u0027]"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_b6d30b38","line":435,"in_reply_to":"9a41bdd9_55b6488b","updated":"2015-07-13 10:59:23.000000000","message":"Please see updated commit message. Thanks!","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bdc18cb6c7464f49dd1b82f71dcf428008af082a","unresolved":false,"context_lines":[{"line_number":495,"context_line":"    def unmanage_share(self, context, share_id):"},{"line_number":496,"context_line":"        context \u003d context.elevated()"},{"line_number":497,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":498,"context_line":"        share_instance \u003d share_ref.instance"},{"line_number":499,"context_line":"        share_server \u003d self._get_share_server(context, share_ref)"},{"line_number":500,"context_line":"        project_id \u003d share_ref[\u0027project_id\u0027]"},{"line_number":501,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_15b1a08f","line":498,"updated":"2015-07-12 22:00:00.000000000","message":"What if # of instances for this share \u003e 1?","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"eb12e948984f3a1030c10d0d2e5698fa6d686c51","unresolved":false,"context_lines":[{"line_number":495,"context_line":"    def unmanage_share(self, context, share_id):"},{"line_number":496,"context_line":"        context \u003d context.elevated()"},{"line_number":497,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":498,"context_line":"        share_instance \u003d share_ref.instance"},{"line_number":499,"context_line":"        share_server \u003d self._get_share_server(context, share_ref)"},{"line_number":500,"context_line":"        project_id \u003d share_ref[\u0027project_id\u0027]"},{"line_number":501,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_36e85be2","line":498,"in_reply_to":"9a41bdd9_15b1a08f","updated":"2015-07-13 10:59:23.000000000","message":"Please see updated commit message. Thanks!","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bdc18cb6c7464f49dd1b82f71dcf428008af082a","unresolved":false,"context_lines":[{"line_number":553,"context_line":"        \"\"\"Delete a share.\"\"\""},{"line_number":554,"context_line":"        context \u003d context.elevated()"},{"line_number":555,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":556,"context_line":"        share_instance \u003d share_ref.instance"},{"line_number":557,"context_line":"        share_server \u003d self._get_share_server(context, share_ref)"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        if context.project_id !\u003d share_ref[\u0027project_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_d5aa5819","line":556,"updated":"2015-07-12 22:00:00.000000000","message":"Same question as before.","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"eb12e948984f3a1030c10d0d2e5698fa6d686c51","unresolved":false,"context_lines":[{"line_number":553,"context_line":"        \"\"\"Delete a share.\"\"\""},{"line_number":554,"context_line":"        context \u003d context.elevated()"},{"line_number":555,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":556,"context_line":"        share_instance \u003d share_ref.instance"},{"line_number":557,"context_line":"        share_server \u003d self._get_share_server(context, share_ref)"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        if context.project_id !\u003d share_ref[\u0027project_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_56e5df06","line":556,"in_reply_to":"9a41bdd9_d5aa5819","updated":"2015-07-13 10:59:23.000000000","message":"Please see updated commit message. Thanks!","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bdc18cb6c7464f49dd1b82f71dcf428008af082a","unresolved":false,"context_lines":[{"line_number":622,"context_line":"                                              snapshot_ref[\u0027share\u0027])"},{"line_number":623,"context_line":"        try:"},{"line_number":624,"context_line":"            model_update \u003d self.driver.create_snapshot("},{"line_number":625,"context_line":"                context, snapshot_ref.instance, share_server\u003dshare_server)"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"            if model_update:"},{"line_number":628,"context_line":"                model_dict \u003d model_update.to_dict()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_556de802","line":625,"updated":"2015-07-12 22:00:00.000000000","message":"Same for snapshot instance.  There could be more than 1 instance, how to handle that?","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"eb12e948984f3a1030c10d0d2e5698fa6d686c51","unresolved":false,"context_lines":[{"line_number":622,"context_line":"                                              snapshot_ref[\u0027share\u0027])"},{"line_number":623,"context_line":"        try:"},{"line_number":624,"context_line":"            model_update \u003d self.driver.create_snapshot("},{"line_number":625,"context_line":"                context, snapshot_ref.instance, share_server\u003dshare_server)"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"            if model_update:"},{"line_number":628,"context_line":"                model_dict \u003d model_update.to_dict()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_d6bfafce","line":625,"in_reply_to":"9a41bdd9_556de802","updated":"2015-07-13 10:59:23.000000000","message":"Please see updated commit message. Thanks!","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bdc18cb6c7464f49dd1b82f71dcf428008af082a","unresolved":false,"context_lines":[{"line_number":950,"context_line":""},{"line_number":951,"context_line":"        try:"},{"line_number":952,"context_line":"            self.driver.extend_share("},{"line_number":953,"context_line":"                share.instance, new_size, share_server\u003dshare_server)"},{"line_number":954,"context_line":"        except Exception as e:"},{"line_number":955,"context_line":"            LOG.exception(_LE(\"Extend share failed.\"), resource\u003dshare)"},{"line_number":956,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_954a9082","line":953,"updated":"2015-07-12 22:00:00.000000000","message":"Same here.","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"eb12e948984f3a1030c10d0d2e5698fa6d686c51","unresolved":false,"context_lines":[{"line_number":950,"context_line":""},{"line_number":951,"context_line":"        try:"},{"line_number":952,"context_line":"            self.driver.extend_share("},{"line_number":953,"context_line":"                share.instance, new_size, share_server\u003dshare_server)"},{"line_number":954,"context_line":"        except Exception as e:"},{"line_number":955,"context_line":"            LOG.exception(_LE(\"Extend share failed.\"), resource\u003dshare)"},{"line_number":956,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_96b927ec","line":953,"in_reply_to":"9a41bdd9_954a9082","updated":"2015-07-13 10:59:23.000000000","message":"Please see updated commit message. Thanks!","commit_id":"dbe8edff5296661b5846c6c0b4af04122c5442cb"}]}
