)]}'
{"doc/source/dev/strategy-plugin.rst":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3f02537ff0f21c97610feb12d0a9af6cfdf1783c","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Watcher Decision Engine has an external :ref:`strategy \u003cstrategy_definition\u003e`"},{"line_number":12,"context_line":"plugin interface which gives anyone the ability to integrate an external"},{"line_number":13,"context_line":":ref:`strategy \u003cstrategy_definition\u003e` in order to make use of placement"},{"line_number":14,"context_line":"algorithms."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This section gives some guidelines on how to implement and integrate custom"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_a9a241ac","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":37},"updated":"2016-02-22 11:05:04.000000000","message":"IMH, remove the link here. it is done just one line before","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"51b3a8df12a468fe771f780c4d8836a1c56e9e5c","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Watcher Decision Engine has an external :ref:`strategy \u003cstrategy_definition\u003e`"},{"line_number":12,"context_line":"plugin interface which gives anyone the ability to integrate an external"},{"line_number":13,"context_line":":ref:`strategy \u003cstrategy_definition\u003e` in order to make use of placement"},{"line_number":14,"context_line":"algorithms."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This section gives some guidelines on how to implement and integrate custom"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_02267114","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":37},"in_reply_to":"bae84128_a9a241ac","updated":"2016-02-23 09:35:55.000000000","message":"Done","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3f02537ff0f21c97610feb12d0a9af6cfdf1783c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"algorithms."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This section gives some guidelines on how to implement and integrate custom"},{"line_number":17,"context_line":"Stategies with Watcher."},{"line_number":18,"context_line":""},{"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"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_6e315f05","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":9},"updated":"2016-02-22 11:05:04.000000000","message":"typo","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"51b3a8df12a468fe771f780c4d8836a1c56e9e5c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"algorithms."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This section gives some guidelines on how to implement and integrate custom"},{"line_number":17,"context_line":"Stategies with Watcher."},{"line_number":18,"context_line":""},{"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"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_621f7db7","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":9},"in_reply_to":"bae84128_6e315f05","updated":"2016-02-23 09:35:55.000000000","message":"Done","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3f02537ff0f21c97610feb12d0a9af6cfdf1783c","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":"Before using any strategy, you should make sure you have your Telemetry service"},{"line_number":23,"context_line":"configured so that it would provide you all the metrics you need to be able to"},{"line_number":24,"context_line":"use your strategy."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Creating a new plugin"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_2e0e373b","line":24,"range":{"start_line":22,"start_character":0,"end_line":24,"end_character":18},"updated":"2016-02-22 11:05:04.000000000","message":"Technically, is it mandatory ? I don\u0027t think so. It\u0027s more a facility offered by Watcher to have access to OpenStack metrics. You can implement a strategy based on randomize() ;)","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"51b3a8df12a468fe771f780c4d8836a1c56e9e5c","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":"Before using any strategy, you should make sure you have your Telemetry service"},{"line_number":23,"context_line":"configured so that it would provide you all the metrics you need to be able to"},{"line_number":24,"context_line":"use your strategy."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Creating a new plugin"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_0d92489e","line":24,"range":{"start_line":22,"start_character":0,"end_line":24,"end_character":18},"in_reply_to":"bae84128_2e0e373b","updated":"2016-02-23 09:35:55.000000000","message":"Theoretically, it\u0027s not mandatory and that\u0027s why I didn\u0027t say it was mandatory. But if you actually want to do something useful within your strategy, you will almost certainly need some metrics from Ceilometer. So I assumed the latter in that section.","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3f02537ff0f21c97610feb12d0a9af6cfdf1783c","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            migration_type \u003d \u0027live\u0027"},{"line_number":53,"context_line":"            src_hypervisor \u003d \u0027compute-host-1\u0027"},{"line_number":54,"context_line":"            dst_hypervisor \u003d \u0027compute-host-2\u0027"},{"line_number":55,"context_line":"            instance UUID \u003d uuid.uuid4()"},{"line_number":56,"context_line":"            parameters \u003d {\u0027migration_type\u0027: migration_type,"},{"line_number":57,"context_line":"                          \u0027src_hypervisor\u0027: src_hypervisor,"},{"line_number":58,"context_line":"                          \u0027dst_hypervisor\u0027: dst_hypervisor}"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_a9bb61e4","line":55,"range":{"start_line":55,"start_character":12,"end_line":55,"end_character":25},"updated":"2016-02-22 11:05:04.000000000","message":"instance_id","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"51b3a8df12a468fe771f780c4d8836a1c56e9e5c","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            migration_type \u003d \u0027live\u0027"},{"line_number":53,"context_line":"            src_hypervisor \u003d \u0027compute-host-1\u0027"},{"line_number":54,"context_line":"            dst_hypervisor \u003d \u0027compute-host-2\u0027"},{"line_number":55,"context_line":"            instance UUID \u003d uuid.uuid4()"},{"line_number":56,"context_line":"            parameters \u003d {\u0027migration_type\u0027: migration_type,"},{"line_number":57,"context_line":"                          \u0027src_hypervisor\u0027: src_hypervisor,"},{"line_number":58,"context_line":"                          \u0027dst_hypervisor\u0027: dst_hypervisor}"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_4d5f30e5","line":55,"range":{"start_line":55,"start_character":12,"end_line":55,"end_character":25},"in_reply_to":"bae84128_a9bb61e4","updated":"2016-02-23 09:35:55.000000000","message":"Done","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3f02537ff0f21c97610feb12d0a9af6cfdf1783c","unresolved":false,"context_lines":[{"line_number":66,"context_line":"method returns a :py:meth:`~.BaseSolution` instance as required. This solution"},{"line_number":67,"context_line":"is what wraps the abstract set of actions the strategy recommends to you. This"},{"line_number":68,"context_line":"solution is then processed by a :ref:`planner \u003cplanner_definition\u003e` to produce"},{"line_number":69,"context_line":"an action plan which shall contain the flow of concrete actions to be executed."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Please note that your strategy class will be instantiated without any"},{"line_number":72,"context_line":"parameter. Therefore, you should make sure not to make any of them required in"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_09cecd59","line":69,"range":{"start_line":69,"start_character":47,"end_line":69,"end_character":55},"updated":"2016-02-22 11:05:04.000000000","message":"what is a concrete action ? :) it should be interesting to mention here \"ordered actions\u0027 no ?","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"51b3a8df12a468fe771f780c4d8836a1c56e9e5c","unresolved":false,"context_lines":[{"line_number":66,"context_line":"method returns a :py:meth:`~.BaseSolution` instance as required. This solution"},{"line_number":67,"context_line":"is what wraps the abstract set of actions the strategy recommends to you. This"},{"line_number":68,"context_line":"solution is then processed by a :ref:`planner \u003cplanner_definition\u003e` to produce"},{"line_number":69,"context_line":"an action plan which shall contain the flow of concrete actions to be executed."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Please note that your strategy class will be instantiated without any"},{"line_number":72,"context_line":"parameter. Therefore, you should make sure not to make any of them required in"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_900aeb1f","line":69,"range":{"start_line":69,"start_character":47,"end_line":69,"end_character":55},"in_reply_to":"bae84128_09cecd59","updated":"2016-02-23 09:35:55.000000000","message":"Done","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3f02537ff0f21c97610feb12d0a9af6cfdf1783c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"Abstract Plugin Class"},{"line_number":77,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Here below is the abstract :py:class:`~.BaseStrategy` class that every single"},{"line_number":80,"context_line":"strategy should implement:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":".. automodule:: watcher.decision_engine.strategy.strategies.base"},{"line_number":83,"context_line":"    :noindex:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":".. autoclass:: BaseStrategy"},{"line_number":86,"context_line":"    :members:"},{"line_number":87,"context_line":"    :noindex:"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Add a new entry point"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_491a956f","line":87,"range":{"start_line":79,"start_character":0,"end_line":87,"end_character":13},"updated":"2016-02-22 11:05:04.000000000","message":"same remark on the HTML page structure than the one I wrote for https://review.openstack.org/#/c/280803/4/doc/source/dev/planner-plugin.rst@80","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"51b3a8df12a468fe771f780c4d8836a1c56e9e5c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"Abstract Plugin Class"},{"line_number":77,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Here below is the abstract :py:class:`~.BaseStrategy` class that every single"},{"line_number":80,"context_line":"strategy should implement:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":".. automodule:: watcher.decision_engine.strategy.strategies.base"},{"line_number":83,"context_line":"    :noindex:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":".. autoclass:: BaseStrategy"},{"line_number":86,"context_line":"    :members:"},{"line_number":87,"context_line":"    :noindex:"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Add a new entry point"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_b00f2f2d","line":87,"range":{"start_line":79,"start_character":0,"end_line":87,"end_character":13},"in_reply_to":"bae84128_491a956f","updated":"2016-02-23 09:35:55.000000000","message":"Done","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3f02537ff0f21c97610feb12d0a9af6cfdf1783c","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To get a better understanding on how to implement a more advanced strategy,"},{"line_number":110,"context_line":"have a look at the :py:class:`~.BasicConsolidation` class."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":".. _pbr: http://docs.openstack.org/developer/pbr/"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_4931f5eb","line":110,"range":{"start_line":110,"start_character":19,"end_line":110,"end_character":51},"updated":"2016-02-22 11:05:04.000000000","message":"Could you add a link?","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"51b3a8df12a468fe771f780c4d8836a1c56e9e5c","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To get a better understanding on how to implement a more advanced strategy,"},{"line_number":110,"context_line":"have a look at the :py:class:`~.BasicConsolidation` class."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":".. _pbr: http://docs.openstack.org/developer/pbr/"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_42a6b953","line":110,"range":{"start_line":110,"start_character":19,"end_line":110,"end_character":51},"in_reply_to":"bae84128_4931f5eb","updated":"2016-02-23 09:35:55.000000000","message":"This should be a link already.","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3f02537ff0f21c97610feb12d0a9af6cfdf1783c","unresolved":false,"context_lines":[{"line_number":115,"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":116,"context_line":""},{"line_number":117,"context_line":"The Watcher Decision Engine service will automatically discover any installed"},{"line_number":118,"context_line":"plugins when it is run. If a Python package containing a custom plugin is"},{"line_number":119,"context_line":"installed within the same environment as Watcher, Watcher will automatically"},{"line_number":120,"context_line":"make that plugin available for use."},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_c9398543","line":118,"range":{"start_line":118,"start_character":19,"end_line":118,"end_character":22},"updated":"2016-02-22 11:05:04.000000000","message":"restarted","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"51b3a8df12a468fe771f780c4d8836a1c56e9e5c","unresolved":false,"context_lines":[{"line_number":115,"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":116,"context_line":""},{"line_number":117,"context_line":"The Watcher Decision Engine service will automatically discover any installed"},{"line_number":118,"context_line":"plugins when it is run. If a Python package containing a custom plugin is"},{"line_number":119,"context_line":"installed within the same environment as Watcher, Watcher will automatically"},{"line_number":120,"context_line":"make that plugin available for use."},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_f0e37731","line":118,"range":{"start_line":118,"start_character":19,"end_line":118,"end_character":22},"in_reply_to":"bae84128_c9398543","updated":"2016-02-23 09:35:55.000000000","message":"Done","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3f02537ff0f21c97610feb12d0a9af6cfdf1783c","unresolved":false,"context_lines":[{"line_number":173,"context_line":"with this call:"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":".. code-block:: py"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":" cclient \u003d ceilometerclient.client.get_client(VERSION, os_username\u003dUSERNAME,"},{"line_number":178,"context_line":"  os_password\u003dPASSWORD, os_tenant_name\u003dPROJECT_NAME, os_auth_url\u003dAUTH_URL)"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_c9d505ba","line":176,"updated":"2016-02-22 11:05:04.000000000","message":"add required import","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"51b3a8df12a468fe771f780c4d8836a1c56e9e5c","unresolved":false,"context_lines":[{"line_number":173,"context_line":"with this call:"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":".. code-block:: py"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":" cclient \u003d ceilometerclient.client.get_client(VERSION, os_username\u003dUSERNAME,"},{"line_number":178,"context_line":"  os_password\u003dPASSWORD, os_tenant_name\u003dPROJECT_NAME, os_auth_url\u003dAUTH_URL)"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_70a3e74f","line":176,"in_reply_to":"bae84128_c9d505ba","updated":"2016-02-23 09:35:55.000000000","message":"It was actually obsolete so I rewrote it","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3f02537ff0f21c97610feb12d0a9af6cfdf1783c","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":".. code-block:: py"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":" value_cpu \u003d cclient.samples.list(meter_name\u003d\u0027cpu_util\u0027, limit\u003d10, q\u003dquery)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Read usage metrics using the Watcher Cluster History Helper"},{"line_number":187,"context_line":"-----------------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_09236d06","line":184,"range":{"start_line":184,"start_character":69,"end_line":184,"end_character":74},"updated":"2016-02-22 11:05:04.000000000","message":"what is \u0027query\u0027 ? Could you illustrate it ?\nDo we have a doc about the ceilometer helper methods ?","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"51b3a8df12a468fe771f780c4d8836a1c56e9e5c","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":".. code-block:: py"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":" value_cpu \u003d cclient.samples.list(meter_name\u003d\u0027cpu_util\u0027, limit\u003d10, q\u003dquery)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Read usage metrics using the Watcher Cluster History Helper"},{"line_number":187,"context_line":"-----------------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_9f2dba00","line":184,"range":{"start_line":184,"start_character":69,"end_line":184,"end_character":74},"in_reply_to":"bae84128_09236d06","updated":"2016-02-23 09:35:55.000000000","message":"Done","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3f02537ff0f21c97610feb12d0a9af6cfdf1783c","unresolved":false,"context_lines":[{"line_number":199,"context_line":"The following snippet code shows how to create a Cluster History class:"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":".. code-block:: py"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    query_history  \u003d CeilometerClusterHistory()"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"Using that you can now query the values for that specific metric:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_697959f6","line":202,"updated":"2016-02-22 11:05:04.000000000","message":"add required import","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"51b3a8df12a468fe771f780c4d8836a1c56e9e5c","unresolved":false,"context_lines":[{"line_number":199,"context_line":"The following snippet code shows how to create a Cluster History class:"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":".. code-block:: py"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    query_history  \u003d CeilometerClusterHistory()"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"Using that you can now query the values for that specific metric:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_224295ae","line":202,"in_reply_to":"bae84128_697959f6","updated":"2016-02-23 09:35:55.000000000","message":"Done","commit_id":"59b4da43aea823895218c2ff456814bf3ac5b861"}]}
