)]}'
{"doc/source/dev/plugin/base-setup.rst":[{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"bd754bb3f51c29402425b5bfa87ae9f84dd3f4f3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Create a third-party plugin for Watcher"},{"line_number":11,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Watcher provides a modular architecture which allows anyone to extend the"},{"line_number":14,"context_line":"existing functionalities by implementing third-party plugins. This process can"},{"line_number":15,"context_line":"be cumbersome so this documentation is there to help you get going as quickly"},{"line_number":16,"context_line":"as possible."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_c5f34c9d","line":13,"range":{"start_line":13,"start_character":17,"end_line":13,"end_character":39},"updated":"2016-03-02 07:48:59.000000000","message":"We could provide a link to the Watcher architecture page :\nhttps://factory.b-com.com/www/watcher/doc/watcher/architecture.html","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"10d17a2e6e58ed13aa6b1861c59412e38c6bd284","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Create a third-party plugin for Watcher"},{"line_number":11,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Watcher provides a modular architecture which allows anyone to extend the"},{"line_number":14,"context_line":"existing functionalities by implementing third-party plugins. This process can"},{"line_number":15,"context_line":"be cumbersome so this documentation is there to help you get going as quickly"},{"line_number":16,"context_line":"as possible."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_4bfe0638","line":13,"range":{"start_line":13,"start_character":17,"end_line":13,"end_character":39},"in_reply_to":"7af24918_c5f34c9d","updated":"2016-03-02 17:34:15.000000000","message":"By modular here, I meant that we can plug external plugins. So I\u0027ll reword it as \"plugin architecture\". Not sure we would need the link with this change","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"4d54a5c226330dc88e8dc9702415fd2c730c6170","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Pre-requisites"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"We assume that you have set up a working Watcher :ref:`development environment"},{"line_number":23,"context_line":"\u003cwatcher_developement_environment\u003e` . So if this not already the case, please"},{"line_number":24,"context_line":"check out our documentation which explain how to set up a"},{"line_number":25,"context_line":":ref:`development environment \u003cwatcher_developement_environment\u003e`."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_7da03a91","line":23,"range":{"start_line":22,"start_character":49,"end_line":23,"end_character":34},"updated":"2016-03-02 08:18:49.000000000","message":"IMO, no cross reference is required here. We have it in the next sentence.","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"10d17a2e6e58ed13aa6b1861c59412e38c6bd284","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Pre-requisites"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"We assume that you have set up a working Watcher :ref:`development environment"},{"line_number":23,"context_line":"\u003cwatcher_developement_environment\u003e` . So if this not already the case, please"},{"line_number":24,"context_line":"check out our documentation which explain how to set up a"},{"line_number":25,"context_line":":ref:`development environment \u003cwatcher_developement_environment\u003e`."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_0b223e52","line":23,"range":{"start_line":22,"start_character":49,"end_line":23,"end_character":34},"in_reply_to":"7af24918_7da03a91","updated":"2016-03-02 17:34:15.000000000","message":"Done","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"bd754bb3f51c29402425b5bfa87ae9f84dd3f4f3","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"We assume that you have set up a working Watcher :ref:`development environment"},{"line_number":23,"context_line":"\u003cwatcher_developement_environment\u003e` . So if this not already the case, please"},{"line_number":24,"context_line":"check out our documentation which explain how to set up a"},{"line_number":25,"context_line":":ref:`development environment \u003cwatcher_developement_environment\u003e`."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":".. _development environment:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_45361c53","line":24,"range":{"start_line":24,"start_character":34,"end_line":24,"end_character":41},"updated":"2016-03-02 07:48:59.000000000","message":"explains","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"10d17a2e6e58ed13aa6b1861c59412e38c6bd284","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"We assume that you have set up a working Watcher :ref:`development environment"},{"line_number":23,"context_line":"\u003cwatcher_developement_environment\u003e` . So if this not already the case, please"},{"line_number":24,"context_line":"check out our documentation which explain how to set up a"},{"line_number":25,"context_line":":ref:`development environment \u003cwatcher_developement_environment\u003e`."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":".. _development environment:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_eb1c3215","line":24,"range":{"start_line":24,"start_character":34,"end_line":24,"end_character":41},"in_reply_to":"7af24918_45361c53","updated":"2016-03-02 17:34:15.000000000","message":"Done","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"4d54a5c226330dc88e8dc9702415fd2c730c6170","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    $ pip install cookiecutter"},{"line_number":39,"context_line":"    $ cookiecutter https://github.com/openstack-dev/cookiecutter"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"The last command will ask you for many information, and I will ``thirdparty``"},{"line_number":42,"context_line":"as ``module_name`` and ``repo_name``. You should end up with a structure that"},{"line_number":43,"context_line":"looks like this::"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_1019f488","line":41,"range":{"start_line":41,"start_character":56,"end_line":41,"end_character":62},"updated":"2016-03-02 08:18:49.000000000","message":". If you set ...","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"10d17a2e6e58ed13aa6b1861c59412e38c6bd284","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    $ pip install cookiecutter"},{"line_number":39,"context_line":"    $ cookiecutter https://github.com/openstack-dev/cookiecutter"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"The last command will ask you for many information, and I will ``thirdparty``"},{"line_number":42,"context_line":"as ``module_name`` and ``repo_name``. You should end up with a structure that"},{"line_number":43,"context_line":"looks like this::"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_6bbae2c1","line":41,"range":{"start_line":41,"start_character":56,"end_line":41,"end_character":62},"in_reply_to":"7af24918_1019f488","updated":"2016-03-02 17:34:15.000000000","message":"Done","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"bd754bb3f51c29402425b5bfa87ae9f84dd3f4f3","unresolved":false,"context_lines":[{"line_number":78,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Now that the project skeleton has been created, you can start the"},{"line_number":81,"context_line":"implementation of you plugin. As of now, you can implement the following"},{"line_number":82,"context_line":"plugins for Watcher:"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"- A :ref:`strategy plugin \u003cimplement_strategy_plugin\u003e`"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_45845cd3","line":81,"range":{"start_line":81,"start_character":18,"end_line":81,"end_character":21},"updated":"2016-03-02 07:48:59.000000000","message":"your","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"10d17a2e6e58ed13aa6b1861c59412e38c6bd284","unresolved":false,"context_lines":[{"line_number":78,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Now that the project skeleton has been created, you can start the"},{"line_number":81,"context_line":"implementation of you plugin. As of now, you can implement the following"},{"line_number":82,"context_line":"plugins for Watcher:"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"- A :ref:`strategy plugin \u003cimplement_strategy_plugin\u003e`"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_ebc6f247","line":81,"range":{"start_line":81,"start_character":18,"end_line":81,"end_character":21},"in_reply_to":"7af24918_45845cd3","updated":"2016-03-02 17:34:15.000000000","message":"Done","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"}],"doc/source/dev/plugin/strategy-plugin.rst":[{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"bd754bb3f51c29402425b5bfa87ae9f84dd3f4f3","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            return self.solution"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"As you can see in the above example, the ``execute()`` method returns a"},{"line_number":58,"context_line":"solution as required."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Please note that your strategy class will be instantiated without any"},{"line_number":61,"context_line":"parameter. Therefore, you should make sure not to make any of them required in"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_e5cac819","line":58,"range":{"start_line":58,"start_character":0,"end_line":58,"end_character":8},"updated":"2016-03-02 07:48:59.000000000","message":"Should provide a link to the description in the glossary of what is a solution :\nhttps://factory.b-com.com/www/watcher/doc/watcher/glossary.html#solution","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"10d17a2e6e58ed13aa6b1861c59412e38c6bd284","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            return self.solution"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"As you can see in the above example, the ``execute()`` method returns a"},{"line_number":58,"context_line":"solution as required."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Please note that your strategy class will be instantiated without any"},{"line_number":61,"context_line":"parameter. Therefore, you should make sure not to make any of them required in"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_887131e3","line":58,"range":{"start_line":58,"start_character":0,"end_line":58,"end_character":8},"in_reply_to":"7af24918_e5cac819","updated":"2016-03-02 17:34:15.000000000","message":"This will be addressed in another PS (see https://review.openstack.org/#/c/281384/)","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"bd754bb3f51c29402425b5bfa87ae9f84dd3f4f3","unresolved":false,"context_lines":[{"line_number":103,"context_line":"Using strategy plugins"},{"line_number":104,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"The Watcher Decision Engine service will automatically discover any installed"},{"line_number":107,"context_line":"plugins when it is run. If a Python package containing a custom plugin is"},{"line_number":108,"context_line":"installed within the same environment as Watcher, Watcher will automatically"},{"line_number":109,"context_line":"make that plugin available for use."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_25ecb08e","line":106,"range":{"start_line":106,"start_character":4,"end_line":106,"end_character":27},"updated":"2016-03-02 07:48:59.000000000","message":"Should provide a link to https://factory.b-com.com/www/watcher/doc/watcher/architecture.html#watcher-decision-engine","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"10d17a2e6e58ed13aa6b1861c59412e38c6bd284","unresolved":false,"context_lines":[{"line_number":103,"context_line":"Using strategy plugins"},{"line_number":104,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"The Watcher Decision Engine service will automatically discover any installed"},{"line_number":107,"context_line":"plugins when it is run. If a Python package containing a custom plugin is"},{"line_number":108,"context_line":"installed within the same environment as Watcher, Watcher will automatically"},{"line_number":109,"context_line":"make that plugin available for use."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_684b0588","line":106,"range":{"start_line":106,"start_character":4,"end_line":106,"end_character":27},"in_reply_to":"7af24918_25ecb08e","updated":"2016-03-02 17:34:15.000000000","message":"ditto","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"bd754bb3f51c29402425b5bfa87ae9f84dd3f4f3","unresolved":false,"context_lines":[{"line_number":108,"context_line":"installed within the same environment as Watcher, Watcher will automatically"},{"line_number":109,"context_line":"make that plugin available for use."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"At this point, the way Watcher will use your new strategy if you reference it"},{"line_number":112,"context_line":"in the ``goals`` under the ``[watcher_goals]`` section of your ``watcher.conf``"},{"line_number":113,"context_line":"configuration file. For example, if you want to use a ``dummy`` strategy you"},{"line_number":114,"context_line":"just installed, you would have to associate it to a goal like this:"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":".. code-block:: ini"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_85b14492","line":113,"range":{"start_line":111,"start_character":0,"end_line":113,"end_character":18},"updated":"2016-03-02 07:48:59.000000000","message":"There is an issue in the structure of this sentence.","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"10d17a2e6e58ed13aa6b1861c59412e38c6bd284","unresolved":false,"context_lines":[{"line_number":108,"context_line":"installed within the same environment as Watcher, Watcher will automatically"},{"line_number":109,"context_line":"make that plugin available for use."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"At this point, the way Watcher will use your new strategy if you reference it"},{"line_number":112,"context_line":"in the ``goals`` under the ``[watcher_goals]`` section of your ``watcher.conf``"},{"line_number":113,"context_line":"configuration file. For example, if you want to use a ``dummy`` strategy you"},{"line_number":114,"context_line":"just installed, you would have to associate it to a goal like this:"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":".. code-block:: ini"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_e85f153f","line":113,"range":{"start_line":111,"start_character":0,"end_line":113,"end_character":18},"in_reply_to":"7af24918_85b14492","updated":"2016-03-02 17:34:15.000000000","message":"ditto","commit_id":"5cb25d3f5fc385461ee45dd86ae424e2621b8b9b"}]}
