)]}'
{"doc/source/specs/pluggable_protection_provider.rst":[{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"e970cd1a6e7620bccfabf48ae1f6e6088a30aa63","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Proposed Change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"As as solution we propose the *Pluggable Protection Provider*."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The *Pluggable Protection Provider* will be the reference implementation"},{"line_number":41,"context_line":"protection provider. It\u0027s purpose is to be fully pluggable and extandable so"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dab17558_7bbb8ac4","line":38,"range":{"start_line":38,"start_character":3,"end_line":38,"end_character":5},"updated":"2016-05-18 01:20:02.000000000","message":"s/as/a","commit_id":"a06f7d9ac6eefc4463216fb18ff0d6e8e2797a1d"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"cb10add235f743b402e5a3c3085d4429c6d14078","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    :green:`Green`: link of the parent resource PreActivity to the child"},{"line_number":71,"context_line":"    resource PreActivity"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    :yellow:`Yellow`: link of the resource PreActivity to ParallelActivity"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    :red:`Red`: link of the resource ParallelActivity to PostActivity"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"bab6814e_b3032276","line":73,"updated":"2016-05-18 02:57:54.000000000","message":"the link direction here is from first execution to later execution, right? say, parent_pre-\u003echild_pre, means parent_pre will get executed before child_pre.  \nBut in taskflow convention, link means the dependency. The link from task will be executed after the link to  task. \nSo the graph is a bit confusing here. \nBetter make it unified with workflow conventions.","commit_id":"a06f7d9ac6eefc4463216fb18ff0d6e8e2797a1d"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"596f9b47bcf212531d2a920f5a51d2cfbc8d00ef","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    :green:`Green`: link of the parent resource PreActivity to the child"},{"line_number":71,"context_line":"    resource PreActivity"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    :yellow:`Yellow`: link of the resource PreActivity to ParallelActivity"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    :red:`Red`: link of the resource ParallelActivity to PostActivity"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"bab6814e_85817092","line":73,"in_reply_to":"bab6814e_b3032276","updated":"2016-05-18 07:03:17.000000000","message":"forget this, I got it wrongly. the from task is the dependency task.","commit_id":"a06f7d9ac6eefc4463216fb18ff0d6e8e2797a1d"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"e970cd1a6e7620bccfabf48ae1f6e6088a30aa63","unresolved":false,"context_lines":[{"line_number":83,"context_line":"executor\u0027s policy. When all the tasks are done the operation is considered"},{"line_number":84,"context_line":"complete."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"This scheme decouples the tree structure form the task execution. A plugin that"},{"line_number":87,"context_line":"handles multiple resources or that aggregates mutiple resources to one task can"},{"line_number":88,"context_line":"use this mechanism to only return tasks when appropriate for it\u0027s scheme."},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"dab17558_b69d09be","line":86,"range":{"start_line":86,"start_character":41,"end_line":86,"end_character":45},"updated":"2016-05-18 01:20:02.000000000","message":"s/form/from","commit_id":"a06f7d9ac6eefc4463216fb18ff0d6e8e2797a1d"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"b405ac3e8034d50e676d8ba5a491f43a282d93d9","unresolved":false,"context_lines":[{"line_number":84,"context_line":"complete."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"This scheme decouples the tree structure form the task execution. A plugin that"},{"line_number":87,"context_line":"handles multiple resources or that aggregates mutiple resources to one task can"},{"line_number":88,"context_line":"use this mechanism to only return tasks when appropriate for it\u0027s scheme."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":".. image:: https://raw.githubusercontent.com/openstack/smaug/master/doc/images/pluggable_protection_provider.svg"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bab6814e_9651ac11","line":87,"updated":"2016-05-18 03:06:30.000000000","message":"Could you pls. give some example use cases here?\nPersonally, I don\u0027t quite get why one plugin will handle multiple resources. Do you mean the server\u0026volume consistency case to freeze IO?\nBTW, why we need pre/parallel/post activities here?  I could get it\u0027s because we could enable user to customize any task dependencies based on resource dependencies. But giving some concrete use case would be more self explained.","commit_id":"a06f7d9ac6eefc4463216fb18ff0d6e8e2797a1d"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"e595fd16d727a65d982d759120c4a1dd0e1cf4c7","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    :red:`Red`: link of the resource ParallelActivity to PostActivity"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    :indigo:`Indigo`: link of the parent resource PostActivity to the child"},{"line_number":165,"context_line":"    resource PostActivity"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"This scheme decouples the tree structure from the task execution. A plugin that"},{"line_number":168,"context_line":"handles multiple resources or that aggregates mutiple resources to one task can"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bab6814e_655a4952","line":165,"range":{"start_line":164,"start_character":22,"end_line":165,"end_character":25},"updated":"2016-05-19 07:31:34.000000000","message":"Maybe it is that \u0027link of the #child# resource PostActivity to the #parent# resource PostActivity\u0027","commit_id":"64034102ac629f94e13f2dbdadb6df6d3a871503"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"87747e9e2d937638bdcc75ab905fd27de73998ec","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    :red:`Red`: link of the resource ParallelActivity to PostActivity"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    :indigo:`Indigo`: link of the parent resource PostActivity to the child"},{"line_number":165,"context_line":"    resource PostActivity"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"This scheme decouples the tree structure from the task execution. A plugin that"},{"line_number":168,"context_line":"handles multiple resources or that aggregates mutiple resources to one task can"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bab6814e_687340e8","line":165,"range":{"start_line":164,"start_character":22,"end_line":165,"end_character":25},"in_reply_to":"bab6814e_655a4952","updated":"2016-05-19 07:48:24.000000000","message":"Thanks for noticing. Fixing it.","commit_id":"64034102ac629f94e13f2dbdadb6df6d3a871503"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"d45be10d4f57245d3b806ed10583837a1ecb9f7c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"directory specified by the ``provider_config_dir`` configuration option (by"},{"line_number":66,"context_line":"default: ``/etc/smaug/providers.d``). Each provider configuration file must"},{"line_number":67,"context_line":"bear the ``.conf`` suffix and contain a ``[provider]`` section. This section"},{"line_number":68,"context_line":"specifies the following configuration:"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"#. ``name``: the display name of the protection provider"},{"line_number":71,"context_line":"#. ``id``: internal, unique id"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_9ef97a83","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":38},"updated":"2016-05-19 08:22:33.000000000","message":"Each provider must provide protection plugin for all the supported resources","commit_id":"0486ada7d7aa50a950f6c85b0a5a6e6caa722749"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"d45be10d4f57245d3b806ed10583837a1ecb9f7c","unresolved":false,"context_lines":[{"line_number":68,"context_line":"specifies the following configuration:"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"#. ``name``: the display name of the protection provider"},{"line_number":71,"context_line":"#. ``id``: internal, unique id"},{"line_number":72,"context_line":"#. ``description``: textual description"},{"line_number":73,"context_line":"#. ``bank``: path to the bank plugin"},{"line_number":74,"context_line":"#. ``plugin``: path to a protection plugin. Can be specified multiple times for"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_fe7c06ed","line":71,"range":{"start_line":71,"start_character":11,"end_line":71,"end_character":19},"updated":"2016-05-19 08:22:33.000000000","message":"it is not internal it is expose via the API ?","commit_id":"0486ada7d7aa50a950f6c85b0a5a6e6caa722749"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"d45be10d4f57245d3b806ed10583837a1ecb9f7c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"#. ``id``: internal, unique id"},{"line_number":72,"context_line":"#. ``description``: textual description"},{"line_number":73,"context_line":"#. ``bank``: path to the bank plugin"},{"line_number":74,"context_line":"#. ``plugin``: path to a protection plugin. Can be specified multiple times for"},{"line_number":75,"context_line":"   multiple protection plugins."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Additionally, the provider configuration file can include other section"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_9e969a4a","line":74,"range":{"start_line":74,"start_character":15,"end_line":74,"end_character":42},"updated":"2016-05-19 08:22:33.000000000","message":"Per resource type","commit_id":"0486ada7d7aa50a950f6c85b0a5a6e6caa722749"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"d45be10d4f57245d3b806ed10583837a1ecb9f7c","unresolved":false,"context_lines":[{"line_number":75,"context_line":"   multiple protection plugins."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Additionally, the provider configuration file can include other section"},{"line_number":78,"context_line":"(besides the ``[provider]`` section), to be used as configuration for each bank"},{"line_number":79,"context_line":"or protection plugin."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Protection Plugin"},{"line_number":82,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_3e9dee59","line":79,"range":{"start_line":78,"start_character":38,"end_line":79,"end_character":21},"updated":"2016-05-19 08:22:33.000000000","message":"Please consider adding an example like swift bank parameters","commit_id":"0486ada7d7aa50a950f6c85b0a5a6e6caa722749"}],"doc/source/specs/protection-service/protection-service.rst":[{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"25f65c4e15cd88d434cf9ee176127e39342c3d34","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Operation RPC:"},{"line_number":38,"context_line":"--------------------"},{"line_number":39,"context_line":"**execute_operation(backup_plan:Bac,upPlan, action:Action):** where action"},{"line_number":40,"context_line":"could be protect or restore"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Provider RPC:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_3f5457c8","line":39,"range":{"start_line":39,"start_character":32,"end_line":39,"end_character":43},"updated":"2016-05-17 03:28:13.000000000","message":"s/Bac,upPlan/BackupPlan","commit_id":"72c8405023c34eae1b4339c1f16be8188952e263"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"e970cd1a6e7620bccfabf48ae1f6e6088a30aa63","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"1. Smaug **Operation Engine**"},{"line_number":102,"context_line":"------------------------------"},{"line_number":103,"context_line":"who is responsible for triggering operation according to time schedule or"},{"line_number":104,"context_line":"events, will call RPC call of Protection Service:"},{"line_number":105,"context_line":"execute_operation(backup_plan:Bac,upPlan, action:Action);"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"2. ProtectionManager"},{"line_number":108,"context_line":"------------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dab17558_1624d50a","line":105,"range":{"start_line":103,"start_character":0,"end_line":105,"end_character":57},"updated":"2016-05-18 01:20:02.000000000","message":"Operation Engine does not call the RPC of Protection Service to execute the operation, but call the rest API.","commit_id":"a06f7d9ac6eefc4463216fb18ff0d6e8e2797a1d"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"d45be10d4f57245d3b806ed10583837a1ecb9f7c","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"1. Smaug **Operation Engine**"},{"line_number":102,"context_line":"------------------------------"},{"line_number":103,"context_line":"who is responsible for triggering operation according to time schedule or"},{"line_number":104,"context_line":"events, will call RPC call of Protection Service:"},{"line_number":105,"context_line":"execute_operation(backup_plan:Bac,upPlan, action:Action);"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"2. ProtectionManager"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_fe3406fc","line":104,"range":{"start_line":103,"start_character":1,"end_line":104,"end_character":49},"updated":"2016-05-19 08:22:33.000000000","message":"It is responsible for the automatic operation,\nCurrently we only support schedule operation but we plan to add retention operation teiring ......","commit_id":"0486ada7d7aa50a950f6c85b0a5a6e6caa722749"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"f29d28ed930009182390de573df44fa2354f47a3","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"1. Smaug **Operation Engine**"},{"line_number":102,"context_line":"------------------------------"},{"line_number":103,"context_line":"who is responsible for triggering operation according to time schedule or"},{"line_number":104,"context_line":"events, will call RPC call of Protection Service:"},{"line_number":105,"context_line":"execute_operation(backup_plan:Bac,upPlan, action:Action);"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"2. ProtectionManager"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_ef3babe9","line":104,"range":{"start_line":103,"start_character":1,"end_line":104,"end_character":49},"in_reply_to":"bab6814e_fe3406fc","updated":"2016-05-19 11:52:59.000000000","message":"will handle both Eran\u0027s and Chenzeng\u0027s comments about OperationEngine in another patch","commit_id":"0486ada7d7aa50a950f6c85b0a5a6e6caa722749"}]}
