)]}'
{"doc/source/plugins/hook_and_trigger_plugins.rst":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"58f6d7c7bbca97991923e48f081eedcbca087902","unresolved":false,"context_lines":[{"line_number":13,"context_line":"      License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"      under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":".. _plugins_hook_and_trigger_plugins:"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Hook plugin"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_6aca5951","line":16,"updated":"2016-08-26 07:52:59.000000000","message":"What is the purpose of this line?","commit_id":"ccf7e4ee3185232186a2f3287df57fdd46f951ae"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"37eafad52ca622290a454089518b5f6ed398402a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"      License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"      under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":".. _plugins_hook_and_trigger_plugins:"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Hook plugin"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_f703b10d","line":16,"in_reply_to":"fa7ab95a_6aca5951","updated":"2016-08-26 08:30:05.000000000","message":"This is a marker[1] that allows to create references to this doc. The link to this doc will be automatically created here[2]\n\n\n[1] http://www.sphinx-doc.org/en/stable/markup/inline.html#role-ref\n[2] http://rally.readthedocs.io/en/latest/plugins.html#how-to-create-a-plugin","commit_id":"ccf7e4ee3185232186a2f3287df57fdd46f951ae"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"58f6d7c7bbca97991923e48f081eedcbca087902","unresolved":false,"context_lines":[{"line_number":16,"context_line":".. _plugins_hook_and_trigger_plugins:"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Hook plugin"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Hook plugins allow to run some code separately from main runner, because they"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_2afe916b","line":19,"updated":"2016-08-26 07:52:59.000000000","message":"Additional line \"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\" is required above the header because that is a common style in Rally specs (see specs/template.rst):\n\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n Hook plugin\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","commit_id":"ccf7e4ee3185232186a2f3287df57fdd46f951ae"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"ddaf6595ec4d5ad0ddbe2ecdc16bb1e599cb8be7","unresolved":false,"context_lines":[{"line_number":16,"context_line":".. _plugins_hook_and_trigger_plugins:"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Hook plugin"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Hook plugins allow to run some code separately from main runner, because they"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_1a183c84","line":19,"in_reply_to":"fa7ab95a_1a4d9c72","updated":"2016-08-26 08:33:18.000000000","message":"Sure! My mistake!","commit_id":"ccf7e4ee3185232186a2f3287df57fdd46f951ae"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"37eafad52ca622290a454089518b5f6ed398402a","unresolved":false,"context_lines":[{"line_number":16,"context_line":".. _plugins_hook_and_trigger_plugins:"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Hook plugin"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Hook plugins allow to run some code separately from main runner, because they"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_1a4d9c72","line":19,"in_reply_to":"fa7ab95a_2afe916b","updated":"2016-08-26 08:30:05.000000000","message":"This is not a spec. This doc is written in the same style as [1]\n\n[1] https://github.com/openstack/rally/tree/master/doc/source/plugins","commit_id":"ccf7e4ee3185232186a2f3287df57fdd46f951ae"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"58f6d7c7bbca97991923e48f081eedcbca087902","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Let\u0027s create a simple hook plugin that runs provided command from shell."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Creation"},{"line_number":30,"context_line":"^^^^^^^^"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Inherit a class for your plugin from the base *Hook* class and implement its API (the *run()* method):"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_6a3fb925","line":30,"updated":"2016-08-26 07:52:59.000000000","message":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","commit_id":"ccf7e4ee3185232186a2f3287df57fdd46f951ae"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"58f6d7c7bbca97991923e48f081eedcbca087902","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Creation"},{"line_number":30,"context_line":"^^^^^^^^"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Inherit a class for your plugin from the base *Hook* class and implement its API (the *run()* method):"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":".. code-block:: python"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_aa770101","line":32,"updated":"2016-08-26 07:52:59.000000000","message":"Why class Hook is not given below?","commit_id":"ccf7e4ee3185232186a2f3287df57fdd46f951ae"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"37eafad52ca622290a454089518b5f6ed398402a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Creation"},{"line_number":30,"context_line":"^^^^^^^^"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Inherit a class for your plugin from the base *Hook* class and implement its API (the *run()* method):"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":".. code-block:: python"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_7ab068f5","line":32,"in_reply_to":"fa7ab95a_aa770101","updated":"2016-08-26 08:30:05.000000000","message":"This doc shows how to create a new hook plugin, not base class.","commit_id":"ccf7e4ee3185232186a2f3287df57fdd46f951ae"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"58f6d7c7bbca97991923e48f081eedcbca087902","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        def __init__(self, config):"},{"line_number":62,"context_line":"            super(SysCallHook, self).__init__(config)"},{"line_number":63,"context_line":"            self.cmd \u003d self.config[\"cmd\"]"},{"line_number":64,"context_line":"            self.action_name \u003d self.config[\"action_name\"]"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        def run(self):"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_4a175551","line":63,"updated":"2016-08-26 07:52:59.000000000","message":"Why it is important to save self.cmd and self.action_name in this __init__ ?\n\nI guess that hook.Hook.__init__() saves self.config, so cmd and action_name is already there and could be used in self.run()","commit_id":"ccf7e4ee3185232186a2f3287df57fdd46f951ae"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"58f6d7c7bbca97991923e48f081eedcbca087902","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            else:"},{"line_number":77,"context_line":"                result[\"status\"] \u003d \"failed\""},{"line_number":78,"context_line":"                result[\"error\"] \u003d ["},{"line_number":79,"context_line":"                    \"n/a\",  # no exception class"},{"line_number":80,"context_line":"                    \"Subprocess returned {}\".format(proc.returncode),"},{"line_number":81,"context_line":"                    proc.stdout.read(),"},{"line_number":82,"context_line":"                ]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_45466624","line":79,"updated":"2016-08-26 07:52:59.000000000","message":"1) Why \"success\" and \"failed\" are not constants obtained from `hook\u0027 module? I suggest something like that:\n\n result[\"status\"] \u003d hook.STATUS_SUCCESS\n and\n result[\"status\"] \u003d hook.STATUS_FAILURE\n\n2) what is actually a structure of \"error\"? Is this structure permanent?\n\nI guess that is:\n\n [\n   str ex class,\n   int code,\n   str message\n\n ]\n\nCan this be explicitly declared somewhere or that is something that depend on Hook plugin implementation?","commit_id":"ccf7e4ee3185232186a2f3287df57fdd46f951ae"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"b9fe50e53630803e44ed57ff35e928da8c53c1d6","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            else:"},{"line_number":77,"context_line":"                result[\"status\"] \u003d \"failed\""},{"line_number":78,"context_line":"                result[\"error\"] \u003d ["},{"line_number":79,"context_line":"                    \"n/a\",  # no exception class"},{"line_number":80,"context_line":"                    \"Subprocess returned {}\".format(proc.returncode),"},{"line_number":81,"context_line":"                    proc.stdout.read(),"},{"line_number":82,"context_line":"                ]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_67f36474","line":79,"in_reply_to":"fa7ab95a_45466624","updated":"2016-08-26 10:46:16.000000000","message":"for 2):\nIt should be the same structure as for [1]\n\n[1] https://github.com/openstack/rally/blob/master/rally/common/objects/task.py#L147-L149","commit_id":"ccf7e4ee3185232186a2f3287df57fdd46f951ae"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"58f6d7c7bbca97991923e48f081eedcbca087902","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    @trigger.configure(name\u003d\"event\")"},{"line_number":104,"context_line":"    class EventTrigger(trigger.Trigger):"},{"line_number":105,"context_line":"        \"\"\"Triggers hook on specified iterations.\"\"\""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        CONFIG_SCHEMA \u003d {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_c59c366c","line":104,"updated":"2016-08-26 07:52:59.000000000","message":"Same here, where is a trigger.Trigger basic implementation proposal?","commit_id":"ccf7e4ee3185232186a2f3287df57fdd46f951ae"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"37eafad52ca622290a454089518b5f6ed398402a","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    @trigger.configure(name\u003d\"event\")"},{"line_number":104,"context_line":"    class EventTrigger(trigger.Trigger):"},{"line_number":105,"context_line":"        \"\"\"Triggers hook on specified iterations.\"\"\""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        CONFIG_SCHEMA \u003d {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_1add9c14","line":104,"in_reply_to":"fa7ab95a_c59c366c","updated":"2016-08-26 08:30:05.000000000","message":"All proposals are in the spec file[1]. This doc shows only how to write new plugins.\n\n[1] https://github.com/openstack/rally/blob/master/doc/specs/in-progress/hook_section.rst","commit_id":"ccf7e4ee3185232186a2f3287df57fdd46f951ae"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"58f6d7c7bbca97991923e48f081eedcbca087902","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            \"additionalProperties\": False,"},{"line_number":127,"context_line":"        }"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        def __init__(self, config):"},{"line_number":130,"context_line":"            super(EventTrigger, self).__init__(config)"},{"line_number":131,"context_line":"            self.unit \u003d self.config[\"unit\"]"},{"line_number":132,"context_line":"            self.at \u003d self.config[\"at\"]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_e5d21a34","line":129,"updated":"2016-08-26 07:52:59.000000000","message":"Same here, this __init__ looks redundant","commit_id":"ccf7e4ee3185232186a2f3287df57fdd46f951ae"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"810821441d98a1841c6db34d4dae1b299edb31fb","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                )"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Trigger plugin"},{"line_number":66,"context_line":"^^^^^^^^^^^^^^"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"In order to use the hook we need to specify iteration on which the hook"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_46f640fa","line":65,"updated":"2016-11-30 18:06:50.000000000","message":"Thank you for working on docs. \n\nBut this document requires changes, basically structure is too complicated and do not cover things in right order with gradually increasing complexity. This is current structure: \n\n-\u003e Creation (of what?)\n--\u003e Trigger plugin (what?)\n---\u003e Usage \n\nI am suggesting to change it to next: \n\n-\u003e Why Hooks? \nProblem description. (real samples based on reliability testing, testing upgrades under real load and so on) \n\n-\u003e Hooks \u0026 Triggers Overview \n\n--\u003e Architecture \nTell about Hooks and Triggers, that they are Rally plugins and that Triggers calls Hooks like Runner calls Scenario and so on. \n\n--\u003e Sample of usage (based on existing plugins) \nWhere to find existing plugins \nProblem description with corresponding rally task yaml \nResults of execution (with report) \n\n-\u003e Writing own Hook plugin \n \n--\u003e Problem description (what hook should do) \n--\u003e Plugin code \n--\u003e Plugin Placement \n--\u003e Sample of task that uses Hook \n--\u003e Results of task execution \n\n-\u003e Writing own Trigger plugin \n\n// same as for hook plugin \n\n\n\n\nThis is over super complicated document that won\u0027t help new users to start using this.","commit_id":"8da2a95ef96b70f613801f6117affa56f2a1e5f3"}],"doc/source/plugins/implementation/hook_and_trigger_plugins.rst":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":16,"context_line":".. _hook_and_trigger_plugins:"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Hook and hook trigger plugins"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_4e2670bb","line":19,"updated":"2016-12-23 00:28:19.000000000","message":"Although I understand the reason why the header is formulated in this way, it\u0027s really confusing to read \"hook and hook\". Let\u0027s probably reformulate it to the following:\n\nHooks. Hook trigger plugins","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":23,"context_line":"Why Hooks?"},{"line_number":24,"context_line":"----------"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"All rally workloads repeat they actions as many times as configured by runner"},{"line_number":27,"context_line":"and there is no way to test how cloud would work in changing conditions. For"},{"line_number":28,"context_line":"example we would like to test how changing of configuration or restarting of"},{"line_number":29,"context_line":"some components of cloud would affect performance and stability."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_6e797493","line":26,"range":{"start_line":26,"start_character":4,"end_line":26,"end_character":9},"updated":"2016-12-23 00:28:19.000000000","message":"Rally","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":23,"context_line":"Why Hooks?"},{"line_number":24,"context_line":"----------"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"All rally workloads repeat they actions as many times as configured by runner"},{"line_number":27,"context_line":"and there is no way to test how cloud would work in changing conditions. For"},{"line_number":28,"context_line":"example we would like to test how changing of configuration or restarting of"},{"line_number":29,"context_line":"some components of cloud would affect performance and stability."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_4e883023","line":26,"range":{"start_line":26,"start_character":54,"end_line":26,"end_character":57},"updated":"2016-12-23 00:28:19.000000000","message":"as it is","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":23,"context_line":"Why Hooks?"},{"line_number":24,"context_line":"----------"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"All rally workloads repeat they actions as many times as configured by runner"},{"line_number":27,"context_line":"and there is no way to test how cloud would work in changing conditions. For"},{"line_number":28,"context_line":"example we would like to test how changing of configuration or restarting of"},{"line_number":29,"context_line":"some components of cloud would affect performance and stability."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_8e6e98c7","line":26,"range":{"start_line":26,"start_character":27,"end_line":26,"end_character":31},"updated":"2016-12-23 00:28:19.000000000","message":"their","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"All rally workloads repeat they actions as many times as configured by runner"},{"line_number":27,"context_line":"and there is no way to test how cloud would work in changing conditions. For"},{"line_number":28,"context_line":"example we would like to test how changing of configuration or restarting of"},{"line_number":29,"context_line":"some components of cloud would affect performance and stability."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Task hooks were added to fill this gap and allow to use rally for reliability"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_0e6388dd","line":28,"range":{"start_line":28,"start_character":34,"end_line":28,"end_character":59},"updated":"2016-12-23 00:28:19.000000000","message":"configuration change","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"All rally workloads repeat they actions as many times as configured by runner"},{"line_number":27,"context_line":"and there is no way to test how cloud would work in changing conditions. For"},{"line_number":28,"context_line":"example we would like to test how changing of configuration or restarting of"},{"line_number":29,"context_line":"some components of cloud would affect performance and stability."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Task hooks were added to fill this gap and allow to use rally for reliability"},{"line_number":32,"context_line":"testing and high availability testing. Generally, hooks allow to perform any"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_2e604cce","line":29,"range":{"start_line":28,"start_character":63,"end_line":29,"end_character":24},"updated":"2016-12-23 00:28:19.000000000","message":"cloud component restart","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":28,"context_line":"example we would like to test how changing of configuration or restarting of"},{"line_number":29,"context_line":"some components of cloud would affect performance and stability."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Task hooks were added to fill this gap and allow to use rally for reliability"},{"line_number":32,"context_line":"testing and high availability testing. Generally, hooks allow to perform any"},{"line_number":33,"context_line":"actions on specified iteration or time since workload start."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_4e9bd0c9","line":31,"range":{"start_line":31,"start_character":56,"end_line":31,"end_character":61},"updated":"2016-12-23 00:28:19.000000000","message":"Rally","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"some components of cloud would affect performance and stability."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Task hooks were added to fill this gap and allow to use rally for reliability"},{"line_number":32,"context_line":"testing and high availability testing. Generally, hooks allow to perform any"},{"line_number":33,"context_line":"actions on specified iteration or time since workload start."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Also, task html-report provides results of hook execution. They can contain"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_ceafc0e1","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":7},"updated":"2016-12-23 00:28:19.000000000","message":"remove at all, there is testing word in the end of the sentence anyway","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Task hooks were added to fill this gap and allow to use rally for reliability"},{"line_number":32,"context_line":"testing and high availability testing. Generally, hooks allow to perform any"},{"line_number":33,"context_line":"actions on specified iteration or time since workload start."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Also, task html-report provides results of hook execution. They can contain"},{"line_number":36,"context_line":"graphical or textual information with timing and statistics."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_4e82f053","line":33,"range":{"start_line":33,"start_character":11,"end_line":33,"end_character":38},"updated":"2016-12-23 00:28:19.000000000","message":"\"specified iteration or specified time\"\n\nlet\u0027s emphasize by additional \"specified\"","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Task hooks were added to fill this gap and allow to use rally for reliability"},{"line_number":32,"context_line":"testing and high availability testing. Generally, hooks allow to perform any"},{"line_number":33,"context_line":"actions on specified iteration or time since workload start."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Also, task html-report provides results of hook execution. They can contain"},{"line_number":36,"context_line":"graphical or textual information with timing and statistics."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_8e8218ff","line":33,"range":{"start_line":33,"start_character":54,"end_line":33,"end_character":59},"updated":"2016-12-23 00:28:19.000000000","message":"has been started","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Task hooks were added to fill this gap and allow to use rally for reliability"},{"line_number":32,"context_line":"testing and high availability testing. Generally, hooks allow to perform any"},{"line_number":33,"context_line":"actions on specified iteration or time since workload start."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Also, task html-report provides results of hook execution. They can contain"},{"line_number":36,"context_line":"graphical or textual information with timing and statistics."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_ae87dc0d","line":33,"range":{"start_line":33,"start_character":45,"end_line":33,"end_character":53},"updated":"2016-12-23 00:28:19.000000000","message":"the workload","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"testing and high availability testing. Generally, hooks allow to perform any"},{"line_number":33,"context_line":"actions on specified iteration or time since workload start."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Also, task html-report provides results of hook execution. They can contain"},{"line_number":36,"context_line":"graphical or textual information with timing and statistics."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_ee79e430","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":4},"updated":"2016-12-23 00:28:19.000000000","message":"Additionally","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"testing and high availability testing. Generally, hooks allow to perform any"},{"line_number":33,"context_line":"actions on specified iteration or time since workload start."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Also, task html-report provides results of hook execution. They can contain"},{"line_number":36,"context_line":"graphical or textual information with timing and statistics."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_6e87b461","line":35,"range":{"start_line":35,"start_character":32,"end_line":35,"end_character":57},"updated":"2016-12-23 00:28:19.000000000","message":"hook execution results","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"Architecture"},{"line_number":44,"context_line":"^^^^^^^^^^^^"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Rally uses runners to specify how many times workload should be executed."},{"line_number":47,"context_line":"Hooks do not use runners, they use trigger plugins to specify when and"},{"line_number":48,"context_line":"how many times hook should be called. So hooks are isolated from workload"},{"line_number":49,"context_line":"runners and do not affect them because each hook is executed in separate"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_0e77083b","line":46,"range":{"start_line":46,"start_character":45,"end_line":46,"end_character":53},"updated":"2016-12-23 00:28:19.000000000","message":"the workload","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"^^^^^^^^^^^^"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Rally uses runners to specify how many times workload should be executed."},{"line_number":47,"context_line":"Hooks do not use runners, they use trigger plugins to specify when and"},{"line_number":48,"context_line":"how many times hook should be called. So hooks are isolated from workload"},{"line_number":49,"context_line":"runners and do not affect them because each hook is executed in separate"},{"line_number":50,"context_line":"thread."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_4ee9101a","line":47,"range":{"start_line":47,"start_character":26,"end_line":47,"end_character":34},"updated":"2016-12-23 00:28:19.000000000","message":"instead they rely on","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Rally uses runners to specify how many times workload should be executed."},{"line_number":47,"context_line":"Hooks do not use runners, they use trigger plugins to specify when and"},{"line_number":48,"context_line":"how many times hook should be called. So hooks are isolated from workload"},{"line_number":49,"context_line":"runners and do not affect them because each hook is executed in separate"},{"line_number":50,"context_line":"thread."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_8ef3f809","line":48,"range":{"start_line":48,"start_character":38,"end_line":48,"end_character":40},"updated":"2016-12-23 00:28:19.000000000","message":"Therefore","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":53,"context_line":"Sample of usage"},{"line_number":54,"context_line":"^^^^^^^^^^^^^^^"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Hooks can be added to task config. Lets look into hook config:"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":".. code-block:: json"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_cea3409d","line":56,"range":{"start_line":56,"start_character":27,"end_line":56,"end_character":33},"updated":"2016-12-23 00:28:19.000000000","message":"configuration","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":53,"context_line":"Sample of usage"},{"line_number":54,"context_line":"^^^^^^^^^^^^^^^"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Hooks can be added to task config. Lets look into hook config:"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":".. code-block:: json"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_cedd0072","line":56,"range":{"start_line":56,"start_character":55,"end_line":56,"end_character":61},"updated":"2016-12-23 00:28:19.000000000","message":"configuration","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":53,"context_line":"Sample of usage"},{"line_number":54,"context_line":"^^^^^^^^^^^^^^^"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Hooks can be added to task config. Lets look into hook config:"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":".. code-block:: json"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_0ee8e80f","line":56,"range":{"start_line":56,"start_character":40,"end_line":56,"end_character":44},"updated":"2016-12-23 00:28:19.000000000","message":"take a look on","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":53,"context_line":"Sample of usage"},{"line_number":54,"context_line":"^^^^^^^^^^^^^^^"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Hooks can be added to task config. Lets look into hook config:"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":".. code-block:: json"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_aef8bce6","line":56,"range":{"start_line":56,"start_character":19,"end_line":56,"end_character":26},"updated":"2016-12-23 00:28:19.000000000","message":"to the task","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"It specifies hook plugin with name \"sys_call\". \"args\" field contains string"},{"line_number":74,"context_line":"that will be used by sys_call plugin, but in case of any other hook plugin it"},{"line_number":75,"context_line":"can contain list or dict. \"trigger\" field specifies which trigger plugin should"},{"line_number":76,"context_line":"be used to run this hook. \"trigger\" contains similar fields \"name\" and \"args\""},{"line_number":77,"context_line":"which represent trigger plugin name and arguments for trigger plugin. In this"},{"line_number":78,"context_line":"example \"event\" trigger is specified and configured to run hook at 5th, 50th,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_ee480430","line":75,"range":{"start_line":75,"start_character":12,"end_line":75,"end_character":24},"updated":"2016-12-23 00:28:19.000000000","message":"Please correct me if I\u0027m wrong but that could be any python object or list/dict of objects? If so I suppose it\u0027ll be fair to modify to the following: \"can contain any other Python object, that is assumed to be passed to the hook.\"","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":75,"context_line":"can contain list or dict. \"trigger\" field specifies which trigger plugin should"},{"line_number":76,"context_line":"be used to run this hook. \"trigger\" contains similar fields \"name\" and \"args\""},{"line_number":77,"context_line":"which represent trigger plugin name and arguments for trigger plugin. In this"},{"line_number":78,"context_line":"example \"event\" trigger is specified and configured to run hook at 5th, 50th,"},{"line_number":79,"context_line":"200th and 1000th iterations."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Here is full task config that contains previous hook config:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_2ec20c34","line":78,"range":{"start_line":78,"start_character":59,"end_line":78,"end_character":63},"updated":"2016-12-23 00:28:19.000000000","message":"the hook","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"example \"event\" trigger is specified and configured to run hook at 5th, 50th,"},{"line_number":79,"context_line":"200th and 1000th iterations."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Here is full task config that contains previous hook config:"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":".. code-block:: json"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_8ee778e3","line":81,"range":{"start_line":81,"start_character":8,"end_line":81,"end_character":17},"updated":"2016-12-23 00:28:19.000000000","message":"a full","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"example \"event\" trigger is specified and configured to run hook at 5th, 50th,"},{"line_number":79,"context_line":"200th and 1000th iterations."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Here is full task config that contains previous hook config:"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":".. code-block:: json"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_eec72443","line":81,"range":{"start_line":81,"start_character":53,"end_line":81,"end_character":59},"updated":"2016-12-23 00:28:19.000000000","message":"configuraiton","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    In this example, runner is configured to run workload 1500 times. So there"},{"line_number":116,"context_line":"    is a limit for iterations and hook will be triggered only if certain"},{"line_number":117,"context_line":"    iteration is started by runner. In other words, if trigger specifies"},{"line_number":118,"context_line":"    iteration out of scope of runner iterations then such trigger will not be"},{"line_number":119,"context_line":"    triggered."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Task report for this example will contain minimal information about hook"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_2ed92c22","line":118,"range":{"start_line":118,"start_character":21,"end_line":118,"end_character":47},"updated":"2016-12-23 00:28:19.000000000","message":"runner iterations scope","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    is a limit for iterations and hook will be triggered only if certain"},{"line_number":117,"context_line":"    iteration is started by runner. In other words, if trigger specifies"},{"line_number":118,"context_line":"    iteration out of scope of runner iterations then such trigger will not be"},{"line_number":119,"context_line":"    triggered."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Task report for this example will contain minimal information about hook"},{"line_number":122,"context_line":"execution: duration of each hook call and status(success of failure)."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_8efe9869","line":119,"range":{"start_line":119,"start_character":4,"end_line":119,"end_character":13},"updated":"2016-12-23 00:28:19.000000000","message":"called","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    triggered."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Task report for this example will contain minimal information about hook"},{"line_number":122,"context_line":"execution: duration of each hook call and status(success of failure)."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"Let\u0027s take a look at more complicated config that can produce graphical"},{"line_number":125,"context_line":"and textual information."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_0ef3889f","line":122,"range":{"start_line":122,"start_character":42,"end_line":122,"end_character":48},"updated":"2016-12-23 00:28:19.000000000","message":"its status","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            max: 0"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"hook_example_script.sh generates dummy output in json format. Format of"},{"line_number":169,"context_line":"graphical information is the same as for workloads and the same types of"},{"line_number":170,"context_line":"charts are supported for hooks."},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_6e309457","line":168,"range":{"start_line":168,"start_character":49,"end_line":168,"end_character":53},"updated":"2016-12-23 00:28:19.000000000","message":"JSON","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            max: 0"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"hook_example_script.sh generates dummy output in json format. Format of"},{"line_number":169,"context_line":"graphical information is the same as for workloads and the same types of"},{"line_number":170,"context_line":"charts are supported for hooks."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Here is report that shows aggregated table and chart with hook results:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_ce3fc023","line":169,"range":{"start_line":168,"start_character":62,"end_line":169,"end_character":22},"updated":"2016-12-23 00:28:19.000000000","message":"Grafical information format","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"hook_example_script.sh generates dummy output in json format. Format of"},{"line_number":169,"context_line":"graphical information is the same as for workloads and the same types of"},{"line_number":170,"context_line":"charts are supported for hooks."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Here is report that shows aggregated table and chart with hook results:"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_8e5858fc","line":170,"range":{"start_line":170,"start_character":21,"end_line":170,"end_character":30},"updated":"2016-12-23 00:28:19.000000000","message":"for the hooks","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":169,"context_line":"graphical information is the same as for workloads and the same types of"},{"line_number":170,"context_line":"charts are supported for hooks."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Here is report that shows aggregated table and chart with hook results:"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":".. image:: ../../images/Hook-Aggregated-Report.png"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_ae5d1ceb","line":172,"range":{"start_line":172,"start_character":5,"end_line":172,"end_character":14},"updated":"2016-12-23 00:28:19.000000000","message":"is a report","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":174,"context_line":".. image:: ../../images/Hook-Aggregated-Report.png"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Here is report that shows lines chart and pie chart for first hook on"},{"line_number":177,"context_line":"second iteration:"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":".. image:: ../../images/Hook-Per-Hook-Report.png"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_ee3c8431","line":177,"range":{"start_line":177,"start_character":0,"end_line":177,"end_character":6},"updated":"2016-12-23 00:28:19.000000000","message":"the second","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":188,"context_line":"^^^^^^^^^^^^^^^^^^^"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Hook plugin should implement custom action that can be done one or multiple"},{"line_number":191,"context_line":"times during workload. Example actions:"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"- Destructive action inside cloud (`Fault Injection`_)"},{"line_number":194,"context_line":"- Get info about current state of cloud (load/health)"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_cef980ca","line":191,"range":{"start_line":191,"start_character":23,"end_line":191,"end_character":38},"updated":"2016-12-23 00:28:19.000000000","message":"Examples of such actions might be the following:\n\nnote: I\u0027m proposing to change present simple forms of verbs below to the present continuos to present some specific action as a noun. Please feel free to ignore","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":188,"context_line":"^^^^^^^^^^^^^^^^^^^"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Hook plugin should implement custom action that can be done one or multiple"},{"line_number":191,"context_line":"times during workload. Example actions:"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"- Destructive action inside cloud (`Fault Injection`_)"},{"line_number":194,"context_line":"- Get info about current state of cloud (load/health)"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_8e0f78e0","line":191,"range":{"start_line":191,"start_character":6,"end_line":191,"end_character":13},"updated":"2016-12-23 00:28:19.000000000","message":"during the","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":191,"context_line":"times during workload. Example actions:"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"- Destructive action inside cloud (`Fault Injection`_)"},{"line_number":194,"context_line":"- Get info about current state of cloud (load/health)"},{"line_number":195,"context_line":"- Upgrade/downgrade a component of cloud"},{"line_number":196,"context_line":"- Change configuration of cloud"},{"line_number":197,"context_line":"- etc."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_0e0468be","line":194,"range":{"start_line":194,"start_character":2,"end_line":194,"end_character":10},"updated":"2016-12-23 00:28:19.000000000","message":"Getting information","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"- Destructive action inside cloud (`Fault Injection`_)"},{"line_number":194,"context_line":"- Get info about current state of cloud (load/health)"},{"line_number":195,"context_line":"- Upgrade/downgrade a component of cloud"},{"line_number":196,"context_line":"- Change configuration of cloud"},{"line_number":197,"context_line":"- etc."},{"line_number":198,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_4e2cb04a","line":195,"range":{"start_line":195,"start_character":2,"end_line":195,"end_character":19},"updated":"2016-12-23 00:28:19.000000000","message":"Upgrading/downgrading","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":193,"context_line":"- Destructive action inside cloud (`Fault Injection`_)"},{"line_number":194,"context_line":"- Get info about current state of cloud (load/health)"},{"line_number":195,"context_line":"- Upgrade/downgrade a component of cloud"},{"line_number":196,"context_line":"- Change configuration of cloud"},{"line_number":197,"context_line":"- etc."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_8e269866","line":196,"range":{"start_line":196,"start_character":2,"end_line":196,"end_character":8},"updated":"2016-12-23 00:28:19.000000000","message":"Changing","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":200,"context_line":"Plugin code"},{"line_number":201,"context_line":"^^^^^^^^^^^"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"This example shows code for simple hook that performs system call."},{"line_number":204,"context_line":"It is inherited from the base *Hook* class and implemented ``run()`` method:"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":".. code-block:: python"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_2e184c1d","line":203,"range":{"start_line":203,"start_character":0,"end_line":203,"end_character":4},"updated":"2016-12-23 00:28:19.000000000","message":"The following","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":200,"context_line":"Plugin code"},{"line_number":201,"context_line":"^^^^^^^^^^^"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"This example shows code for simple hook that performs system call."},{"line_number":204,"context_line":"It is inherited from the base *Hook* class and implemented ``run()`` method:"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":".. code-block:: python"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_4ed3d038","line":203,"range":{"start_line":203,"start_character":19,"end_line":203,"end_character":39},"updated":"2016-12-23 00:28:19.000000000","message":"simple hook code","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":201,"context_line":"^^^^^^^^^^^"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"This example shows code for simple hook that performs system call."},{"line_number":204,"context_line":"It is inherited from the base *Hook* class and implemented ``run()`` method:"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":".. code-block:: python"},{"line_number":207,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_8eddb844","line":204,"range":{"start_line":204,"start_character":43,"end_line":204,"end_character":58},"updated":"2016-12-23 00:28:19.000000000","message":"and contains implemented..","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                  details\u003dproc.stdout.read(),"},{"line_number":234,"context_line":"              )"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"Any rised exceptions durnig execution of ``run`` method will be caught by Hook"},{"line_number":237,"context_line":"base class and saved as result. But hook should manually call"},{"line_number":238,"context_line":"``Hook.set_error()`` to indicate logical error in case if there is no exception"},{"line_number":239,"context_line":"raised."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_eee4840e","line":236,"range":{"start_line":236,"start_character":0,"end_line":236,"end_character":27},"updated":"2016-12-23 00:28:19.000000000","message":"Any exceptions risen during...","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":234,"context_line":"              )"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"Any rised exceptions durnig execution of ``run`` method will be caught by Hook"},{"line_number":237,"context_line":"base class and saved as result. But hook should manually call"},{"line_number":238,"context_line":"``Hook.set_error()`` to indicate logical error in case if there is no exception"},{"line_number":239,"context_line":"raised."},{"line_number":240,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_6ebfb4d0","line":237,"range":{"start_line":237,"start_character":32,"end_line":237,"end_character":35},"updated":"2016-12-23 00:28:19.000000000","message":"Although","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":234,"context_line":"              )"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"Any rised exceptions durnig execution of ``run`` method will be caught by Hook"},{"line_number":237,"context_line":"base class and saved as result. But hook should manually call"},{"line_number":238,"context_line":"``Hook.set_error()`` to indicate logical error in case if there is no exception"},{"line_number":239,"context_line":"raised."},{"line_number":240,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_4ebaf0e2","line":237,"range":{"start_line":237,"start_character":21,"end_line":237,"end_character":24},"updated":"2016-12-23 00:28:19.000000000","message":"as a","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":238,"context_line":"``Hook.set_error()`` to indicate logical error in case if there is no exception"},{"line_number":239,"context_line":"raised."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Also there is method for saving data for charts: ``Hook.add_output()``."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"Plugin Placement"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_0ec9c878","line":241,"range":{"start_line":241,"start_character":14,"end_line":241,"end_character":20},"updated":"2016-12-23 00:28:19.000000000","message":"a method","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":238,"context_line":"``Hook.set_error()`` to indicate logical error in case if there is no exception"},{"line_number":239,"context_line":"raised."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Also there is method for saving data for charts: ``Hook.add_output()``."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"Plugin Placement"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_4ea110a9","line":241,"range":{"start_line":241,"start_character":25,"end_line":241,"end_character":47},"updated":"2016-12-23 00:28:19.000000000","message":"saving charts data","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":374,"context_line":"Trigger plugins should override two methods:"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"- ``get_listening_event`` - this method should return currently configured"},{"line_number":377,"context_line":"  event name. (So far rally supports only \"time\" and \"iteration\")"},{"line_number":378,"context_line":"- ``on_event`` - this method is called each time certain event occurs. It"},{"line_number":379,"context_line":"  should call base method in case if hook should be triggered for provided"},{"line_number":380,"context_line":"  event and value."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_ee92c456","line":377,"range":{"start_line":377,"start_character":22,"end_line":377,"end_character":27},"updated":"2016-12-23 00:28:19.000000000","message":"Rally","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e6ddf7130ca95accc8fe583de89e81223e693e0a","unresolved":false,"context_lines":[{"line_number":383,"context_line":"Plugin Placement"},{"line_number":384,"context_line":"^^^^^^^^^^^^^^^^"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"All trigger plugin should be placed in `Trigger folder`_."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":""},{"line_number":389,"context_line":".. references:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da4df55a_0ea0e89e","line":386,"range":{"start_line":386,"start_character":12,"end_line":386,"end_character":18},"updated":"2016-12-23 00:28:19.000000000","message":"plugins","commit_id":"c78fee9c8500329ce752232346af160a96f27ef7"},{"author":{"_account_id":16590,"name":"Morgan Richomme","email":"morgan.richomme@orange.com","username":"Morgan22"},"change_message_id":"72421c9a3cb9e4c5478e5e00d5b61118e476c804","unresolved":false,"context_lines":[{"line_number":24,"context_line":"----------"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"All Rally workloads repeat their actions as many times as it is configured by"},{"line_number":27,"context_line":"runner and there is no way to test how cloud would work in changing conditions."},{"line_number":28,"context_line":"For example we would like to test how configuration change or cloud component"},{"line_number":29,"context_line":"restart would affect performance and stability."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a3c09a3_035375e2","line":27,"updated":"2017-01-13 17:05:09.000000000","message":"suggestion\n\nOnce run, there is no way to interupt the runner to evaluate any change or restart event on the stability of the cloud under test.","commit_id":"d5f54a51a661d443856511e1db2af198f3f1fe09"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"8eb4652d1d899a861070809dee3fb2e7286d07b1","unresolved":false,"context_lines":[{"line_number":24,"context_line":"----------"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"All Rally workloads repeat their actions as many times as it is configured by"},{"line_number":27,"context_line":"runner and there is no way to test how cloud would work in changing conditions."},{"line_number":28,"context_line":"For example we would like to test how configuration change or cloud component"},{"line_number":29,"context_line":"restart would affect performance and stability."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a3c09a3_ea41ae0c","line":27,"in_reply_to":"7a3c09a3_035375e2","updated":"2017-01-16 08:36:53.000000000","message":"Done","commit_id":"d5f54a51a661d443856511e1db2af198f3f1fe09"},{"author":{"_account_id":16590,"name":"Morgan Richomme","email":"morgan.richomme@orange.com","username":"Morgan22"},"change_message_id":"72421c9a3cb9e4c5478e5e00d5b61118e476c804","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"Writing own Hook plugin"},{"line_number":188,"context_line":"-----------------------"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Problem description"},{"line_number":191,"context_line":"^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a3c09a3_287930fd","line":188,"updated":"2017-01-13 17:05:09.000000000","message":"writing your own Hook plugin or writing Hook plugin sounds maybe better","commit_id":"d5f54a51a661d443856511e1db2af198f3f1fe09"},{"author":{"_account_id":16590,"name":"Morgan Richomme","email":"morgan.richomme@orange.com","username":"Morgan22"},"change_message_id":"72421c9a3cb9e4c5478e5e00d5b61118e476c804","unresolved":false,"context_lines":[{"line_number":296,"context_line":".. image:: ../../images/Hook-Results.png"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"Writing own Trigger plugin"},{"line_number":300,"context_line":"--------------------------"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a3c09a3_28ee908b","line":299,"updated":"2017-01-13 17:05:09.000000000","message":"same: \"own\" alone without your sounds straneg to me (but I am not a native speaker)","commit_id":"d5f54a51a661d443856511e1db2af198f3f1fe09"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"8eb4652d1d899a861070809dee3fb2e7286d07b1","unresolved":false,"context_lines":[{"line_number":296,"context_line":".. image:: ../../images/Hook-Results.png"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"Writing own Trigger plugin"},{"line_number":300,"context_line":"--------------------------"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a3c09a3_2a4c9641","line":299,"in_reply_to":"7a3c09a3_28ee908b","updated":"2017-01-16 08:36:53.000000000","message":"Done","commit_id":"d5f54a51a661d443856511e1db2af198f3f1fe09"},{"author":{"_account_id":16590,"name":"Morgan Richomme","email":"morgan.richomme@orange.com","username":"Morgan22"},"change_message_id":"72421c9a3cb9e4c5478e5e00d5b61118e476c804","unresolved":false,"context_lines":[{"line_number":313,"context_line":"Plugin code"},{"line_number":314,"context_line":"^^^^^^^^^^^"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"This example shows code of existing trigger:"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":".. code-block:: python"},{"line_number":319,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a3c09a3_a877e0d2","line":316,"updated":"2017-01-13 17:05:09.000000000","message":"This example shows the code of the existing Event trigger","commit_id":"d5f54a51a661d443856511e1db2af198f3f1fe09"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"8eb4652d1d899a861070809dee3fb2e7286d07b1","unresolved":false,"context_lines":[{"line_number":313,"context_line":"Plugin code"},{"line_number":314,"context_line":"^^^^^^^^^^^"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"This example shows code of existing trigger:"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":".. code-block:: python"},{"line_number":319,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a3c09a3_4a47221d","line":316,"in_reply_to":"7a3c09a3_a877e0d2","updated":"2017-01-16 08:36:53.000000000","message":"Done","commit_id":"d5f54a51a661d443856511e1db2af198f3f1fe09"},{"author":{"_account_id":16590,"name":"Morgan Richomme","email":"morgan.richomme@orange.com","username":"Morgan22"},"change_message_id":"72421c9a3cb9e4c5478e5e00d5b61118e476c804","unresolved":false,"context_lines":[{"line_number":375,"context_line":"          super(EventTrigger, self).on_event(event_type, value)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Trigger plugins should override two methods:"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"- ``get_listening_event`` - this method should return currently configured"},{"line_number":381,"context_line":"  event name. (So far Rally supports only \"time\" and \"iteration\")"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a3c09a3_a85e0043","line":378,"updated":"2017-01-13 17:05:09.000000000","message":"should ou must?","commit_id":"d5f54a51a661d443856511e1db2af198f3f1fe09"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"8eb4652d1d899a861070809dee3fb2e7286d07b1","unresolved":false,"context_lines":[{"line_number":375,"context_line":"          super(EventTrigger, self).on_event(event_type, value)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Trigger plugins should override two methods:"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"- ``get_listening_event`` - this method should return currently configured"},{"line_number":381,"context_line":"  event name. (So far Rally supports only \"time\" and \"iteration\")"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a3c09a3_0a86fa12","line":378,"in_reply_to":"7a3c09a3_a85e0043","updated":"2017-01-16 08:36:53.000000000","message":"Done","commit_id":"d5f54a51a661d443856511e1db2af198f3f1fe09"},{"author":{"_account_id":16590,"name":"Morgan Richomme","email":"morgan.richomme@orange.com","username":"Morgan22"},"change_message_id":"72421c9a3cb9e4c5478e5e00d5b61118e476c804","unresolved":false,"context_lines":[{"line_number":380,"context_line":"- ``get_listening_event`` - this method should return currently configured"},{"line_number":381,"context_line":"  event name. (So far Rally supports only \"time\" and \"iteration\")"},{"line_number":382,"context_line":"- ``on_event`` - this method is called each time certain event occurs. It"},{"line_number":383,"context_line":"  should call base method in case if hook should be triggered for provided"},{"line_number":384,"context_line":"  event and value."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a3c09a3_23e9511b","line":383,"updated":"2017-01-13 17:05:09.000000000","message":"not fully clear to me\nsuggestion\n\"this method is called each time certain events occur. \nIt calls base method when the hook is triggered on specified event\"","commit_id":"d5f54a51a661d443856511e1db2af198f3f1fe09"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"8eb4652d1d899a861070809dee3fb2e7286d07b1","unresolved":false,"context_lines":[{"line_number":380,"context_line":"- ``get_listening_event`` - this method should return currently configured"},{"line_number":381,"context_line":"  event name. (So far Rally supports only \"time\" and \"iteration\")"},{"line_number":382,"context_line":"- ``on_event`` - this method is called each time certain event occurs. It"},{"line_number":383,"context_line":"  should call base method in case if hook should be triggered for provided"},{"line_number":384,"context_line":"  event and value."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a3c09a3_aa888623","line":383,"in_reply_to":"7a3c09a3_23e9511b","updated":"2017-01-16 08:36:53.000000000","message":"Done","commit_id":"d5f54a51a661d443856511e1db2af198f3f1fe09"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"fd76973c0e993dd90b36d4bb9d11ecd29f8944ee","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Task hooks were added to fill this gap and allow to use Rally for reliability"},{"line_number":33,"context_line":"and high availability testing. Generally, hooks allow to perform any"},{"line_number":34,"context_line":"actions on specified iteration or specified time since thr workload has been"},{"line_number":35,"context_line":"started."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Also, task html-report provides results of hook execution. They can contain"}],"source_content_type":"text/x-rst","patch_set":12,"id":"7a3c09a3_15713d44","line":34,"range":{"start_line":34,"start_character":57,"end_line":34,"end_character":58},"updated":"2017-01-18 10:10:46.000000000","message":"e","commit_id":"1dc442f9bb27be0cae2341f1a7c92457db57af3d"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"ca45fc8bf4218c0ec09f1666900d1cae1353c479","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Task hooks were added to fill this gap and allow to use Rally for reliability"},{"line_number":33,"context_line":"and high availability testing. Generally, hooks allow to perform any"},{"line_number":34,"context_line":"actions on specified iteration or specified time since thr workload has been"},{"line_number":35,"context_line":"started."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Also, task html-report provides results of hook execution. They can contain"}],"source_content_type":"text/x-rst","patch_set":12,"id":"7a3c09a3_f0bd9f02","line":34,"range":{"start_line":34,"start_character":57,"end_line":34,"end_character":58},"in_reply_to":"7a3c09a3_15713d44","updated":"2017-01-18 10:14:25.000000000","message":"Done","commit_id":"1dc442f9bb27be0cae2341f1a7c92457db57af3d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"fd76973c0e993dd90b36d4bb9d11ecd29f8944ee","unresolved":false,"context_lines":[{"line_number":55,"context_line":"Sample of usage"},{"line_number":56,"context_line":"^^^^^^^^^^^^^^^"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Hooks can be added to the task configuration. Lets take a look on hook"},{"line_number":59,"context_line":"configuration:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":".. code-block:: json"}],"source_content_type":"text/x-rst","patch_set":12,"id":"7a3c09a3_3515599b","line":58,"range":{"start_line":58,"start_character":63,"end_line":58,"end_character":65},"updated":"2017-01-18 10:10:46.000000000","message":"at","commit_id":"1dc442f9bb27be0cae2341f1a7c92457db57af3d"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"ca45fc8bf4218c0ec09f1666900d1cae1353c479","unresolved":false,"context_lines":[{"line_number":55,"context_line":"Sample of usage"},{"line_number":56,"context_line":"^^^^^^^^^^^^^^^"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Hooks can be added to the task configuration. Lets take a look on hook"},{"line_number":59,"context_line":"configuration:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":".. code-block:: json"}],"source_content_type":"text/x-rst","patch_set":12,"id":"7a3c09a3_50d6734f","line":58,"range":{"start_line":58,"start_character":63,"end_line":58,"end_character":65},"in_reply_to":"7a3c09a3_3515599b","updated":"2017-01-18 10:14:25.000000000","message":"Done","commit_id":"1dc442f9bb27be0cae2341f1a7c92457db57af3d"}]}
