)]}'
{"doc/source/architecture.rst":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e1c3ce99a5269cbfeb9eae5f5c80df8611edcac6","unresolved":false,"context_lines":[{"line_number":155,"context_line":"-  :ref:`Action plans \u003caction_plan_definition\u003e`"},{"line_number":156,"context_line":"-  :ref:`Actions \u003caction_definition\u003e`"},{"line_number":157,"context_line":"-  :ref:`Goals \u003cgoal_definition\u003e`"},{"line_number":158,"context_line":"-  :ref:`Strategies \u003cstrategy_definition\u003e`"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"The Watcher domain being here \"*optimization of some resources provided by an"},{"line_number":161,"context_line":"OpenStack system*\"."}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_587e876a","line":158,"range":{"start_line":158,"start_character":0,"end_line":158,"end_character":42},"updated":"2016-06-08 16:01:30.000000000","message":"please also add efficacy indicators","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b05f158b488e09e17987b830a7de19ef4a1ef0c1","unresolved":false,"context_lines":[{"line_number":155,"context_line":"-  :ref:`Action plans \u003caction_plan_definition\u003e`"},{"line_number":156,"context_line":"-  :ref:`Actions \u003caction_definition\u003e`"},{"line_number":157,"context_line":"-  :ref:`Goals \u003cgoal_definition\u003e`"},{"line_number":158,"context_line":"-  :ref:`Strategies \u003cstrategy_definition\u003e`"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"The Watcher domain being here \"*optimization of some resources provided by an"},{"line_number":161,"context_line":"OpenStack system*\"."}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_2ca5cf03","line":158,"range":{"start_line":158,"start_character":0,"end_line":158,"end_character":42},"in_reply_to":"7aa08908_587e876a","updated":"2016-06-10 15:08:49.000000000","message":"Done","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e1c3ce99a5269cbfeb9eae5f5c80df8611edcac6","unresolved":false,"context_lines":[{"line_number":207,"context_line":"functional dependency of objects from the actors (Admin, Customer) point of"},{"line_number":208,"context_line":"view (Goals, Audits, Action Plans, ...):"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":".. image:: ./images/functional_data_model.svg"},{"line_number":211,"context_line":"   :width: 100%"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"Here below is a diagram representing the main objects in Watcher from a"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_b8cdeb67","line":210,"range":{"start_line":210,"start_character":0,"end_line":210,"end_character":45},"updated":"2016-06-08 16:01:30.000000000","message":"I think this image should be also updated by adding efficacy indicators.","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b05f158b488e09e17987b830a7de19ef4a1ef0c1","unresolved":false,"context_lines":[{"line_number":207,"context_line":"functional dependency of objects from the actors (Admin, Customer) point of"},{"line_number":208,"context_line":"view (Goals, Audits, Action Plans, ...):"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":".. image:: ./images/functional_data_model.svg"},{"line_number":211,"context_line":"   :width: 100%"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"Here below is a diagram representing the main objects in Watcher from a"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_eca0e7a7","line":210,"range":{"start_line":210,"start_character":0,"end_line":210,"end_character":45},"in_reply_to":"7aa08908_b8cdeb67","updated":"2016-06-10 15:08:49.000000000","message":"Done","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e1c3ce99a5269cbfeb9eae5f5c80df8611edcac6","unresolved":false,"context_lines":[{"line_number":263,"context_line":"the Audit in the"},{"line_number":264,"context_line":":ref:`Watcher Decision Engine \u003cwatcher_decision_engine_definition\u003e`:"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":".. image:: ./images/sequence_trigger_audit_in_decision_engine.png"},{"line_number":267,"context_line":"   :width: 100%"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"The :ref:`Watcher Decision Engine \u003cwatcher_decision_engine_definition\u003e` reads"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_b805eb46","line":266,"range":{"start_line":266,"start_character":0,"end_line":266,"end_character":65},"updated":"2016-06-08 16:01:30.000000000","message":"I think this image should be also updated by adding efficacy indicators.","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b05f158b488e09e17987b830a7de19ef4a1ef0c1","unresolved":false,"context_lines":[{"line_number":263,"context_line":"the Audit in the"},{"line_number":264,"context_line":":ref:`Watcher Decision Engine \u003cwatcher_decision_engine_definition\u003e`:"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":".. image:: ./images/sequence_trigger_audit_in_decision_engine.png"},{"line_number":267,"context_line":"   :width: 100%"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"The :ref:`Watcher Decision Engine \u003cwatcher_decision_engine_definition\u003e` reads"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_b7dc5c19","line":266,"range":{"start_line":266,"start_character":0,"end_line":266,"end_character":65},"in_reply_to":"7aa08908_b805eb46","updated":"2016-06-10 15:08:49.000000000","message":"Done","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e1c3ce99a5269cbfeb9eae5f5c80df8611edcac6","unresolved":false,"context_lines":[{"line_number":282,"context_line":":ref:`Openstack cluster \u003ccluster_definition\u003e`."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"The :ref:`Watcher Decision Engine \u003cwatcher_decision_engine_definition\u003e` calls"},{"line_number":285,"context_line":"the **execute()** method of the instantiated"},{"line_number":286,"context_line":":ref:`Strategy \u003cstrategy_definition\u003e` and provides the data model as an input"},{"line_number":287,"context_line":"parameter. This method computes a :ref:`Solution \u003cstrategy_definition\u003e` to"},{"line_number":288,"context_line":"achieve the goal and returns it to the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_ad75abcb","line":285,"range":{"start_line":285,"start_character":0,"end_line":285,"end_character":24},"updated":"2016-06-08 16:01:30.000000000","message":"there are 3 methods now.","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b05f158b488e09e17987b830a7de19ef4a1ef0c1","unresolved":false,"context_lines":[{"line_number":282,"context_line":":ref:`Openstack cluster \u003ccluster_definition\u003e`."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"The :ref:`Watcher Decision Engine \u003cwatcher_decision_engine_definition\u003e` calls"},{"line_number":285,"context_line":"the **execute()** method of the instantiated"},{"line_number":286,"context_line":":ref:`Strategy \u003cstrategy_definition\u003e` and provides the data model as an input"},{"line_number":287,"context_line":"parameter. This method computes a :ref:`Solution \u003cstrategy_definition\u003e` to"},{"line_number":288,"context_line":"achieve the goal and returns it to the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_3754ec52","line":285,"range":{"start_line":285,"start_character":0,"end_line":285,"end_character":24},"in_reply_to":"7aa08908_ad75abcb","updated":"2016-06-10 15:08:49.000000000","message":"Actually, the execute() method is still the only method directly called by the decision engine although I agree that execute() is now calling pre_execute() do_execute() and post_execute(). It\u0027s just that I don\u0027t think we should get into too much details here.","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e1c3ce99a5269cbfeb9eae5f5c80df8611edcac6","unresolved":false,"context_lines":[{"line_number":299,"context_line":"It generates a new :ref:`Action Plan \u003caction_plan_definition\u003e` with status"},{"line_number":300,"context_line":"**RECOMMENDED** and saves it into the"},{"line_number":301,"context_line":":ref:`Watcher Database \u003cwatcher_database_definition\u003e`. The saved action plan is"},{"line_number":302,"context_line":"now a scheduled flow of actions."},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"If every step executed successfully, the"},{"line_number":305,"context_line":":ref:`Watcher Decision Engine \u003cwatcher_decision_engine_definition\u003e` updates"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_580b2724","line":302,"updated":"2016-06-08 16:01:30.000000000","message":"Please add information about efficacy indicators stored in Db.","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b05f158b488e09e17987b830a7de19ef4a1ef0c1","unresolved":false,"context_lines":[{"line_number":299,"context_line":"It generates a new :ref:`Action Plan \u003caction_plan_definition\u003e` with status"},{"line_number":300,"context_line":"**RECOMMENDED** and saves it into the"},{"line_number":301,"context_line":":ref:`Watcher Database \u003cwatcher_database_definition\u003e`. The saved action plan is"},{"line_number":302,"context_line":"now a scheduled flow of actions."},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"If every step executed successfully, the"},{"line_number":305,"context_line":":ref:`Watcher Decision Engine \u003cwatcher_decision_engine_definition\u003e` updates"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_7a4bfb59","line":302,"in_reply_to":"7aa08908_580b2724","updated":"2016-06-10 15:08:49.000000000","message":"Done","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"}],"doc/source/dev/plugin/goal-plugin.rst":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e1c3ce99a5269cbfeb9eae5f5c80df8611edcac6","unresolved":false,"context_lines":[{"line_number":7,"context_line":".. _implement_goal_plugin:"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":"Implement a new goal"},{"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"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Watcher Decision Engine has an external :ref:`goal \u003cgoal_definition\u003e`"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_d35c181b","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":9},"updated":"2016-06-08 16:01:30.000000000","message":"Build","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b05f158b488e09e17987b830a7de19ef4a1ef0c1","unresolved":false,"context_lines":[{"line_number":7,"context_line":".. _implement_goal_plugin:"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":"Implement a new goal"},{"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"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Watcher Decision Engine has an external :ref:`goal \u003cgoal_definition\u003e`"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_3a969394","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":9},"in_reply_to":"7aa08908_d35c181b","updated":"2016-06-10 15:08:49.000000000","message":"Done","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e1c3ce99a5269cbfeb9eae5f5c80df8611edcac6","unresolved":false,"context_lines":[{"line_number":38,"context_line":"- Extend the :py:class:`~.base.Goal` class."},{"line_number":39,"context_line":"- Implement its :py:meth:`~.Goal.get_name` class method to return the"},{"line_number":40,"context_line":"  **unique** ID of the new goal you want to create. This unique ID should"},{"line_number":41,"context_line":"  be the same as the name of :ref:`the entry point we will declare later on"},{"line_number":42,"context_line":"  \u003cgoal_plugin_add_entrypoint\u003e`."},{"line_number":43,"context_line":"- Implement its :py:meth:`~.Goal.get_display_name` class method to"},{"line_number":44,"context_line":"  return the translated display name of the goal you want to create."}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_b3750c65","line":41,"range":{"start_line":41,"start_character":51,"end_line":41,"end_character":53},"updated":"2016-06-08 16:01:30.000000000","message":"s/we/you","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b05f158b488e09e17987b830a7de19ef4a1ef0c1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"- Extend the :py:class:`~.base.Goal` class."},{"line_number":39,"context_line":"- Implement its :py:meth:`~.Goal.get_name` class method to return the"},{"line_number":40,"context_line":"  **unique** ID of the new goal you want to create. This unique ID should"},{"line_number":41,"context_line":"  be the same as the name of :ref:`the entry point we will declare later on"},{"line_number":42,"context_line":"  \u003cgoal_plugin_add_entrypoint\u003e`."},{"line_number":43,"context_line":"- Implement its :py:meth:`~.Goal.get_display_name` class method to"},{"line_number":44,"context_line":"  return the translated display name of the goal you want to create."}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_5a8b9f68","line":41,"range":{"start_line":41,"start_character":51,"end_line":41,"end_character":53},"in_reply_to":"7aa08908_b3750c65","updated":"2016-06-10 15:08:49.000000000","message":"Done","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e1c3ce99a5269cbfeb9eae5f5c80df8611edcac6","unresolved":false,"context_lines":[{"line_number":49,"context_line":"  name) of your new goal. The value return should be the same as the"},{"line_number":50,"context_line":"  string translated in :py:meth:`~.Goal.get_display_name`."},{"line_number":51,"context_line":"- Implement its :py:meth:`~.Goal.get_efficacy_specification` method to return"},{"line_number":52,"context_line":"  the efficacy specification for your goal."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Here is an example showing how you can define a new ``NewGoal`` goal plugin:"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_d399b87a","line":52,"range":{"start_line":52,"start_character":5,"end_line":52,"end_character":28},"updated":"2016-06-08 16:01:30.000000000","message":"You should add a link to glossary to redirect to the term definition","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b05f158b488e09e17987b830a7de19ef4a1ef0c1","unresolved":false,"context_lines":[{"line_number":49,"context_line":"  name) of your new goal. The value return should be the same as the"},{"line_number":50,"context_line":"  string translated in :py:meth:`~.Goal.get_display_name`."},{"line_number":51,"context_line":"- Implement its :py:meth:`~.Goal.get_efficacy_specification` method to return"},{"line_number":52,"context_line":"  the efficacy specification for your goal."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Here is an example showing how you can define a new ``NewGoal`` goal plugin:"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_c85a25f2","line":52,"range":{"start_line":52,"start_character":5,"end_line":52,"end_character":28},"in_reply_to":"7aa08908_d399b87a","updated":"2016-06-10 15:08:49.000000000","message":"Done","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e1c3ce99a5269cbfeb9eae5f5c80df8611edcac6","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    # import path: thirdparty.new"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    from watcher._i18n import _"},{"line_number":62,"context_line":"    from watcher.decision_engine.goal.efficacy import specs"},{"line_number":63,"context_line":"    from watcher.decision_engine.strategy.strategies import base"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    class NewGoal(base.Goal):"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_73af247d","line":62,"range":{"start_line":62,"start_character":9,"end_line":62,"end_character":46},"updated":"2016-06-08 16:01:30.000000000","message":"update the classpath, if you changed it in the previous the patchset https://review.openstack.org/#/c/318177/8","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b05f158b488e09e17987b830a7de19ef4a1ef0c1","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    # import path: thirdparty.new"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    from watcher._i18n import _"},{"line_number":62,"context_line":"    from watcher.decision_engine.goal.efficacy import specs"},{"line_number":63,"context_line":"    from watcher.decision_engine.strategy.strategies import base"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    class NewGoal(base.Goal):"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_48c3d557","line":62,"range":{"start_line":62,"start_character":9,"end_line":62,"end_character":46},"in_reply_to":"7aa08908_73af247d","updated":"2016-06-10 15:08:49.000000000","message":"Done","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e1c3ce99a5269cbfeb9eae5f5c80df8611edcac6","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The idea behind such specification is to give the administrator the possibility"},{"line_number":144,"context_line":"to run an audit using different strategies satisfying the same goal and be able"},{"line_number":145,"context_line":"to judge how they performed at a glance. This global efficacy can also reveal"},{"line_number":146,"context_line":"itself useful when it comes to selecting a strategy whenever the administrator"},{"line_number":147,"context_line":"only provided the goal to be achieved without actually knowing which strategy"},{"line_number":148,"context_line":"to use."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_de5c1f1b","line":148,"range":{"start_line":145,"start_character":41,"end_line":148,"end_character":7},"updated":"2016-06-08 16:01:30.000000000","message":"in the future :)","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b05f158b488e09e17987b830a7de19ef4a1ef0c1","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The idea behind such specification is to give the administrator the possibility"},{"line_number":144,"context_line":"to run an audit using different strategies satisfying the same goal and be able"},{"line_number":145,"context_line":"to judge how they performed at a glance. This global efficacy can also reveal"},{"line_number":146,"context_line":"itself useful when it comes to selecting a strategy whenever the administrator"},{"line_number":147,"context_line":"only provided the goal to be achieved without actually knowing which strategy"},{"line_number":148,"context_line":"to use."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_c8ad059d","line":148,"range":{"start_line":145,"start_character":41,"end_line":148,"end_character":7},"in_reply_to":"7aa08908_de5c1f1b","updated":"2016-06-10 15:08:49.000000000","message":"Removed","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"}],"etc/watcher/watcher-config-generator.conf":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2171262d00011457d8170e3ce03770fdef07152f","unresolved":false,"context_lines":[{"line_number":8,"context_line":"namespace \u003d oslo.concurrency"},{"line_number":9,"context_line":"namespace \u003d oslo.db"},{"line_number":10,"context_line":"namespace \u003d oslo.log"},{"line_number":11,"context_line":"namespace \u003d oslo.db"},{"line_number":12,"context_line":"namespace \u003d oslo.messaging"},{"line_number":13,"context_line":"namespace \u003d oslo.policy"},{"line_number":14,"context_line":"namespace \u003d oslo.reports"}],"source_content_type":"text/plain","patch_set":9,"id":"7aa08908_de3cf8e2","line":11,"range":{"start_line":11,"start_character":17,"end_line":11,"end_character":19},"updated":"2016-06-09 09:15:19.000000000","message":"duplicate entry","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b05f158b488e09e17987b830a7de19ef4a1ef0c1","unresolved":false,"context_lines":[{"line_number":8,"context_line":"namespace \u003d oslo.concurrency"},{"line_number":9,"context_line":"namespace \u003d oslo.db"},{"line_number":10,"context_line":"namespace \u003d oslo.log"},{"line_number":11,"context_line":"namespace \u003d oslo.db"},{"line_number":12,"context_line":"namespace \u003d oslo.messaging"},{"line_number":13,"context_line":"namespace \u003d oslo.policy"},{"line_number":14,"context_line":"namespace \u003d oslo.reports"}],"source_content_type":"text/plain","patch_set":9,"id":"7aa08908_a8b519d1","line":11,"range":{"start_line":11,"start_character":17,"end_line":11,"end_character":19},"in_reply_to":"7aa08908_de3cf8e2","updated":"2016-06-10 15:08:49.000000000","message":"Done","commit_id":"d24af8a9f864281cfe6cc379a8046fb3f1cc2f57"}]}
