)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"8b152c19ab50574d70e512b65d1917c46acfd5e8","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Nova part of volume snapshot improvements"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch implements blueprint volume-snapshot-improvements."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"  1) Add new file format querying and reporting to libvirt snapshot code"},{"line_number":12,"context_line":"  2) For liberty, continue to send the \u0027progress\u0027: \u002790%\u0027 flag in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"fa32b979_80a3b9ff","line":9,"updated":"2015-06-17 12:01:50.000000000","message":"I would like to recommend you to split you patch, one for the new object introduced  OnlineSnaphotStatus with the update into the code and an other one for the pre-liberty compatibility for Cinder.\n\n  A/ 1, 2, 3, 5\n  B/ 4, 5","commit_id":"e878038a10c56e119b114f1d7f1166df0be71c49"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"28b081b4e2dcbb27070da2923848cffcf62d2744","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch implements blueprint volume-snapshot-improvements."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"  1) Add new file format querying and reporting to libvirt snapshot code"},{"line_number":12,"context_line":"  2) For liberty, continue to send the \u0027progress\u0027: \u002790%\u0027 flag in"},{"line_number":13,"context_line":"     update_snapshot_status"},{"line_number":14,"context_line":"  3) Add new statuses for progress reporting to libvirt snapshot create/delete"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa32b979_9901cf07","line":11,"updated":"2015-06-24 16:26:30.000000000","message":"A commit message with all of this bullets indicate a problem in the patch management. Please see my comment in PS 8.","commit_id":"4e37165a46b8a188d2aaf9cf699f8f8a380986b1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"21ad3515534db6bfb69e26c68ee347d5b9ca1e42","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Deepak C Shetty \u003cdeepakcs@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-10 10:33:14 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Nova part of volume snapshot improvements"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch implements blueprint volume-snapshot-improvements :"},{"line_number":10,"context_line":"  * Add new file format querying and reporting to libvirt snapshot code"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"9a41bdd9_696a0683","line":7,"updated":"2015-07-15 11:42:23.000000000","message":"Please prefix this with libvirt","commit_id":"2d9d175ea6230b585527c5607a39732177deb5e7"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"8029e0097e3075da768d3960eb7a6da70238eb88","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Deepak C Shetty \u003cdeepakcs@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-10 10:33:14 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Nova part of volume snapshot improvements"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch implements blueprint volume-snapshot-improvements :"},{"line_number":10,"context_line":"  * Add new file format querying and reporting to libvirt snapshot code"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"9a41bdd9_9560b902","line":7,"in_reply_to":"9a41bdd9_696a0683","updated":"2015-07-17 11:54:20.000000000","message":"Done","commit_id":"2d9d175ea6230b585527c5607a39732177deb5e7"}],"nova/objects/online_snapshot_status.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"12d14e62b61ceb59015effe98ce676dc0dab9895","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    fields \u003d {"},{"line_number":23,"context_line":"        \u0027compute_snapshot_status\u0027: fields.StringField(),"},{"line_number":24,"context_line":"        \u0027file_info\u0027: fields.DictOfNullableStringsField(),"},{"line_number":25,"context_line":"    }"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"5afe65bd_89a13dac","line":24,"updated":"2015-06-02 09:56:31.000000000","message":"Is there really no way to specify this more formally than an arbitrary dict - having a generic dict for this was really the thing I was objecting to in the previous patch. Looking at this patch there are a specific set of keys you need to set here, so I think we should just specify those explicitly and not have a free-form dict.","commit_id":"02743c194fbbab4509bcb94fc646813ece4fbb62"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"af6b7448c6582e1a4c53b07a5bf7f5a1e674aa41","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    fields \u003d {"},{"line_number":23,"context_line":"        \u0027compute_snapshot_status\u0027: fields.StringField(),"},{"line_number":24,"context_line":"        \u0027file_info\u0027: fields.DictOfNullableStringsField(),"},{"line_number":25,"context_line":"    }"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"5afe65bd_9d4a9782","line":24,"in_reply_to":"5afe65bd_89a13dac","updated":"2015-06-02 12:27:41.000000000","message":"You are using a file_info\u0027s dict here to handle \u0027file_to_delete\u0027 and \u0027active_file_fmt\u0027 since this is what you have to pass to Cinder. - I\u0027m agreed with Daniel you should to add two fields \u0027file_to_delete\u0027 and \u0027active_file_fmt\u0027 then on your method to build the dict passed to Cinder and get from Cinder you should to do the conversion.","commit_id":"02743c194fbbab4509bcb94fc646813ece4fbb62"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"9f414f57a89ba613e987db8b310cb4dbec3f259a","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    fields \u003d {"},{"line_number":23,"context_line":"        \u0027compute_snapshot_status\u0027: fields.StringField(),"},{"line_number":24,"context_line":"        \u0027file_info\u0027: fields.DictOfNullableStringsField(),"},{"line_number":25,"context_line":"    }"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"5afe65bd_08ed3e8b","line":24,"in_reply_to":"5afe65bd_9d4a9782","updated":"2015-06-02 14:21:51.000000000","message":"Done","commit_id":"02743c194fbbab4509bcb94fc646813ece4fbb62"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"af6b7448c6582e1a4c53b07a5bf7f5a1e674aa41","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    }"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @classmethod"},{"line_number":28,"context_line":"    def from_dict(cls, status_dict):"},{"line_number":29,"context_line":"        \"\"\"Create instance from snapshot status dictionary"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        :param status_dict: snapshot status dictionary"}],"source_content_type":"text/x-python","patch_set":6,"id":"5afe65bd_380e1135","line":28,"updated":"2015-06-02 12:27:41.000000000","message":"I would recommend to use different names, we usually use the name to_dict/from_dict in objects to refer with legacy behavior.\n\nWhat about: from_volume_api/to_volume_api ?","commit_id":"02743c194fbbab4509bcb94fc646813ece4fbb62"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"9f414f57a89ba613e987db8b310cb4dbec3f259a","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    }"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @classmethod"},{"line_number":28,"context_line":"    def from_dict(cls, status_dict):"},{"line_number":29,"context_line":"        \"\"\"Create instance from snapshot status dictionary"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        :param status_dict: snapshot status dictionary"}],"source_content_type":"text/x-python","patch_set":6,"id":"5afe65bd_08a41e55","line":28,"in_reply_to":"5afe65bd_380e1135","updated":"2015-06-02 14:21:51.000000000","message":"that would be too limiting, since the class is generic and tomorrow we can call this from any other part of Nova too, so i changed from_dict to create and kept to_dict since thats what the function actually does.","commit_id":"02743c194fbbab4509bcb94fc646813ece4fbb62"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1ae790e4b86f91d99ff6df6d841ef8e27afcf180","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from nova.objects import fields"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class OnlineSnapshotStatus(base.NovaObject):"},{"line_number":20,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_77d00f54","line":19,"updated":"2015-06-02 15:40:01.000000000","message":"Thinking again we should to rename this as SnapshotStatus with fields:\n\n  {\n     \u0027status\u0027: fields.StringField(),\n     \u0027progress\u0027:  fields.IntegerField(),\n     \u0027compute_snapshot_status\u0027: fields.StringField(),\n     \u0027active_file_fmt\u0027: fields.StringField(nullable\u003dTrue),\n     \u0027file_to_delete\u0027: fields.StringField(nullable\u003dTrue), }","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"03b1475d9c5ba0c0054086dec4f2613b961e6bd8","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from nova.objects import fields"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class OnlineSnapshotStatus(base.NovaObject):"},{"line_number":20,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_435e2645","line":19,"in_reply_to":"5afe65bd_44c9ba77","updated":"2015-06-17 08:23:27.000000000","message":"Done","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"be372a7bedfc56eda366c38edd0439b211308015","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from nova.objects import fields"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class OnlineSnapshotStatus(base.NovaObject):"},{"line_number":20,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_44c9ba77","line":19,"in_reply_to":"5afe65bd_45baddc1","updated":"2015-06-03 09:37:38.000000000","message":"Ok for the online prefix that makes sense.\n\nIf status and progress will be removed that makes me think the necessity to use and pass the object SnapshotStatus to the drvier\u0027s function \u0027_volume_snapshot_update_status\u0027 it will be easy to update the version of the object to remove those fields.","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"20c9b8ea0ab5f72b81186eb40006b2662d2972ac","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from nova.objects import fields"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class OnlineSnapshotStatus(base.NovaObject):"},{"line_number":20,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_45baddc1","line":19,"in_reply_to":"5afe65bd_77d00f54","updated":"2015-06-03 07:21:52.000000000","message":"Any reason why you don\u0027t like the prefix \u0027Online\u0027 ?\n\nJust saying SnapshotStatus would be ambiguous, since this is really related to the cinder volume snapshot when volume is attached to nova instance, hence the need to use \u0027Online\u0027 prefix to keep it clear. Just saying SnapshotStatus can be ambiguous with nova snapshot (internal/external) when no volumes are attached.\n\nAlso \u0027status\u0027 \u0026 \u0027progress\u0027 will be removed in next release. Currently \u0027progress\u0027 is overloaded to indicate Cinder that nova is done, which is why we introduce compute_snap_status field and maintain progress for backward compat, until we remove it in next release. So i would refrain from putting these fields inside nova object, since we plan to remove it later. Thoughts ?","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"8b152c19ab50574d70e512b65d1917c46acfd5e8","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    }"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @classmethod"},{"line_number":32,"context_line":"    def create(cls, status, compute_status, file_info):"},{"line_number":33,"context_line":"        \"\"\"Create instance from snapshot status, progress and file info"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        :param status: Legacy db status of snapshot operation"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_9d86c6d9","line":32,"updated":"2015-06-17 12:01:50.000000000","message":"Perhaps you can set file_info as optional here, or is there any complaint about it?","commit_id":"e878038a10c56e119b114f1d7f1166df0be71c49"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"19edb414e3b4425e2c05eaf625f53344306d75f3","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    }"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @classmethod"},{"line_number":32,"context_line":"    def create(cls, status, compute_status, file_info):"},{"line_number":33,"context_line":"        \"\"\"Create instance from snapshot status, progress and file info"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        :param status: Legacy db status of snapshot operation"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_04736881","line":32,"in_reply_to":"fa32b979_9d86c6d9","updated":"2015-06-23 07:14:15.000000000","message":"Done","commit_id":"e878038a10c56e119b114f1d7f1166df0be71c49"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"8b152c19ab50574d70e512b65d1917c46acfd5e8","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        \"\"\"Create instance from snapshot status, progress and file info"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        :param status: Legacy db status of snapshot operation"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        :param compute_status: Nova\u0027s status of snapshot operation"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        :param file_info: File info post the snapshot operation"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_bd062a84","line":36,"updated":"2015-06-17 12:01:50.000000000","message":"nit: Returns to the line between \u0027param\u0027 are not necessary","commit_id":"e878038a10c56e119b114f1d7f1166df0be71c49"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"19edb414e3b4425e2c05eaf625f53344306d75f3","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        \"\"\"Create instance from snapshot status, progress and file info"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        :param status: Legacy db status of snapshot operation"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        :param compute_status: Nova\u0027s status of snapshot operation"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        :param file_info: File info post the snapshot operation"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_a402bc07","line":36,"in_reply_to":"fa32b979_bd062a84","updated":"2015-06-23 07:14:15.000000000","message":"Done","commit_id":"e878038a10c56e119b114f1d7f1166df0be71c49"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"925250ed2cc8cdd65bf230901c15573444c5dbb1","unresolved":false,"context_lines":[{"line_number":12985,"context_line":"                              \u0027base_of_base_file\u0027: \u0027base_of_base.img\u0027,"},{"line_number":12986,"context_line":"                              \u0027base_file_fmt\u0027: \u0027qcow2\u0027,"},{"line_number":12987,"context_line":"                              \u0027snapshot_file_fmt\u0027: \u0027qcow2\u0027,"},{"line_number":12988,"context_line":"                              \u0027active_file_fmt\u0027: \u0027qcow2\u0027}"},{"line_number":12989,"context_line":""},{"line_number":12990,"context_line":"        self.delete_info_netdisk \u003d {\u0027type\u0027: \u0027qcow2\u0027,"},{"line_number":12991,"context_line":"                                    \u0027file_to_merge\u0027: \u0027snap.img\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_dff003cc","line":12988,"updated":"2015-05-26 18:33:46.000000000","message":"The last item in the dictionary should have a trailing comma.\n\nhttp://docs.openstack.org/developer/hacking/#dictionaries-lists","commit_id":"53fd7ff340f9a422c909ffc783458d96681a4da9"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"c0ab40ecf4e6c3fa6dfc3b48fc7e918a6a68bbb1","unresolved":false,"context_lines":[{"line_number":12985,"context_line":"                              \u0027base_of_base_file\u0027: \u0027base_of_base.img\u0027,"},{"line_number":12986,"context_line":"                              \u0027base_file_fmt\u0027: \u0027qcow2\u0027,"},{"line_number":12987,"context_line":"                              \u0027snapshot_file_fmt\u0027: \u0027qcow2\u0027,"},{"line_number":12988,"context_line":"                              \u0027active_file_fmt\u0027: \u0027qcow2\u0027}"},{"line_number":12989,"context_line":""},{"line_number":12990,"context_line":"        self.delete_info_netdisk \u003d {\u0027type\u0027: \u0027qcow2\u0027,"},{"line_number":12991,"context_line":"                                    \u0027file_to_merge\u0027: \u0027snap.img\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5afe65bd_e9ac31ef","line":12988,"in_reply_to":"7a016987_dff003cc","updated":"2015-06-02 09:48:57.000000000","message":"Done","commit_id":"53fd7ff340f9a422c909ffc783458d96681a4da9"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"925250ed2cc8cdd65bf230901c15573444c5dbb1","unresolved":false,"context_lines":[{"line_number":13163,"context_line":"                                          self.create_info[\u0027new_file\u0027])"},{"line_number":13164,"context_line":""},{"line_number":13165,"context_line":"        file_info \u003d {\u0027file_to_delete\u0027: None,"},{"line_number":13166,"context_line":"                     \u0027active_file_fmt\u0027: self.create_info[\u0027type\u0027]}"},{"line_number":13167,"context_line":"        self.drvr._volume_api.update_snapshot_status("},{"line_number":13168,"context_line":"            self.c, self.create_info[\u0027snapshot_id\u0027], \u0027creating\u0027,"},{"line_number":13169,"context_line":"            \u0027creating_compute_complete\u0027, file_info)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_bfed47f1","line":13166,"updated":"2015-05-26 18:33:46.000000000","message":"Same here...","commit_id":"53fd7ff340f9a422c909ffc783458d96681a4da9"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"c0ab40ecf4e6c3fa6dfc3b48fc7e918a6a68bbb1","unresolved":false,"context_lines":[{"line_number":13163,"context_line":"                                          self.create_info[\u0027new_file\u0027])"},{"line_number":13164,"context_line":""},{"line_number":13165,"context_line":"        file_info \u003d {\u0027file_to_delete\u0027: None,"},{"line_number":13166,"context_line":"                     \u0027active_file_fmt\u0027: self.create_info[\u0027type\u0027]}"},{"line_number":13167,"context_line":"        self.drvr._volume_api.update_snapshot_status("},{"line_number":13168,"context_line":"            self.c, self.create_info[\u0027snapshot_id\u0027], \u0027creating\u0027,"},{"line_number":13169,"context_line":"            \u0027creating_compute_complete\u0027, file_info)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5afe65bd_497c6572","line":13166,"in_reply_to":"7a016987_bfed47f1","updated":"2015-06-02 09:48:57.000000000","message":"Done, and did the same across this file for all the changes I made","commit_id":"53fd7ff340f9a422c909ffc783458d96681a4da9"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"626be5401b3acafdd73e9b45d3f4bbe9164f801d","unresolved":false,"context_lines":[{"line_number":13400,"context_line":""},{"line_number":13401,"context_line":"        self.mox.VerifyAll()"},{"line_number":13402,"context_line":""},{"line_number":13403,"context_line":"    # test_volume_delete_snapshot_* testcases above covers Old Cinder"},{"line_number":13404,"context_line":"    # scenarios. Adding testcases below for New Cinder scenarios"},{"line_number":13405,"context_line":"    def test_volume_snapshot_delete_3(self):"},{"line_number":13406,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba3cc151_af1d2564","line":13403,"updated":"2015-07-10 02:09:10.000000000","message":"I think this should be \u0027test_volume_snapshot_delete_*\u0027.","commit_id":"3e6fcad1388b068cb7470d3e75d71cbe075c1ee3"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"5e78f177d18d4aca50a85530e85682e40f348ea4","unresolved":false,"context_lines":[{"line_number":13400,"context_line":""},{"line_number":13401,"context_line":"        self.mox.VerifyAll()"},{"line_number":13402,"context_line":""},{"line_number":13403,"context_line":"    # test_volume_delete_snapshot_* testcases above covers Old Cinder"},{"line_number":13404,"context_line":"    # scenarios. Adding testcases below for New Cinder scenarios"},{"line_number":13405,"context_line":"    def test_volume_snapshot_delete_3(self):"},{"line_number":13406,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba3cc151_26805049","line":13403,"in_reply_to":"ba3cc151_af1d2564","updated":"2015-07-10 10:39:40.000000000","message":"Done","commit_id":"3e6fcad1388b068cb7470d3e75d71cbe075c1ee3"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"626be5401b3acafdd73e9b45d3f4bbe9164f801d","unresolved":false,"context_lines":[{"line_number":13402,"context_line":""},{"line_number":13403,"context_line":"    # test_volume_delete_snapshot_* testcases above covers Old Cinder"},{"line_number":13404,"context_line":"    # scenarios. Adding testcases below for New Cinder scenarios"},{"line_number":13405,"context_line":"    def test_volume_snapshot_delete_3(self):"},{"line_number":13406,"context_line":""},{"line_number":13407,"context_line":"        self.stubs.Set(libvirt_driver, \u0027libvirt\u0027, fakelibvirt)"},{"line_number":13408,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba3cc151_8f35c1dc","line":13405,"updated":"2015-07-10 02:09:10.000000000","message":"This test need docstring to explain what specific scenarios it covers.","commit_id":"3e6fcad1388b068cb7470d3e75d71cbe075c1ee3"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"5e78f177d18d4aca50a85530e85682e40f348ea4","unresolved":false,"context_lines":[{"line_number":13402,"context_line":""},{"line_number":13403,"context_line":"    # test_volume_delete_snapshot_* testcases above covers Old Cinder"},{"line_number":13404,"context_line":"    # scenarios. Adding testcases below for New Cinder scenarios"},{"line_number":13405,"context_line":"    def test_volume_snapshot_delete_3(self):"},{"line_number":13406,"context_line":""},{"line_number":13407,"context_line":"        self.stubs.Set(libvirt_driver, \u0027libvirt\u0027, fakelibvirt)"},{"line_number":13408,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba3cc151_265cd0ef","line":13405,"in_reply_to":"ba3cc151_8f35c1dc","updated":"2015-07-10 10:39:40.000000000","message":"Its clearly says in the comment above that the below tests are for New Cinder scenarios. Anyways I have added docstring too","commit_id":"3e6fcad1388b068cb7470d3e75d71cbe075c1ee3"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"626be5401b3acafdd73e9b45d3f4bbe9164f801d","unresolved":false,"context_lines":[{"line_number":13435,"context_line":"        self.mox.VerifyAll()"},{"line_number":13436,"context_line":""},{"line_number":13437,"context_line":"    def test_volume_snapshot_delete_4(self):"},{"line_number":13438,"context_line":""},{"line_number":13439,"context_line":"        # Update delete_info to reflect rebase scenario"},{"line_number":13440,"context_line":"        self.delete_info_3.update({\u0027active_file\u0027: \u0027snap.img\u0027})"},{"line_number":13441,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba3cc151_af5445fe","line":13438,"updated":"2015-07-10 02:09:10.000000000","message":"Need docstring I think.","commit_id":"3e6fcad1388b068cb7470d3e75d71cbe075c1ee3"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"5e78f177d18d4aca50a85530e85682e40f348ea4","unresolved":false,"context_lines":[{"line_number":13435,"context_line":"        self.mox.VerifyAll()"},{"line_number":13436,"context_line":""},{"line_number":13437,"context_line":"    def test_volume_snapshot_delete_4(self):"},{"line_number":13438,"context_line":""},{"line_number":13439,"context_line":"        # Update delete_info to reflect rebase scenario"},{"line_number":13440,"context_line":"        self.delete_info_3.update({\u0027active_file\u0027: \u0027snap.img\u0027})"},{"line_number":13441,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba3cc151_065bccf7","line":13438,"in_reply_to":"ba3cc151_af5445fe","updated":"2015-07-10 10:39:40.000000000","message":"Done","commit_id":"3e6fcad1388b068cb7470d3e75d71cbe075c1ee3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"21ad3515534db6bfb69e26c68ee347d5b9ca1e42","unresolved":false,"context_lines":[{"line_number":13008,"context_line":""},{"line_number":13009,"context_line":"        self.volume_uuid \u003d \u00270e38683e-f0af-418f-a3f1-6b67ea0f919d\u0027"},{"line_number":13010,"context_line":"        self.snapshot_id \u003d \u00279c3ca9f4-9f4e-4dba-bedd-5c5e4b52b162\u0027"},{"line_number":13011,"context_line":"        # Old Cinder"},{"line_number":13012,"context_line":"        # TODO(deepakcs): Remove this in \u0027M\u0027 release"},{"line_number":13013,"context_line":"        self.delete_info_1 \u003d {\u0027type\u0027: \u0027qcow2\u0027,"},{"line_number":13014,"context_line":"                              \u0027file_to_merge\u0027: \u0027snap.img\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a41bdd9_09e01af9","line":13011,"updated":"2015-07-15 11:42:23.000000000","message":"Can you please add something a little more information other than \"old cinder\". Not being cinder savvy I have no idea what this means. So say in a years time when I a fixing something here I will have no idea what old cinder is :)\nCan you please state if this is a specific version or something of the likes","commit_id":"2d9d175ea6230b585527c5607a39732177deb5e7"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"8029e0097e3075da768d3960eb7a6da70238eb88","unresolved":false,"context_lines":[{"line_number":13008,"context_line":""},{"line_number":13009,"context_line":"        self.volume_uuid \u003d \u00270e38683e-f0af-418f-a3f1-6b67ea0f919d\u0027"},{"line_number":13010,"context_line":"        self.snapshot_id \u003d \u00279c3ca9f4-9f4e-4dba-bedd-5c5e4b52b162\u0027"},{"line_number":13011,"context_line":"        # Old Cinder"},{"line_number":13012,"context_line":"        # TODO(deepakcs): Remove this in \u0027M\u0027 release"},{"line_number":13013,"context_line":"        self.delete_info_1 \u003d {\u0027type\u0027: \u0027qcow2\u0027,"},{"line_number":13014,"context_line":"                              \u0027file_to_merge\u0027: \u0027snap.img\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a41bdd9_f53d85dd","line":13011,"in_reply_to":"9a41bdd9_09e01af9","updated":"2015-07-17 11:54:20.000000000","message":"Done","commit_id":"2d9d175ea6230b585527c5607a39732177deb5e7"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"c2a6ea7eb22d3d323c4e355c299dfa0499c55cbc","unresolved":false,"context_lines":[{"line_number":13516,"context_line":"        self.mox.StubOutWithMock(self.drvr._host, \u0027has_min_version\u0027)"},{"line_number":13517,"context_line":"        self.mox.StubOutWithMock(domain, \u0027blockRebase\u0027)"},{"line_number":13518,"context_line":"        self.mox.StubOutWithMock(domain, \u0027blockCommit\u0027)"},{"line_number":13519,"context_line":"        self.mox.StubOutWithMock(domain, \u0027blockJobInfo\u0027)"},{"line_number":13520,"context_line":""},{"line_number":13521,"context_line":"        self.drvr._host.get_guest(instance).AndReturn(guest)"},{"line_number":13522,"context_line":"        self.drvr._host.has_min_version(mox.IgnoreArg()).AndReturn(True)"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_d21b3b7f","line":13519,"updated":"2015-07-31 02:10:03.000000000","message":"sorry I miss this, I found there are duplicating codes in delete_3 and delete_4, and they could be extracted to a help function if you have to update a new patch. On the other hand, I\u0027m not sure we should use mox any more in UT. Maybe you need to use mock.patch or mock.patch.object instead of mox.","commit_id":"46c0eb0072f0c0e44af29e9001492321e68a6385"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"04bad517ecd135f4e070379b9f9ae9a68df6abe5","unresolved":false,"context_lines":[{"line_number":1775,"context_line":"        timer.start(interval\u003d0.5).wait()"},{"line_number":1776,"context_line":""},{"line_number":1777,"context_line":"    def _volume_snapshot_delete(self, context, instance, volume_id,"},{"line_number":1778,"context_line":"                                snapshot_id, delete_info\u003dNone, old_cinder\u003dTrue):"},{"line_number":1779,"context_line":"        \"\"\"Note:"},{"line_number":1780,"context_line":"            if file being merged into \u003d\u003d active image:"},{"line_number":1781,"context_line":"                do a blockRebase (pull) operation"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ad32947_562f69a1","line":1778,"updated":"2015-04-27 17:44:48.000000000","message":"I don\u0027t think we really want to add an \"old_cinder\" parameter here... this is crossing over a lot of layers of abstraction etc.","commit_id":"62bdedb35b10fd45133f0d00660db0bdb1dfce9a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"1271f40fe62d07449ee1ba437b8bfe15d459b55b","unresolved":false,"context_lines":[{"line_number":1775,"context_line":"        timer.start(interval\u003d0.5).wait()"},{"line_number":1776,"context_line":""},{"line_number":1777,"context_line":"    def _volume_snapshot_delete(self, context, instance, volume_id,"},{"line_number":1778,"context_line":"                                snapshot_id, delete_info\u003dNone, old_cinder\u003dTrue):"},{"line_number":1779,"context_line":"        \"\"\"Note:"},{"line_number":1780,"context_line":"            if file being merged into \u003d\u003d active image:"},{"line_number":1781,"context_line":"                do a blockRebase (pull) operation"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_154a0784","line":1778,"in_reply_to":"7ad32947_562f69a1","updated":"2015-05-06 09:14:05.000000000","message":"Done\nI still need a way to track old/new Cinder inside _volume_snapshot_delete() function,  which i achieved using compat_mode, hope that is fine, since we need to check for old/new in many places, so having a variable keeps the code/flow clean.","commit_id":"62bdedb35b10fd45133f0d00660db0bdb1dfce9a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"04bad517ecd135f4e070379b9f9ae9a68df6abe5","unresolved":false,"context_lines":[{"line_number":1960,"context_line":""},{"line_number":1961,"context_line":"            _delete_method \u003d \"blockRebase\""},{"line_number":1962,"context_line":"            if not old_cinder:"},{"line_number":1963,"context_line":"                _active_file_fmt \u003d delete_info[\u0027snapshot_file_fmt\u0027]"},{"line_number":1964,"context_line":"            else:"},{"line_number":1965,"context_line":"                # Old Cinder"},{"line_number":1966,"context_line":"                _active_file_fmt \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ad32947_f1c9dfad","line":1963,"updated":"2015-04-27 17:44:48.000000000","message":"Should be able to send active_file_fmt regardless, old versions of Cinder will just ignore it.","commit_id":"62bdedb35b10fd45133f0d00660db0bdb1dfce9a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"1271f40fe62d07449ee1ba437b8bfe15d459b55b","unresolved":false,"context_lines":[{"line_number":1960,"context_line":""},{"line_number":1961,"context_line":"            _delete_method \u003d \"blockRebase\""},{"line_number":1962,"context_line":"            if not old_cinder:"},{"line_number":1963,"context_line":"                _active_file_fmt \u003d delete_info[\u0027snapshot_file_fmt\u0027]"},{"line_number":1964,"context_line":"            else:"},{"line_number":1965,"context_line":"                # Old Cinder"},{"line_number":1966,"context_line":"                _active_file_fmt \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_1504477c","line":1963,"in_reply_to":"7ad32947_f1c9dfad","updated":"2015-05-06 09:14:05.000000000","message":"I am just setting the variable here, based on whether its old/new cinder and I need the check since only new cinder sends snapshot_file_fmt. Sending file_info Irrespective of old/new Cinder , will be fixed in volume_snapshot_delete() function.","commit_id":"62bdedb35b10fd45133f0d00660db0bdb1dfce9a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"04bad517ecd135f4e070379b9f9ae9a68df6abe5","unresolved":false,"context_lines":[{"line_number":2043,"context_line":"        # NOTE(deepakcs): Remove this in \u0027M\u0027 release"},{"line_number":2044,"context_line":"        old_cinder \u003d False"},{"line_number":2045,"context_line":"        status \u003d None"},{"line_number":2046,"context_line":"        try:"},{"line_number":2047,"context_line":"            if delete_info[\u0027base_of_base_file\u0027]:"},{"line_number":2048,"context_line":"                pass # New Cinder"},{"line_number":2049,"context_line":"                LOG.info(\"DPKS: Detected New Cinder\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ad32947_11ee9b22","line":2046,"updated":"2015-04-27 17:44:48.000000000","message":"Instead of try, this can just be\n\nif \u0027base_of_base_file\u0027 in delete_info:","commit_id":"62bdedb35b10fd45133f0d00660db0bdb1dfce9a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"1271f40fe62d07449ee1ba437b8bfe15d459b55b","unresolved":false,"context_lines":[{"line_number":2043,"context_line":"        # NOTE(deepakcs): Remove this in \u0027M\u0027 release"},{"line_number":2044,"context_line":"        old_cinder \u003d False"},{"line_number":2045,"context_line":"        status \u003d None"},{"line_number":2046,"context_line":"        try:"},{"line_number":2047,"context_line":"            if delete_info[\u0027base_of_base_file\u0027]:"},{"line_number":2048,"context_line":"                pass # New Cinder"},{"line_number":2049,"context_line":"                LOG.info(\"DPKS: Detected New Cinder\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_d0ceddb3","line":2046,"in_reply_to":"7ad32947_11ee9b22","updated":"2015-05-06 09:14:05.000000000","message":"thanks, will remove this completely as we no longer need to send old_cinder in _volume_snapshot_delete per your earlier comment.","commit_id":"62bdedb35b10fd45133f0d00660db0bdb1dfce9a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"04bad517ecd135f4e070379b9f9ae9a68df6abe5","unresolved":false,"context_lines":[{"line_number":2064,"context_line":"                    \u0027deleting_compute_error\u0027, file_info)"},{"line_number":2065,"context_line":""},{"line_number":2066,"context_line":"        if not old_cinder:"},{"line_number":2067,"context_line":"            # Send back info to Cinder in order for it to track the file changes"},{"line_number":2068,"context_line":"            # post this operation. file_to_delete and active_file_fmt are enough"},{"line_number":2069,"context_line":"            # to be sent back to Cinder."},{"line_number":2070,"context_line":"            if del_method \u003d\u003d \"blockRebase\":"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ad32947_319bd7cb","line":2067,"updated":"2015-04-27 17:44:48.000000000","message":"This can be sent regardless of the Cinder version.","commit_id":"62bdedb35b10fd45133f0d00660db0bdb1dfce9a"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"1271f40fe62d07449ee1ba437b8bfe15d459b55b","unresolved":false,"context_lines":[{"line_number":2064,"context_line":"                    \u0027deleting_compute_error\u0027, file_info)"},{"line_number":2065,"context_line":""},{"line_number":2066,"context_line":"        if not old_cinder:"},{"line_number":2067,"context_line":"            # Send back info to Cinder in order for it to track the file changes"},{"line_number":2068,"context_line":"            # post this operation. file_to_delete and active_file_fmt are enough"},{"line_number":2069,"context_line":"            # to be sent back to Cinder."},{"line_number":2070,"context_line":"            if del_method \u003d\u003d \"blockRebase\":"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_b0c48192","line":2067,"in_reply_to":"7ad32947_319bd7cb","updated":"2015-05-06 09:14:05.000000000","message":"Done","commit_id":"62bdedb35b10fd45133f0d00660db0bdb1dfce9a"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"925250ed2cc8cdd65bf230901c15573444c5dbb1","unresolved":false,"context_lines":[{"line_number":1567,"context_line":"            helps Nova -\u003e Cinder transition during the different phases of"},{"line_number":1568,"context_line":"            snapshot create/delete process"},{"line_number":1569,"context_line":"        :param file_info: Info sent back to Cinder"},{"line_number":1570,"context_line":""},{"line_number":1571,"context_line":"        \"\"\""},{"line_number":1572,"context_line":""},{"line_number":1573,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_5f98936a","line":1570,"updated":"2015-05-26 18:33:46.000000000","message":"Multi line docstrings should end on a new line.\n\nPlease remove the extra blank line.\n\nhttp://docs.openstack.org/developer/hacking/#docstrings","commit_id":"53fd7ff340f9a422c909ffc783458d96681a4da9"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"c0ab40ecf4e6c3fa6dfc3b48fc7e918a6a68bbb1","unresolved":false,"context_lines":[{"line_number":1567,"context_line":"            helps Nova -\u003e Cinder transition during the different phases of"},{"line_number":1568,"context_line":"            snapshot create/delete process"},{"line_number":1569,"context_line":"        :param file_info: Info sent back to Cinder"},{"line_number":1570,"context_line":""},{"line_number":1571,"context_line":"        \"\"\""},{"line_number":1572,"context_line":""},{"line_number":1573,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5afe65bd_29aa49d5","line":1570,"in_reply_to":"7a016987_5f98936a","updated":"2015-06-02 09:48:57.000000000","message":"Done","commit_id":"53fd7ff340f9a422c909ffc783458d96681a4da9"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1ae790e4b86f91d99ff6df6d841ef8e27afcf180","unresolved":false,"context_lines":[{"line_number":1563,"context_line":"        libvirt_utils.extract_snapshot(disk_delta, \u0027qcow2\u0027,"},{"line_number":1564,"context_line":"                                       out_path, image_format)"},{"line_number":1565,"context_line":""},{"line_number":1566,"context_line":"    def _volume_snapshot_update_status(self, context, snapshot_id, status,"},{"line_number":1567,"context_line":"                                       compute_snapshot_status\u003dNone,"},{"line_number":1568,"context_line":"                                       file_info\u003dNone):"},{"line_number":1569,"context_line":"        \"\"\"Send a snapshot status update to Cinder."}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_f7af5fe1","line":1566,"updated":"2015-06-02 15:40:01.000000000","message":"I think the prototype of that method can stay the same and we can just change the type \"status\" to be an object SnapshotStatus","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"03b1475d9c5ba0c0054086dec4f2613b961e6bd8","unresolved":false,"context_lines":[{"line_number":1563,"context_line":"        libvirt_utils.extract_snapshot(disk_delta, \u0027qcow2\u0027,"},{"line_number":1564,"context_line":"                                       out_path, image_format)"},{"line_number":1565,"context_line":""},{"line_number":1566,"context_line":"    def _volume_snapshot_update_status(self, context, snapshot_id, status,"},{"line_number":1567,"context_line":"                                       compute_snapshot_status\u003dNone,"},{"line_number":1568,"context_line":"                                       file_info\u003dNone):"},{"line_number":1569,"context_line":"        \"\"\"Send a snapshot status update to Cinder."}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_66c818a9","line":1566,"in_reply_to":"5afe65bd_c5f48d88","updated":"2015-06-17 08:23:27.000000000","message":"Done","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"20c9b8ea0ab5f72b81186eb40006b2662d2972ac","unresolved":false,"context_lines":[{"line_number":1563,"context_line":"        libvirt_utils.extract_snapshot(disk_delta, \u0027qcow2\u0027,"},{"line_number":1564,"context_line":"                                       out_path, image_format)"},{"line_number":1565,"context_line":""},{"line_number":1566,"context_line":"    def _volume_snapshot_update_status(self, context, snapshot_id, status,"},{"line_number":1567,"context_line":"                                       compute_snapshot_status\u003dNone,"},{"line_number":1568,"context_line":"                                       file_info\u003dNone):"},{"line_number":1569,"context_line":"        \"\"\"Send a snapshot status update to Cinder."}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_c5f48d88","line":1566,"in_reply_to":"5afe65bd_f7af5fe1","updated":"2015-06-03 07:21:52.000000000","message":"Doing so would mean I need to change all the place from where _volume_snapshot_update_status is being called, which is addnl work for no gain. Objects are meant to be entities to be passed across modules/services, so it made sense to create Object at the edge here where I call the volume_api. \n\nAlso \u0027status\u0027 field will be deprecated/remove in next release, as what Cinder really needs from Nova is the compute status, not \u0027status\u0027","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1ae790e4b86f91d99ff6df6d841ef8e27afcf180","unresolved":false,"context_lines":[{"line_number":1583,"context_line":"        :param file_info: Info sent back to Cinder"},{"line_number":1584,"context_line":"        \"\"\""},{"line_number":1585,"context_line":""},{"line_number":1586,"context_line":"        oss_obj \u003d objects.OnlineSnapshotStatus.create("},{"line_number":1587,"context_line":"            compute_snapshot_status, file_info)"},{"line_number":1588,"context_line":"        try:"},{"line_number":1589,"context_line":"            self._volume_api.update_snapshot_status(context, snapshot_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_57d87353","line":1586,"updated":"2015-06-02 15:40:01.000000000","message":"No need of this","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"20c9b8ea0ab5f72b81186eb40006b2662d2972ac","unresolved":false,"context_lines":[{"line_number":1583,"context_line":"        :param file_info: Info sent back to Cinder"},{"line_number":1584,"context_line":"        \"\"\""},{"line_number":1585,"context_line":""},{"line_number":1586,"context_line":"        oss_obj \u003d objects.OnlineSnapshotStatus.create("},{"line_number":1587,"context_line":"            compute_snapshot_status, file_info)"},{"line_number":1588,"context_line":"        try:"},{"line_number":1589,"context_line":"            self._volume_api.update_snapshot_status(context, snapshot_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_85ee95b2","line":1586,"in_reply_to":"5afe65bd_57d87353","updated":"2015-06-03 07:21:52.000000000","message":"see my comment above","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"03b1475d9c5ba0c0054086dec4f2613b961e6bd8","unresolved":false,"context_lines":[{"line_number":1583,"context_line":"        :param file_info: Info sent back to Cinder"},{"line_number":1584,"context_line":"        \"\"\""},{"line_number":1585,"context_line":""},{"line_number":1586,"context_line":"        oss_obj \u003d objects.OnlineSnapshotStatus.create("},{"line_number":1587,"context_line":"            compute_snapshot_status, file_info)"},{"line_number":1588,"context_line":"        try:"},{"line_number":1589,"context_line":"            self._volume_api.update_snapshot_status(context, snapshot_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_46c4f48f","line":1586,"in_reply_to":"5afe65bd_85ee95b2","updated":"2015-06-17 08:23:27.000000000","message":"Done","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1ae790e4b86f91d99ff6df6d841ef8e27afcf180","unresolved":false,"context_lines":[{"line_number":1761,"context_line":"                    context, snapshot_id, \u0027error\u0027, \u0027creating_compute_error\u0027,"},{"line_number":1762,"context_line":"                    file_info)"},{"line_number":1763,"context_line":""},{"line_number":1764,"context_line":"        file_info \u003d {\u0027active_file_fmt\u0027: create_info[\u0027type\u0027],"},{"line_number":1765,"context_line":"                     \u0027file_to_delete\u0027: None}"},{"line_number":1766,"context_line":""},{"line_number":1767,"context_line":"        self._volume_snapshot_update_status("}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_77048f7d","line":1764,"updated":"2015-06-02 15:40:01.000000000","message":"Here you should to create an object SnapshotStatus to pass to the method self._volume_snapshot_update_status(...)\n\n\n   status \u003d objects.SnapshotStatus(status\u003d\u0027creating\u0027, progress\u003d0,\n       compute_snapshot_status\u003d\u0027creating_compute_complete\u0027, ...)\n   self._volume_snapshot_update_status(context, snapshot_id, status)\n   ...","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"20c9b8ea0ab5f72b81186eb40006b2662d2972ac","unresolved":false,"context_lines":[{"line_number":1761,"context_line":"                    context, snapshot_id, \u0027error\u0027, \u0027creating_compute_error\u0027,"},{"line_number":1762,"context_line":"                    file_info)"},{"line_number":1763,"context_line":""},{"line_number":1764,"context_line":"        file_info \u003d {\u0027active_file_fmt\u0027: create_info[\u0027type\u0027],"},{"line_number":1765,"context_line":"                     \u0027file_to_delete\u0027: None}"},{"line_number":1766,"context_line":""},{"line_number":1767,"context_line":"        self._volume_snapshot_update_status("}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_e540a9a7","line":1764,"in_reply_to":"5afe65bd_77048f7d","updated":"2015-06-03 07:21:52.000000000","message":"see my comment above","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"03b1475d9c5ba0c0054086dec4f2613b961e6bd8","unresolved":false,"context_lines":[{"line_number":1761,"context_line":"                    context, snapshot_id, \u0027error\u0027, \u0027creating_compute_error\u0027,"},{"line_number":1762,"context_line":"                    file_info)"},{"line_number":1763,"context_line":""},{"line_number":1764,"context_line":"        file_info \u003d {\u0027active_file_fmt\u0027: create_info[\u0027type\u0027],"},{"line_number":1765,"context_line":"                     \u0027file_to_delete\u0027: None}"},{"line_number":1766,"context_line":""},{"line_number":1767,"context_line":"        self._volume_snapshot_update_status("}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_a63940a6","line":1764,"in_reply_to":"5afe65bd_e540a9a7","updated":"2015-06-17 08:23:27.000000000","message":"Done","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"8b152c19ab50574d70e512b65d1917c46acfd5e8","unresolved":false,"context_lines":[{"line_number":1764,"context_line":"            raise exception.NovaException(_(\u0027snapshot_id required \u0027"},{"line_number":1765,"context_line":"                                            \u0027in create_info\u0027))"},{"line_number":1766,"context_line":""},{"line_number":1767,"context_line":"        file_info \u003d {}"},{"line_number":1768,"context_line":"        try:"},{"line_number":1769,"context_line":"            self._volume_snapshot_create(context, instance, virt_dom,"},{"line_number":1770,"context_line":"                                         volume_id, create_info[\u0027new_file\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_bdbe2a63","line":1767,"updated":"2015-06-17 12:01:50.000000000","message":"If \u0027create\u0027 as this argument option you can remove this line then line 1777 have\n\n  snap_status \u003d objects.OnlineSnapshotStatus.create(\n    \u0027error\u0027, creating_compute_error\u0027)","commit_id":"e878038a10c56e119b114f1d7f1166df0be71c49"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"19edb414e3b4425e2c05eaf625f53344306d75f3","unresolved":false,"context_lines":[{"line_number":1764,"context_line":"            raise exception.NovaException(_(\u0027snapshot_id required \u0027"},{"line_number":1765,"context_line":"                                            \u0027in create_info\u0027))"},{"line_number":1766,"context_line":""},{"line_number":1767,"context_line":"        file_info \u003d {}"},{"line_number":1768,"context_line":"        try:"},{"line_number":1769,"context_line":"            self._volume_snapshot_create(context, instance, virt_dom,"},{"line_number":1770,"context_line":"                                         volume_id, create_info[\u0027new_file\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_a4ecfc29","line":1767,"in_reply_to":"fa32b979_bdbe2a63","updated":"2015-06-23 07:14:15.000000000","message":"Done","commit_id":"e878038a10c56e119b114f1d7f1166df0be71c49"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"8b152c19ab50574d70e512b65d1917c46acfd5e8","unresolved":false,"context_lines":[{"line_number":1922,"context_line":"            my_snap_dev \u003d \u0027%s[%s]\u0027 % (my_dev, index)"},{"line_number":1923,"context_line":"            return my_snap_dev"},{"line_number":1924,"context_line":""},{"line_number":1925,"context_line":"        # Preserve compatibility with pre-liberty Cinder"},{"line_number":1926,"context_line":"        # NOTE(deepakcs): Remove this in the \u0027M\u0027 release"},{"line_number":1927,"context_line":"        compat_mode \u003d True"},{"line_number":1928,"context_line":"        if \u0027base_of_base_file\u0027 in delete_info:"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_6096b594","line":1925,"updated":"2015-06-17 12:01:50.000000000","message":"It\u0027s difficult to find the relation with the new object you have introduced here. I think of this compatibly code should be addressed in a new patchset. Even that seems good","commit_id":"e878038a10c56e119b114f1d7f1166df0be71c49"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"19edb414e3b4425e2c05eaf625f53344306d75f3","unresolved":false,"context_lines":[{"line_number":1922,"context_line":"            my_snap_dev \u003d \u0027%s[%s]\u0027 % (my_dev, index)"},{"line_number":1923,"context_line":"            return my_snap_dev"},{"line_number":1924,"context_line":""},{"line_number":1925,"context_line":"        # Preserve compatibility with pre-liberty Cinder"},{"line_number":1926,"context_line":"        # NOTE(deepakcs): Remove this in the \u0027M\u0027 release"},{"line_number":1927,"context_line":"        compat_mode \u003d True"},{"line_number":1928,"context_line":"        if \u0027base_of_base_file\u0027 in delete_info:"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_24646ce3","line":1925,"in_reply_to":"fa32b979_6096b594","updated":"2015-06-23 07:14:15.000000000","message":"Done","commit_id":"e878038a10c56e119b114f1d7f1166df0be71c49"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"28b081b4e2dcbb27070da2923848cffcf62d2744","unresolved":false,"context_lines":[{"line_number":1594,"context_line":"        \"\"\""},{"line_number":1595,"context_line":""},{"line_number":1596,"context_line":"        try:"},{"line_number":1597,"context_line":"            self._volume_api.update_snapshot_status(context, snapshot_id,"},{"line_number":1598,"context_line":"                                                    snap_status)"},{"line_number":1599,"context_line":"        except Exception:"},{"line_number":1600,"context_line":"            LOG.exception(_LE(\u0027Failed to send updated snapshot status \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_5e100d59","line":1597,"updated":"2015-06-24 16:26:30.000000000","message":"This part of code should not be mixed with the compatibility code you are doing for Cinder.\n\nActually that should be in this patch https://review.openstack.org/#/c/194538/","commit_id":"4e37165a46b8a188d2aaf9cf699f8f8a380986b1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"21ad3515534db6bfb69e26c68ee347d5b9ca1e42","unresolved":false,"context_lines":[{"line_number":2086,"context_line":"        # post this operation. file_to_delete and active_file_fmt are enough"},{"line_number":2087,"context_line":"        # to be sent back to Cinder."},{"line_number":2088,"context_line":"        if del_method \u003d\u003d \"blockRebase\":"},{"line_number":2089,"context_line":"            # Preserve compatibility with pre-liberty Cinder"},{"line_number":2090,"context_line":"            if \u0027base_file\u0027 in delete_info:"},{"line_number":2091,"context_line":"                file_to_delete \u003d delete_info[\u0027base_file\u0027]"},{"line_number":2092,"context_line":"        elif del_method \u003d\u003d \"blockCommit\":"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a41bdd9_e9a8568e","line":2089,"updated":"2015-07-15 11:42:23.000000000","message":":) yaya this makes sense","commit_id":"2d9d175ea6230b585527c5607a39732177deb5e7"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"80d847b65540598b4208f3c5fd0f708f07fa2b4a","unresolved":false,"context_lines":[{"line_number":1896,"context_line":"        # (relative backing path seems to work for this case)"},{"line_number":1897,"context_line":"        try:"},{"line_number":1898,"context_line":"            libvirt.VIR_DOMAIN_BLOCK_REBASE_RELATIVE"},{"line_number":1899,"context_line":"            relative \u003d True"},{"line_number":1900,"context_line":"        except AttributeError:"},{"line_number":1901,"context_line":"            LOG.warn(_LW(\"Relative blockrebase support was not detected. \""},{"line_number":1902,"context_line":"                         \"Continuing with old behaviour.\"))"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a41bdd9_423afece","line":1899,"updated":"2015-07-20 10:23:39.000000000","message":"So here you will reintroduce bug waiting to be fixed here https://review.openstack.org/#/c/202442/\n\nYou should probably rebase you work on top of it.","commit_id":"7e4d92ca7b923d1833a12cae52c5c5d683a8a5c1"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"8e90133ac69fc4bef6fd280ea866fb036f7a816e","unresolved":false,"context_lines":[{"line_number":1896,"context_line":"        # (relative backing path seems to work for this case)"},{"line_number":1897,"context_line":"        try:"},{"line_number":1898,"context_line":"            libvirt.VIR_DOMAIN_BLOCK_REBASE_RELATIVE"},{"line_number":1899,"context_line":"            relative \u003d True"},{"line_number":1900,"context_line":"        except AttributeError:"},{"line_number":1901,"context_line":"            LOG.warn(_LW(\"Relative blockrebase support was not detected. \""},{"line_number":1902,"context_line":"                         \"Continuing with old behaviour.\"))"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_9ac72112","line":1899,"in_reply_to":"9a41bdd9_423afece","updated":"2015-07-20 13:53:15.000000000","message":"Yeah, i agree, but i thought that bug is close to getting merged, so it should be okay.","commit_id":"7e4d92ca7b923d1833a12cae52c5c5d683a8a5c1"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"683a6e1cf8a76f5dacb4727ceccc6383a36db75b","unresolved":false,"context_lines":[{"line_number":1964,"context_line":"            while dev.wait_for_job(abort_on_error\u003dTrue):"},{"line_number":1965,"context_line":"                LOG.debug(\u0027waiting for blockCommit job completion\u0027,"},{"line_number":1966,"context_line":"                          instance\u003dinstance)"},{"line_number":1967,"context_line":"                time.sleep(0.5)"},{"line_number":1968,"context_line":""},{"line_number":1969,"context_line":"    def volume_snapshot_delete(self, context, instance, volume_id, snapshot_id,"},{"line_number":1970,"context_line":"                               delete_info):"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_6d28fc86","side":"PARENT","line":1967,"updated":"2015-08-05 16:04:39.000000000","message":"To expand on John\u0027s comment. The problem we have is that you have refactored this pre-existing code to move it all out into a number of helper methods. This is a great idea, but unfortunately you have done so in the same patch that you are adding in new features. This makes life very hard for reviewers trying to validate the new feature that is mixed into the refactoring. This is why it is required to be split per the guidelines: https://wiki.openstack.org/wiki/GitCommitMessages#Structural_split_of_changes\n\nSo you need to split this change into at least 2 patches. First a patch (or patches) which *only* do refactoring / movement of existing code. Then a patch which only adds the new feature","commit_id":"17da39eb75c14556df2e84425b24897bc147b41b"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"d59f24518b684a20ae6501ac02d78a36ee693e02","unresolved":false,"context_lines":[{"line_number":1964,"context_line":"            while dev.wait_for_job(abort_on_error\u003dTrue):"},{"line_number":1965,"context_line":"                LOG.debug(\u0027waiting for blockCommit job completion\u0027,"},{"line_number":1966,"context_line":"                          instance\u003dinstance)"},{"line_number":1967,"context_line":"                time.sleep(0.5)"},{"line_number":1968,"context_line":""},{"line_number":1969,"context_line":"    def volume_snapshot_delete(self, context, instance, volume_id, snapshot_id,"},{"line_number":1970,"context_line":"                               delete_info):"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_3501b205","side":"PARENT","line":1967,"in_reply_to":"1a4dcd0f_6d28fc86","updated":"2015-08-06 11:20:51.000000000","message":"Done","commit_id":"17da39eb75c14556df2e84425b24897bc147b41b"}],"nova/volume/cinder.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"fbcd950229ebccde157144dbbf8f997d1d1fd3a8","unresolved":false,"context_lines":[{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    @translate_snapshot_exception"},{"line_number":462,"context_line":"    def update_snapshot_status(self, context, snapshot_id, status,"},{"line_number":463,"context_line":"                               compute_snapshot_status\u003dNone, file_info\u003dNone):"},{"line_number":464,"context_line":"        vs \u003d cinderclient(context).volume_snapshots"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"        # \u002790%\u0027 here is used to tell Cinder that Nova is done"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_a7f1076d","line":463,"updated":"2015-05-22 16:41:28.000000000","message":"So this appears to be allowing an arbitrary dict of data to be passed back to cinder. Does cinder have a definition of what valid dict keys it is willing to allow.\n\nI rather think that we should at least have a python class with explicit named attributes defined for this, but it might even justify use of a Nova object class.","commit_id":"53fd7ff340f9a422c909ffc783458d96681a4da9"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"f185c4195ef5d848430e697aaae328cb9edf0848","unresolved":false,"context_lines":[{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    @translate_snapshot_exception"},{"line_number":462,"context_line":"    def update_snapshot_status(self, context, snapshot_id, status,"},{"line_number":463,"context_line":"                               compute_snapshot_status\u003dNone, file_info\u003dNone):"},{"line_number":464,"context_line":"        vs \u003d cinderclient(context).volume_snapshots"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"        # \u002790%\u0027 here is used to tell Cinder that Nova is done"}],"source_content_type":"text/x-python","patch_set":5,"id":"5afe65bd_21f38375","line":463,"in_reply_to":"7a016987_a522dfff","updated":"2015-06-02 09:39:45.000000000","message":"Done","commit_id":"53fd7ff340f9a422c909ffc783458d96681a4da9"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"4c95211690b68c45227a51f8a1588b695acf28c2","unresolved":false,"context_lines":[{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    @translate_snapshot_exception"},{"line_number":462,"context_line":"    def update_snapshot_status(self, context, snapshot_id, status,"},{"line_number":463,"context_line":"                               compute_snapshot_status\u003dNone, file_info\u003dNone):"},{"line_number":464,"context_line":"        vs \u003d cinderclient(context).volume_snapshots"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"        # \u002790%\u0027 here is used to tell Cinder that Nova is done"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_d0393ff3","line":463,"in_reply_to":"7a016987_a7f1076d","updated":"2015-05-25 11:19:08.000000000","message":"Hi Dan,\n    IIUC, objects are used to abstract access and provide versioning for DB \nfields, the file_info dict isn\u0027t stored in DB anywhere on the Nova side, does \nobject class still relevant here ? Most of the objects code that I have seen have \nsome DB mapping so not sure how I can use objects here.","commit_id":"53fd7ff340f9a422c909ffc783458d96681a4da9"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"2820041ece53a4205fe110eb0e9e26b843ded0f9","unresolved":false,"context_lines":[{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    @translate_snapshot_exception"},{"line_number":462,"context_line":"    def update_snapshot_status(self, context, snapshot_id, status,"},{"line_number":463,"context_line":"                               compute_snapshot_status\u003dNone, file_info\u003dNone):"},{"line_number":464,"context_line":"        vs \u003d cinderclient(context).volume_snapshots"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"        # \u002790%\u0027 here is used to tell Cinder that Nova is done"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_a522dfff","line":463,"in_reply_to":"7a016987_d0393ff3","updated":"2015-05-26 14:48:23.000000000","message":"We resolved this on IRC, but benefit of anyone else reading this.... it is fine to create Nova objects for things which don\u0027t live in the DB. The goal is to use Nova objects any where there is data interchange with an external service (database, message bus, cinder, glance, etc, etc). An example is the image properties proposed object https://review.openstack.org/#/c/76234/35/nova/objects/image_meta.py","commit_id":"53fd7ff340f9a422c909ffc783458d96681a4da9"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1ae790e4b86f91d99ff6df6d841ef8e27afcf180","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        return cinderclient(context).volumes.get_encryption_metadata(volume_id)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    @translate_snapshot_exception"},{"line_number":462,"context_line":"    def update_snapshot_status(self, context, snapshot_id, status, oss_obj):"},{"line_number":463,"context_line":"        vs \u003d cinderclient(context).volume_snapshots"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"        # \u002790%\u0027 here is used to tell Cinder that Nova is done"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_d748e32f","line":462,"updated":"2015-06-02 15:40:01.000000000","message":"This new arg can be removed, we now have status equal to an object SnapShotStatus","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"03b1475d9c5ba0c0054086dec4f2613b961e6bd8","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        return cinderclient(context).volumes.get_encryption_metadata(volume_id)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    @translate_snapshot_exception"},{"line_number":462,"context_line":"    def update_snapshot_status(self, context, snapshot_id, status, oss_obj):"},{"line_number":463,"context_line":"        vs \u003d cinderclient(context).volume_snapshots"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"        # \u002790%\u0027 here is used to tell Cinder that Nova is done"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_663fb887","line":462,"in_reply_to":"5afe65bd_657a79f3","updated":"2015-06-17 08:23:27.000000000","message":"Done","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"20c9b8ea0ab5f72b81186eb40006b2662d2972ac","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        return cinderclient(context).volumes.get_encryption_metadata(volume_id)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    @translate_snapshot_exception"},{"line_number":462,"context_line":"    def update_snapshot_status(self, context, snapshot_id, status, oss_obj):"},{"line_number":463,"context_line":"        vs \u003d cinderclient(context).volume_snapshots"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"        # \u002790%\u0027 here is used to tell Cinder that Nova is done"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_657a79f3","line":462,"in_reply_to":"5afe65bd_d748e32f","updated":"2015-06-03 07:21:52.000000000","message":"\u0027status\u0027 will be removed in next release (currently maintained only for backward compat with old Cinder) so i think its best to keep it outside of the nova object.","commit_id":"d63981cb84406607373c55a6ea95429b764e1d06"}]}
