)]}'
{"manila/exception.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"eccc4f81283ecaa0a688751fda3cf267f0e9743e","unresolved":false,"context_lines":[{"line_number":506,"context_line":"    message \u003d _(\"Storage resource %(name)s not found.\")"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"class SnapshotNotFound(StorageResourceNotFound):"},{"line_number":510,"context_line":"    message \u003d _(\"Snapshot %(name)s not found.\")"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_a79de5bd","line":509,"updated":"2015-04-09 10:05:24.000000000","message":"We already have \"ShareSnapshotNotFound\". Why existing one can not be reused?","commit_id":"6999c8d26bdef7f3a8795995e5605f8b85a7c584"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"9880aeb33d348418009d1e6f6c34c6d670b5ec66","unresolved":false,"context_lines":[{"line_number":506,"context_line":"    message \u003d _(\"Storage resource %(name)s not found.\")"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"class SnapshotNotFound(StorageResourceNotFound):"},{"line_number":510,"context_line":"    message \u003d _(\"Snapshot %(name)s not found.\")"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_9179e8ca","line":509,"in_reply_to":"9aa53dc9_117b98f6","updated":"2015-04-09 18:22:52.000000000","message":"I like idea of splitting.","commit_id":"6999c8d26bdef7f3a8795995e5605f8b85a7c584"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"7b92a4108b3151ecb559a8f14b0536ae235333e6","unresolved":false,"context_lines":[{"line_number":506,"context_line":"    message \u003d _(\"Storage resource %(name)s not found.\")"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"class SnapshotNotFound(StorageResourceNotFound):"},{"line_number":510,"context_line":"    message \u003d _(\"Snapshot %(name)s not found.\")"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_117b98f6","line":509,"in_reply_to":"9aa53dc9_312fbc89","updated":"2015-04-09 18:17:51.000000000","message":"+1.\n\nI\u0027ll take the action to better document these at the next good opportunity.  I\u0027m not certain why we insist on all exceptions being defined in one place, but perhaps we could organize this file into sections of exceptions (core, backend, vendor-specific) or even break them into separate modules to better highlight their differences.","commit_id":"6999c8d26bdef7f3a8795995e5605f8b85a7c584"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2a42706b001a21bade7d690e2217e8a5514e1b90","unresolved":false,"context_lines":[{"line_number":506,"context_line":"    message \u003d _(\"Storage resource %(name)s not found.\")"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"class SnapshotNotFound(StorageResourceNotFound):"},{"line_number":510,"context_line":"    message \u003d _(\"Snapshot %(name)s not found.\")"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_312fbc89","line":509,"in_reply_to":"9aa53dc9_80eabdaa","updated":"2015-04-09 18:10:41.000000000","message":"Ok. But it definitely would be great to have here, at least, docstring that describes such difference. Because this one is called \"SnapshotNotFound\" and another one \"ShareSnapshotNotFound\" and namings do not provide difference at all. Namings are not self-explanatory enough to provide difference.\n\nSo, I am ok to merge it as is. There always will be such places that will stop us from code merge.","commit_id":"6999c8d26bdef7f3a8795995e5605f8b85a7c584"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"7453ac2018ea75cc64a4fa9538da714a92046aed","unresolved":false,"context_lines":[{"line_number":506,"context_line":"    message \u003d _(\"Storage resource %(name)s not found.\")"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"class SnapshotNotFound(StorageResourceNotFound):"},{"line_number":510,"context_line":"    message \u003d _(\"Snapshot %(name)s not found.\")"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_80eabdaa","line":509,"in_reply_to":"9aa53dc9_a79de5bd","updated":"2015-04-09 18:02:27.000000000","message":"Good question, and that was my first inclination as well.  But ShareSnapshotNotFound is used in the upper layers, takes a snapshot_id, and is associated with manila snapshot DB objects.\n\nMy goal for adding StorageResourceException and a few subclasses of that is to have a separate class of exceptions that are appropriate for the storage interface layer of backend drivers where the manila ID isn\u0027t always available and the drivers are dealing with actual storage resources and not DB records.\n\nOf course, I could just shove a new message into ShareSnapshotNotFound, but it seems less desirable to overload that exception with a different semantic.  Do you disagree?\n\nAlso, note that existence !\u003d availability, so even SnapshotNotFound wasn\u0027t enough.  I needed SnapshotUnavailable to handle cases where the snapshot might still exist but isn\u0027t available for I/O or management operations.  (That\u0027s also why I renamed VserverUnavailable to VserverNotFound, which is the correct name for how it was used.)","commit_id":"6999c8d26bdef7f3a8795995e5605f8b85a7c584"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"eccc4f81283ecaa0a688751fda3cf267f0e9743e","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @na_utils.trace"},{"line_number":117,"context_line":"    def _create_vserver_if_nonexistent(self, network_info):"},{"line_number":118,"context_line":"        \"\"\"Creates Vserver with given parameters if it doesn\u0027t exist.\"\"\""},{"line_number":119,"context_line":"        vserver_name \u003d (self.configuration.netapp_vserver_name_template %"},{"line_number":120,"context_line":"                        network_info[\u0027server_id\u0027])"},{"line_number":121,"context_line":"        context_adm \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_c767c9b5","line":118,"updated":"2015-04-09 10:05:24.000000000","message":"Maybe you may want to save \"vserver_name\" using details_data attr for exception?\n\nhttps://github.com/openstack/manila/blob/b196f9b8/manila/share/manager.py#L702","commit_id":"6999c8d26bdef7f3a8795995e5605f8b85a7c584"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2a42706b001a21bade7d690e2217e8a5514e1b90","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @na_utils.trace"},{"line_number":117,"context_line":"    def _create_vserver_if_nonexistent(self, network_info):"},{"line_number":118,"context_line":"        \"\"\"Creates Vserver with given parameters if it doesn\u0027t exist.\"\"\""},{"line_number":119,"context_line":"        vserver_name \u003d (self.configuration.netapp_vserver_name_template %"},{"line_number":120,"context_line":"                        network_info[\u0027server_id\u0027])"},{"line_number":121,"context_line":"        context_adm \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_315d7c15","line":118,"in_reply_to":"9aa53dc9_2b2aad90","updated":"2015-04-09 18:10:41.000000000","message":"Ok, let it be separate change.","commit_id":"6999c8d26bdef7f3a8795995e5605f8b85a7c584"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"7453ac2018ea75cc64a4fa9538da714a92046aed","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @na_utils.trace"},{"line_number":117,"context_line":"    def _create_vserver_if_nonexistent(self, network_info):"},{"line_number":118,"context_line":"        \"\"\"Creates Vserver with given parameters if it doesn\u0027t exist.\"\"\""},{"line_number":119,"context_line":"        vserver_name \u003d (self.configuration.netapp_vserver_name_template %"},{"line_number":120,"context_line":"                        network_info[\u0027server_id\u0027])"},{"line_number":121,"context_line":"        context_adm \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa53dc9_2b2aad90","line":118,"in_reply_to":"9aa53dc9_c767c9b5","updated":"2015-04-09 18:02:27.000000000","message":"Yes, I agree this would be a good thing, and there is some additional refactoring I\u0027d like to do to the vserver creation logic to be more resilient.  But this patch is about delete workflow improvement, and it\u0027s already getting kinda heavy, so I\u0027ve opened bug 1442299 to capture this.  There isn\u0027t time to handle this properly prior to Kilo RC1.","commit_id":"6999c8d26bdef7f3a8795995e5605f8b85a7c584"}]}
