)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":21648,"name":"zhangshuai","email":"446077695@qq.com","username":"zhangshuai"},"change_message_id":"8086f34161ac4853e4713a110041961b4cc5110b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"4. Volume Backup"},{"line_number":15,"context_line":"5. Volume delete snapshot"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ide80a6de2bd60961af14bd5ea226bbf355d8e19e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a71b18c_e0fb3277","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":52},"updated":"2016-12-06 09:49:48.000000000","message":"IMO, you\u0027d better add:\nImplements: blueprint protection-plugin-is-design","commit_id":"255c13eb85aa9eb83791cd17878d67e6a2ab02a8"}],"doc/source/specs/pluggable_protection_provider.rst":[{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"e7068d699ef2b430669bc209ea98e6dc2d9f6179","unresolved":false,"context_lines":[{"line_number":165,"context_line":"Another example: a Protection Plugin for Nova servers, might implement a"},{"line_number":166,"context_line":"protect operation by using *prepare begin hook* to contact a guest agent, in"},{"line_number":167,"context_line":"order to complete database and operation system transactions, use *main hook*"},{"line_number":168,"context_line":"to backup the server metadata, and use *prepare finish hook* to contact a"},{"line_number":169,"context_line":"guest agent, in order to resume transactions."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Notes:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_f84a8982","line":168,"range":{"start_line":168,"start_character":40,"end_line":168,"end_character":59},"updated":"2016-11-16 03:41:54.000000000","message":"Sorry, not quite understand. \u0027prepare finish hook\u0027 runs before \u0027main hook\u0027. so, it should be replaced with \u0027complete hook\u0027. right?","commit_id":"dd0e1e4bdcdde9faadfe0df1a68a981ef0ad4611"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"381b77d708702126edd3cc13b459a5bcc4819b94","unresolved":false,"context_lines":[{"line_number":165,"context_line":"Another example: a Protection Plugin for Nova servers, might implement a"},{"line_number":166,"context_line":"protect operation by using *prepare begin hook* to contact a guest agent, in"},{"line_number":167,"context_line":"order to complete database and operation system transactions, use *main hook*"},{"line_number":168,"context_line":"to backup the server metadata, and use *prepare finish hook* to contact a"},{"line_number":169,"context_line":"guest agent, in order to resume transactions."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Notes:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_4a6e3802","line":168,"range":{"start_line":168,"start_character":40,"end_line":168,"end_character":59},"in_reply_to":"7a77a97e_f84a8982","updated":"2016-11-16 08:40:34.000000000","message":"Yes, correct, I\u0027ll fix it. Thanks for noticing.","commit_id":"dd0e1e4bdcdde9faadfe0df1a68a981ef0ad4611"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"6393824baa45bde6b8165310d595f4edb4409787","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"   Hook method name: **\u003coperation_type\u003e_complete**"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"For example: a Protection Plugin for Nova servers, might implement a protect"},{"line_number":159,"context_line":"operation by using *prepare begin hook* to quiesce the Server and/or contact a"},{"line_number":160,"context_line":"guest agent to complete transactions. A protection plugin for Cinder volumes"},{"line_number":161,"context_line":"can implement *prepare finish hook* to take a snapshot of the volume. The"},{"line_number":162,"context_line":"server\u0027s *prepare finish hook* unquiesces the server and/or contacts a guest"},{"line_number":163,"context_line":"agent. Both the server\u0027s and the volume\u0027s *main hook* do the heavy lifting of"},{"line_number":164,"context_line":"copying the data."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Notes:"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_c0d6a426","line":164,"range":{"start_line":158,"start_character":0,"end_line":164,"end_character":17},"updated":"2016-11-16 10:02:50.000000000","message":"yuval I am confused about spliting the pre hook into prepare_begin and prepare_finish. \nI know that the scenario you provided may have these operation: do VM quiesce \nusing *prepare begin hook* of servers plugins, after the operation of Volume snapshot,\ndo VM Unquiesce using *prepare finish hook* of servers plugins. \nBut I think this scenario only be considered in the solution of karbor\u0027s default plugins, \nspliting the consistency operation about full vm backup into several hooks invoking. \nI have discussed the full vm backup solution with several backup vendors( Veritas CommVault).\nThe vm backup with their products Simpana and NBU, all the consistency operation(\nlike VM quiesce/Unquiesce, volume consistency snapshot) and resource dependence (volume) is \nconsidered and processed in the backup software itself. These is the value of their\nbackup software. If they integrate karbor with full vm backup solution, they will not \ndevelop two plugins(vm / volume plugins), just one vm plugins, to consider all the volume\ndependence and consistency processing, and will not split the backup action of vm backup \nto several hooks.\nIMO, spliting the pre hook into prepare_begin and prepare_finish is needed by the solution of karor\u0027s\ndefaut vm plugins. But the verdor may don\u0027t need this to do vm backup with plugins.","commit_id":"21cc79693bc38c49c1e89e6ce559a100155dbcc4"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"18fce48a04ec713c2f6642480f9f561cb9ab1a9f","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"   Hook method name: **\u003coperation_type\u003e_complete**"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"For example: a Protection Plugin for Nova servers, might implement a protect"},{"line_number":159,"context_line":"operation by using *prepare begin hook* to quiesce the Server and/or contact a"},{"line_number":160,"context_line":"guest agent to complete transactions. A protection plugin for Cinder volumes"},{"line_number":161,"context_line":"can implement *prepare finish hook* to take a snapshot of the volume. The"},{"line_number":162,"context_line":"server\u0027s *prepare finish hook* unquiesces the server and/or contacts a guest"},{"line_number":163,"context_line":"agent. Both the server\u0027s and the volume\u0027s *main hook* do the heavy lifting of"},{"line_number":164,"context_line":"copying the data."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Notes:"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_97859b08","line":164,"range":{"start_line":158,"start_character":0,"end_line":164,"end_character":17},"in_reply_to":"7a77a97e_2172c549","updated":"2016-11-17 09:01:00.000000000","message":"Yes, I think so. Some hooks are optional for the plugin of vendors.","commit_id":"21cc79693bc38c49c1e89e6ce559a100155dbcc4"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"698a511f661e1bb29d5f02dfc5745ba6d0df3da2","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"   Hook method name: **\u003coperation_type\u003e_complete**"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"For example: a Protection Plugin for Nova servers, might implement a protect"},{"line_number":159,"context_line":"operation by using *prepare begin hook* to quiesce the Server and/or contact a"},{"line_number":160,"context_line":"guest agent to complete transactions. A protection plugin for Cinder volumes"},{"line_number":161,"context_line":"can implement *prepare finish hook* to take a snapshot of the volume. The"},{"line_number":162,"context_line":"server\u0027s *prepare finish hook* unquiesces the server and/or contacts a guest"},{"line_number":163,"context_line":"agent. Both the server\u0027s and the volume\u0027s *main hook* do the heavy lifting of"},{"line_number":164,"context_line":"copying the data."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Notes:"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_2172c549","line":164,"range":{"start_line":158,"start_character":0,"end_line":164,"end_character":17},"in_reply_to":"7a77a97e_c0d6a426","updated":"2016-11-17 08:13:36.000000000","message":"It is perfectly fine that some protection plugins have no use for all of the hooks. Their existence is to give the protection plugin more power, however, it is not necessary to implement them.\nIf a protection plugin doesn\u0027t implement a hook, it is a no-op. They are all optional.","commit_id":"21cc79693bc38c49c1e89e6ce559a100155dbcc4"}]}
