)]}'
{"doc/source/architecture.rst":[{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"cf271fe3dc954433bda4a83d6761108ec87426bf","unresolved":false,"context_lines":[{"line_number":236,"context_line":"   :width: 100%"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"The `Watcher API`_  makes sure that both the specified goal (mandatory) and"},{"line_number":239,"context_line":"strategy (optional) are registered inside the :ref:`Watcher Database"},{"line_number":240,"context_line":"\u003cwatcher_database_definition\u003e` before storing a new audit template in the"},{"line_number":241,"context_line":":ref:`Watcher Database \u003cwatcher_database_definition\u003e`."},{"line_number":242,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_df1eef0a","line":239,"range":{"start_line":239,"start_character":0,"end_line":239,"end_character":8},"updated":"2016-03-31 18:15:15.000000000","message":"nit: its associated strategy","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"5888ca3c9ee7e0c1cdb8729da71d44f4be207a74","unresolved":false,"context_lines":[{"line_number":236,"context_line":"   :width: 100%"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"The `Watcher API`_  makes sure that both the specified goal (mandatory) and"},{"line_number":239,"context_line":"strategy (optional) are registered inside the :ref:`Watcher Database"},{"line_number":240,"context_line":"\u003cwatcher_database_definition\u003e` before storing a new audit template in the"},{"line_number":241,"context_line":":ref:`Watcher Database \u003cwatcher_database_definition\u003e`."},{"line_number":242,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a18252c_9b238a05","line":239,"range":{"start_line":239,"start_character":0,"end_line":239,"end_character":8},"in_reply_to":"ba0121b8_df1eef0a","updated":"2016-04-12 16:25:40.000000000","message":"Done","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"7801eb2d8b44ea7a66af90c94086b35b814c135c","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    which provides information about the past of the"},{"line_number":198,"context_line":"    :ref:`Cluster \u003ccluster_definition\u003e`"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"So far, only one :ref:`Strategy \u003cstrategy_definition\u003e` can be associated to a"},{"line_number":201,"context_line":"given :ref:`Goal \u003cgoal_definition\u003e` via the main Watcher configuration file."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":".. _data_model:"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_62a2b59a","line":201,"range":{"start_line":200,"start_character":0,"end_line":201,"end_character":76},"updated":"2016-04-20 09:52:42.000000000","message":"to remove","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0eaa373d5e227e8380dc833897502e6a311d6361","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    which provides information about the past of the"},{"line_number":198,"context_line":"    :ref:`Cluster \u003ccluster_definition\u003e`"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"So far, only one :ref:`Strategy \u003cstrategy_definition\u003e` can be associated to a"},{"line_number":201,"context_line":"given :ref:`Goal \u003cgoal_definition\u003e` via the main Watcher configuration file."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":".. _data_model:"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_1af7d959","line":201,"range":{"start_line":200,"start_character":0,"end_line":201,"end_character":76},"in_reply_to":"1a122d0e_62a2b59a","updated":"2016-04-20 13:37:44.000000000","message":"Done","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"7801eb2d8b44ea7a66af90c94086b35b814c135c","unresolved":false,"context_lines":[{"line_number":230,"context_line":"following parameters:"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"-   A name"},{"line_number":233,"context_line":"-   A goal to achieve"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":".. image:: ./images/sequence_create_audit_template.png"},{"line_number":236,"context_line":"   :width: 100%"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_62dc7573","line":233,"updated":"2016-04-20 09:52:42.000000000","message":"- An optional strategy","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0eaa373d5e227e8380dc833897502e6a311d6361","unresolved":false,"context_lines":[{"line_number":230,"context_line":"following parameters:"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"-   A name"},{"line_number":233,"context_line":"-   A goal to achieve"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":".. image:: ./images/sequence_create_audit_template.png"},{"line_number":236,"context_line":"   :width: 100%"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_9aa12949","line":233,"in_reply_to":"1a122d0e_62dc7573","updated":"2016-04-20 13:37:44.000000000","message":"Done","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"7801eb2d8b44ea7a66af90c94086b35b814c135c","unresolved":false,"context_lines":[{"line_number":239,"context_line":"its associated strategy (optional) are registered inside the :ref:`Watcher"},{"line_number":240,"context_line":"Database \u003cwatcher_database_definition\u003e` before storing a new audit template in"},{"line_number":241,"context_line":"the :ref:`Watcher Database \u003cwatcher_database_definition\u003e`."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":".. _sequence_diagrams_create_and_launch_audit:"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Create and launch a new Audit"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_22aefd97","line":242,"updated":"2016-04-20 09:52:42.000000000","message":"What happens when several strategies implement a same goal, if we do not set the optional strategy parameter ?","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0eaa373d5e227e8380dc833897502e6a311d6361","unresolved":false,"context_lines":[{"line_number":239,"context_line":"its associated strategy (optional) are registered inside the :ref:`Watcher"},{"line_number":240,"context_line":"Database \u003cwatcher_database_definition\u003e` before storing a new audit template in"},{"line_number":241,"context_line":"the :ref:`Watcher Database \u003cwatcher_database_definition\u003e`."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":".. _sequence_diagrams_create_and_launch_audit:"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Create and launch a new Audit"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_053e5ec0","line":242,"in_reply_to":"1a122d0e_22aefd97","updated":"2016-04-20 13:37:44.000000000","message":"Done (Added in the block line 266)","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"}],"doc/source/deploy/configuration.rst":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"7801eb2d8b44ea7a66af90c94086b35b814c135c","unresolved":false,"context_lines":[{"line_number":182,"context_line":"* ``[watcher_clients_auth]`` - Keystone auth configuration for clients"},{"line_number":183,"context_line":"* ``[watcher_applier]`` - Watcher Applier module configuration"},{"line_number":184,"context_line":"* ``[watcher_decision_engine]`` - Watcher Decision Engine module configuration"},{"line_number":185,"context_line":"* ``[watcher_strategies]`` - Strategy configuration"},{"line_number":186,"context_line":"* ``[oslo_messaging_rabbit]`` - Oslo Messaging RabbitMQ driver configuration"},{"line_number":187,"context_line":"* ``[ceilometer_client]`` - Ceilometer client configuration"},{"line_number":188,"context_line":"* ``[cinder_client]`` - Cinder client configuration"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_8256f159","line":185,"range":{"start_line":185,"start_character":0,"end_line":185,"end_character":51},"updated":"2016-04-20 09:52:42.000000000","message":"to remove also","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0eaa373d5e227e8380dc833897502e6a311d6361","unresolved":false,"context_lines":[{"line_number":182,"context_line":"* ``[watcher_clients_auth]`` - Keystone auth configuration for clients"},{"line_number":183,"context_line":"* ``[watcher_applier]`` - Watcher Applier module configuration"},{"line_number":184,"context_line":"* ``[watcher_decision_engine]`` - Watcher Decision Engine module configuration"},{"line_number":185,"context_line":"* ``[watcher_strategies]`` - Strategy configuration"},{"line_number":186,"context_line":"* ``[oslo_messaging_rabbit]`` - Oslo Messaging RabbitMQ driver configuration"},{"line_number":187,"context_line":"* ``[ceilometer_client]`` - Ceilometer client configuration"},{"line_number":188,"context_line":"* ``[cinder_client]`` - Cinder client configuration"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_454b3659","line":185,"range":{"start_line":185,"start_character":0,"end_line":185,"end_character":51},"in_reply_to":"1a122d0e_8256f159","updated":"2016-04-20 13:37:44.000000000","message":"Done","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"}],"doc/source/deploy/user-guide.rst":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"7801eb2d8b44ea7a66af90c94086b35b814c135c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"-------------------------------------"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"First, you need to find the :ref:`goal \u003cgoal_definition\u003e` you want to achieve:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":".. code:: bash"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"  $ watcher goal-list"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_42105959","line":60,"updated":"2016-04-20 09:52:42.000000000","message":"Please introduce also optional strategy parameter. When we have several strategies targeting a same goal, we can choice one strategy by setting this parameter. In other case, the first loaded strategy will be apply ?\n\nwatcher strategy-list","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0eaa373d5e227e8380dc833897502e6a311d6361","unresolved":false,"context_lines":[{"line_number":57,"context_line":"-------------------------------------"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"First, you need to find the :ref:`goal \u003cgoal_definition\u003e` you want to achieve:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":".. code:: bash"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"  $ watcher goal-list"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_e5c88257","line":60,"in_reply_to":"1a122d0e_42105959","updated":"2016-04-20 13:37:44.000000000","message":"Done","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"}],"doc/source/dev/plugin/strategy-plugin.rst":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e6725a5909889e57e8089f2dec1d9539df8fe82","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"First of all you have to:"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"- If you need to add a new goal, extend :py:class:`~.BaseStrategy` to make a"},{"line_number":35,"context_line":"  goal-oriented strategy abstract class:"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_goal_id` class method to return"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_02ae5597","line":34,"range":{"start_line":34,"start_character":14,"end_line":34,"end_character":20},"updated":"2016-03-31 16:16:08.000000000","message":"to achieve","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"5888ca3c9ee7e0c1cdb8729da71d44f4be207a74","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"First of all you have to:"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"- If you need to add a new goal, extend :py:class:`~.BaseStrategy` to make a"},{"line_number":35,"context_line":"  goal-oriented strategy abstract class:"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_goal_id` class method to return"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a18252c_5b88d2e7","line":34,"range":{"start_line":34,"start_character":14,"end_line":34,"end_character":20},"in_reply_to":"ba0121b8_02ae5597","updated":"2016-04-12 16:25:40.000000000","message":"Done","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e6725a5909889e57e8089f2dec1d9539df8fe82","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  goal-oriented strategy abstract class:"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_goal_id` class method to return"},{"line_number":38,"context_line":"    the **unique** ID of the goal you want to create."},{"line_number":39,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_goal_display_name` class method"},{"line_number":40,"context_line":"    to return the translated display name of the goal you want to create. Note:"},{"line_number":41,"context_line":"    Do not use a variable to return the translated string so it can be"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_a274c935","line":38,"range":{"start_line":38,"start_character":46,"end_line":38,"end_character":52},"updated":"2016-03-31 16:16:08.000000000","message":"achieve","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"5888ca3c9ee7e0c1cdb8729da71d44f4be207a74","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  goal-oriented strategy abstract class:"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_goal_id` class method to return"},{"line_number":38,"context_line":"    the **unique** ID of the goal you want to create."},{"line_number":39,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_goal_display_name` class method"},{"line_number":40,"context_line":"    to return the translated display name of the goal you want to create. Note:"},{"line_number":41,"context_line":"    Do not use a variable to return the translated string so it can be"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a18252c_1b65ba44","line":38,"range":{"start_line":38,"start_character":46,"end_line":38,"end_character":52},"in_reply_to":"ba0121b8_a274c935","updated":"2016-04-12 16:25:40.000000000","message":"Done","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e6725a5909889e57e8089f2dec1d9539df8fe82","unresolved":false,"context_lines":[{"line_number":37,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_goal_id` class method to return"},{"line_number":38,"context_line":"    the **unique** ID of the goal you want to create."},{"line_number":39,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_goal_display_name` class method"},{"line_number":40,"context_line":"    to return the translated display name of the goal you want to create. Note:"},{"line_number":41,"context_line":"    Do not use a variable to return the translated string so it can be"},{"line_number":42,"context_line":"    automatically collected by the translation tool."},{"line_number":43,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_translatable_goal_display_name`"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_42a20d9a","line":40,"range":{"start_line":40,"start_character":66,"end_line":40,"end_character":72},"updated":"2016-03-31 16:16:08.000000000","message":"ditto","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"5888ca3c9ee7e0c1cdb8729da71d44f4be207a74","unresolved":false,"context_lines":[{"line_number":37,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_goal_id` class method to return"},{"line_number":38,"context_line":"    the **unique** ID of the goal you want to create."},{"line_number":39,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_goal_display_name` class method"},{"line_number":40,"context_line":"    to return the translated display name of the goal you want to create. Note:"},{"line_number":41,"context_line":"    Do not use a variable to return the translated string so it can be"},{"line_number":42,"context_line":"    automatically collected by the translation tool."},{"line_number":43,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_translatable_goal_display_name`"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a18252c_7b5aee84","line":40,"range":{"start_line":40,"start_character":66,"end_line":40,"end_character":72},"in_reply_to":"ba0121b8_42a20d9a","updated":"2016-04-12 16:25:40.000000000","message":"Done","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"cf271fe3dc954433bda4a83d6761108ec87426bf","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_id` class method to return the"},{"line_number":51,"context_line":"    **unique** ID of the strategy you want to create. This unique ID should be"},{"line_number":52,"context_line":"    the same as the name of the entry point we will declare later on."},{"line_number":53,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_display_name` class method to"},{"line_number":54,"context_line":"    return the translated display name of the goal you want to create. Note:"},{"line_number":55,"context_line":"    Do not use a variable to return the translated string so it can be"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_0ab30751","line":52,"range":{"start_line":52,"start_character":28,"end_line":52,"end_character":68},"updated":"2016-03-31 18:15:15.000000000","message":"can we reference the section here?","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"5888ca3c9ee7e0c1cdb8729da71d44f4be207a74","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_id` class method to return the"},{"line_number":51,"context_line":"    **unique** ID of the strategy you want to create. This unique ID should be"},{"line_number":52,"context_line":"    the same as the name of the entry point we will declare later on."},{"line_number":53,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_display_name` class method to"},{"line_number":54,"context_line":"    return the translated display name of the goal you want to create. Note:"},{"line_number":55,"context_line":"    Do not use a variable to return the translated string so it can be"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a18252c_9bad4a34","line":52,"range":{"start_line":52,"start_character":28,"end_line":52,"end_character":68},"in_reply_to":"ba0121b8_0ab30751","updated":"2016-04-12 16:25:40.000000000","message":"Done","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e6725a5909889e57e8089f2dec1d9539df8fe82","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    **unique** ID of the strategy you want to create. This unique ID should be"},{"line_number":52,"context_line":"    the same as the name of the entry point we will declare later on."},{"line_number":53,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_display_name` class method to"},{"line_number":54,"context_line":"    return the translated display name of the goal you want to create. Note:"},{"line_number":55,"context_line":"    Do not use a variable to return the translated string so it can be"},{"line_number":56,"context_line":"    automatically collected by the translation tool."},{"line_number":57,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_translatable_display_name`"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_62fab176","line":54,"range":{"start_line":54,"start_character":46,"end_line":54,"end_character":50},"updated":"2016-03-31 16:16:08.000000000","message":"s/goal/strategy","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"5888ca3c9ee7e0c1cdb8729da71d44f4be207a74","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    **unique** ID of the strategy you want to create. This unique ID should be"},{"line_number":52,"context_line":"    the same as the name of the entry point we will declare later on."},{"line_number":53,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_display_name` class method to"},{"line_number":54,"context_line":"    return the translated display name of the goal you want to create. Note:"},{"line_number":55,"context_line":"    Do not use a variable to return the translated string so it can be"},{"line_number":56,"context_line":"    automatically collected by the translation tool."},{"line_number":57,"context_line":"  * Implement its :py:meth:`~.BaseStrategy.get_translatable_display_name`"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a18252c_7b6dce03","line":54,"range":{"start_line":54,"start_character":46,"end_line":54,"end_character":50},"in_reply_to":"ba0121b8_62fab176","updated":"2016-04-12 16:25:40.000000000","message":"Done","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"cf271fe3dc954433bda4a83d6761108ec87426bf","unresolved":false,"context_lines":[{"line_number":116,"context_line":"method returns a :py:class:`~.BaseSolution` instance as required. This solution"},{"line_number":117,"context_line":"is what wraps the abstract set of actions the strategy recommends to you. This"},{"line_number":118,"context_line":"solution is then processed by a :ref:`planner \u003cplanner_definition\u003e` to produce"},{"line_number":119,"context_line":"an action plan which shall contain the sequenced flow of actions to be"},{"line_number":120,"context_line":"executed by the :ref:`Watcher Applier \u003cwatcher_applier_definition\u003e`."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Please note that your strategy class will be instantiated without any"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_8a66f727","line":119,"range":{"start_line":119,"start_character":21,"end_line":119,"end_character":34},"updated":"2016-03-31 18:15:15.000000000","message":"nit: contains","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"5888ca3c9ee7e0c1cdb8729da71d44f4be207a74","unresolved":false,"context_lines":[{"line_number":116,"context_line":"method returns a :py:class:`~.BaseSolution` instance as required. This solution"},{"line_number":117,"context_line":"is what wraps the abstract set of actions the strategy recommends to you. This"},{"line_number":118,"context_line":"solution is then processed by a :ref:`planner \u003cplanner_definition\u003e` to produce"},{"line_number":119,"context_line":"an action plan which shall contain the sequenced flow of actions to be"},{"line_number":120,"context_line":"executed by the :ref:`Watcher Applier \u003cwatcher_applier_definition\u003e`."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Please note that your strategy class will be instantiated without any"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a18252c_7b44ae73","line":119,"range":{"start_line":119,"start_character":21,"end_line":119,"end_character":34},"in_reply_to":"ba0121b8_8a66f727","updated":"2016-04-12 16:25:40.000000000","message":"Done","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e6725a5909889e57e8089f2dec1d9539df8fe82","unresolved":false,"context_lines":[{"line_number":169,"context_line":"make that plugin available for use."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"At this point, Watcher will scan and register inside the :ref:`Watcher Database"},{"line_number":172,"context_line":"\u003cwatcher_database_definition\u003e` all the new goals or strategies you"},{"line_number":173,"context_line":"implemented upon restarting the :ref:`Watcher Decision Engine"},{"line_number":174,"context_line":"\u003cwatcher_decision_engine_definition\u003e`."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_e296c1ee","line":172,"range":{"start_line":172,"start_character":35,"end_line":172,"end_character":62},"updated":"2016-03-31 16:16:08.000000000","message":"the strategies (and the goal they should satisfy)","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"5888ca3c9ee7e0c1cdb8729da71d44f4be207a74","unresolved":false,"context_lines":[{"line_number":169,"context_line":"make that plugin available for use."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"At this point, Watcher will scan and register inside the :ref:`Watcher Database"},{"line_number":172,"context_line":"\u003cwatcher_database_definition\u003e` all the new goals or strategies you"},{"line_number":173,"context_line":"implemented upon restarting the :ref:`Watcher Decision Engine"},{"line_number":174,"context_line":"\u003cwatcher_decision_engine_definition\u003e`."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a18252c_96a52106","line":172,"range":{"start_line":172,"start_character":35,"end_line":172,"end_character":62},"in_reply_to":"ba0121b8_8529c88c","updated":"2016-04-12 16:25:40.000000000","message":"At the moment, it will keep the old goal inside the DB as some audit templates may be referencing it.","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"5888ca3c9ee7e0c1cdb8729da71d44f4be207a74","unresolved":false,"context_lines":[{"line_number":169,"context_line":"make that plugin available for use."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"At this point, Watcher will scan and register inside the :ref:`Watcher Database"},{"line_number":172,"context_line":"\u003cwatcher_database_definition\u003e` all the new goals or strategies you"},{"line_number":173,"context_line":"implemented upon restarting the :ref:`Watcher Decision Engine"},{"line_number":174,"context_line":"\u003cwatcher_decision_engine_definition\u003e`."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a18252c_f61a956d","line":172,"range":{"start_line":172,"start_character":35,"end_line":172,"end_character":62},"in_reply_to":"ba0121b8_e296c1ee","updated":"2016-04-12 16:25:40.000000000","message":"Done","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"cf271fe3dc954433bda4a83d6761108ec87426bf","unresolved":false,"context_lines":[{"line_number":169,"context_line":"make that plugin available for use."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"At this point, Watcher will scan and register inside the :ref:`Watcher Database"},{"line_number":172,"context_line":"\u003cwatcher_database_definition\u003e` all the new goals or strategies you"},{"line_number":173,"context_line":"implemented upon restarting the :ref:`Watcher Decision Engine"},{"line_number":174,"context_line":"\u003cwatcher_decision_engine_definition\u003e`."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_8529c88c","line":172,"range":{"start_line":172,"start_character":35,"end_line":172,"end_character":62},"in_reply_to":"ba0121b8_e296c1ee","updated":"2016-03-31 18:15:15.000000000","message":"What happen if you take a goal or a strategy out? is the database cleaned up? or do we just keep it","commit_id":"5c29766849c53d4d71bb574bbd6f64e969fa8483"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"7801eb2d8b44ea7a66af90c94086b35b814c135c","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Before using any strategy, you should make sure you have your Telemetry service"},{"line_number":25,"context_line":"configured so that it would provide you all the metrics you need to be able to"},{"line_number":26,"context_line":"use your strategy."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Creating a new plugin"},{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\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":6,"id":"1a122d0e_a5fe97ab","line":27,"updated":"2016-04-20 09:52:42.000000000","message":"IMHO, maybe add lines about how to create a new plugin project, independent from Watcher project.","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0eaa373d5e227e8380dc833897502e6a311d6361","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Before using any strategy, you should make sure you have your Telemetry service"},{"line_number":25,"context_line":"configured so that it would provide you all the metrics you need to be able to"},{"line_number":26,"context_line":"use your strategy."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Creating a new plugin"},{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\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":6,"id":"1a122d0e_00176c48","line":27,"in_reply_to":"1a122d0e_a5fe97ab","updated":"2016-04-20 13:37:44.000000000","message":"Done","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"f2268b749f31f9f71d92ef6f513e76e7a6f95294","unresolved":false,"context_lines":[{"line_number":101,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"As stated before, the ``NewStrategy`` class extends a class called"},{"line_number":104,"context_line":":py:class:`~.UnclassifiedStrategy`. This class actually implements some of the"},{"line_number":105,"context_line":"abstract methods a set abstract methods which are defined within the"},{"line_number":106,"context_line":":py:class:`~.BaseStrategy` parent class."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Once you are confident in your strategy plugin, the next step is now to"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_cee757aa","line":105,"range":{"start_line":104,"start_character":67,"end_line":105,"end_character":16},"updated":"2016-05-11 08:32:30.000000000","message":"implements some of the abstracts methods / implements a set of abstract methods which","commit_id":"dde4bb5449136bd8641d2a393a0573902d6ac570"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"6a74e62840ab5fab1a5eb825766925daaab672d7","unresolved":false,"context_lines":[{"line_number":101,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"As stated before, the ``NewStrategy`` class extends a class called"},{"line_number":104,"context_line":":py:class:`~.UnclassifiedStrategy`. This class actually implements some of the"},{"line_number":105,"context_line":"abstract methods a set abstract methods which are defined within the"},{"line_number":106,"context_line":":py:class:`~.BaseStrategy` parent class."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Once you are confident in your strategy plugin, the next step is now to"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_73b9e5cb","line":105,"range":{"start_line":104,"start_character":67,"end_line":105,"end_character":16},"in_reply_to":"dab17558_cee757aa","updated":"2016-05-11 13:42:42.000000000","message":"Done","commit_id":"dde4bb5449136bd8641d2a393a0573902d6ac570"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"f2268b749f31f9f71d92ef6f513e76e7a6f95294","unresolved":false,"context_lines":[{"line_number":116,"context_line":"- :py:class:`~.ServerConsolidationBaseStrategy`"},{"line_number":117,"context_line":"- :py:class:`~.ThermalOptimizationBaseStrategy`"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"If none of the above actually correspond to goal your new strategy achieves,"},{"line_number":120,"context_line":"you can define a brand new one. To do so, you need to:"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"- Extend the :py:class:`~.BaseStrategy` class to make your new goal-oriented"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_6e9bcb18","line":119,"range":{"start_line":119,"start_character":41,"end_line":119,"end_character":48},"updated":"2016-05-11 08:32:30.000000000","message":"to goal / to the goal","commit_id":"dde4bb5449136bd8641d2a393a0573902d6ac570"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"6a74e62840ab5fab1a5eb825766925daaab672d7","unresolved":false,"context_lines":[{"line_number":116,"context_line":"- :py:class:`~.ServerConsolidationBaseStrategy`"},{"line_number":117,"context_line":"- :py:class:`~.ThermalOptimizationBaseStrategy`"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"If none of the above actually correspond to goal your new strategy achieves,"},{"line_number":120,"context_line":"you can define a brand new one. To do so, you need to:"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"- Extend the :py:class:`~.BaseStrategy` class to make your new goal-oriented"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_937e0968","line":119,"range":{"start_line":119,"start_character":41,"end_line":119,"end_character":48},"in_reply_to":"dab17558_6e9bcb18","updated":"2016-05-11 13:42:42.000000000","message":"Done","commit_id":"dde4bb5449136bd8641d2a393a0573902d6ac570"}],"doc/source/image_src/plantuml/sequence_create_audit_template.txt":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"7801eb2d8b44ea7a66af90c94086b35b814c135c","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"actor Administrator"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Administrator -\u003e \"Watcher CLI\" : watcher audit-template-create \u003cname\u003e \u003cgoal\u003e"},{"line_number":6,"context_line":"\"Watcher CLI\" -\u003e \"Watcher API\" : POST audit_template(parameters)"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"\"Watcher API\" -\u003e \"Watcher Database\" : Request if goal exists in database"}],"source_content_type":"text/plain","patch_set":6,"id":"1a122d0e_25ea87ac","line":5,"updated":"2016-04-20 09:52:42.000000000","message":"\u003c[strategy]\u003e","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0eaa373d5e227e8380dc833897502e6a311d6361","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"actor Administrator"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Administrator -\u003e \"Watcher CLI\" : watcher audit-template-create \u003cname\u003e \u003cgoal\u003e"},{"line_number":6,"context_line":"\"Watcher CLI\" -\u003e \"Watcher API\" : POST audit_template(parameters)"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"\"Watcher API\" -\u003e \"Watcher Database\" : Request if goal exists in database"}],"source_content_type":"text/plain","patch_set":6,"id":"1a122d0e_e0c23084","line":5,"in_reply_to":"1a122d0e_25ea87ac","updated":"2016-04-20 13:37:44.000000000","message":"Done","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"}],"watcher/api/controllers/v1/strategy.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"7801eb2d8b44ea7a66af90c94086b35b814c135c","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Some strategies may provide better optimization results but may take more time"},{"line_number":27,"context_line":"to find an optimal :ref:`Solution \u003csolution_definition\u003e`."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"When a new :ref:`Goal \u003cgoal_definition\u003e` is added to the Watcher configuration,"},{"line_number":30,"context_line":"at least one default associated :ref:`Strategy \u003cstrategy_definition\u003e` should be"},{"line_number":31,"context_line":"provided as well."},{"line_number":32,"context_line":"\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_65a2bf9a","line":31,"range":{"start_line":28,"start_character":0,"end_line":31,"end_character":17},"updated":"2016-04-20 09:52:42.000000000","message":"to remove.","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0eaa373d5e227e8380dc833897502e6a311d6361","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Some strategies may provide better optimization results but may take more time"},{"line_number":27,"context_line":"to find an optimal :ref:`Solution \u003csolution_definition\u003e`."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"When a new :ref:`Goal \u003cgoal_definition\u003e` is added to the Watcher configuration,"},{"line_number":30,"context_line":"at least one default associated :ref:`Strategy \u003cstrategy_definition\u003e` should be"},{"line_number":31,"context_line":"provided as well."},{"line_number":32,"context_line":"\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_80089cdb","line":31,"range":{"start_line":28,"start_character":0,"end_line":31,"end_character":17},"in_reply_to":"1a122d0e_65a2bf9a","updated":"2016-04-20 13:37:44.000000000","message":"Done","commit_id":"9d54c288474da8b0134ff4bc88df84a6be29b86c"}]}
