)]}'
{".rally-ci.yaml":[{"author":{"_account_id":14168,"name":"Alexandr Nevenchannyy","email":"anevenchannyy@mirantis.com","username":"anevenchannyy"},"change_message_id":"298eb9ce3abb09c470cd40732184603119eba879","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    data: |"},{"line_number":7,"context_line":"      rally-manage db recreate"},{"line_number":8,"context_line":"      cat \u003c\u003cEOF \u003e /tmp/conf.json"},{"line_number":9,"context_line":"      {   "},{"line_number":10,"context_line":"          \"type\": \"ExistingCloud\","},{"line_number":11,"context_line":"          \"auth_url\": \"$OS_AUTH_URL\","},{"line_number":12,"context_line":"          \"admin\": {"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"7a5de9d1_44e76de4","line":9,"range":{"start_line":9,"start_character":7,"end_line":9,"end_character":10},"updated":"2016-01-28 11:21:51.000000000","message":"tailing spaces","commit_id":"13dac940ce7e33834d466d298af848c806148931"}],"rally/plugins/openstack/scenarios/vm/vmtasks.py":[{"author":{"_account_id":14168,"name":"Alexandr Nevenchannyy","email":"anevenchannyy@mirantis.com","username":"anevenchannyy"},"change_message_id":"847beef733d26773f648bccd63d6c739192078b7","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        Given file will be uploaded to `gate_node` and started. This script"},{"line_number":220,"context_line":"        should print `key` `value` pairs separated by colon. These pairs will"},{"line_number":221,"context_line":"        be presented in results."},{"line_number":222,"context_line":"        "},{"line_number":223,"context_line":"        Gate node should be accessible via ssh with keypair `key_name`, so "},{"line_number":224,"context_line":"        heat template should accept parameter `key_name`."},{"line_number":225,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_01e9991a","line":222,"range":{"start_line":222,"start_character":0,"end_line":222,"end_character":8},"updated":"2016-01-27 13:43:46.000000000","message":"please remove tailing spaces","commit_id":"968c4f044463494cc278c76da9abe1eeb255b13d"},{"author":{"_account_id":14168,"name":"Alexandr Nevenchannyy","email":"anevenchannyy@mirantis.com","username":"anevenchannyy"},"change_message_id":"847beef733d26773f648bccd63d6c739192078b7","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        should print `key` `value` pairs separated by colon. These pairs will"},{"line_number":221,"context_line":"        be presented in results."},{"line_number":222,"context_line":"        "},{"line_number":223,"context_line":"        Gate node should be accessible via ssh with keypair `key_name`, so "},{"line_number":224,"context_line":"        heat template should accept parameter `key_name`."},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        :param dict workload: workload to run"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_6173ad4e","line":223,"range":{"start_line":223,"start_character":74,"end_line":223,"end_character":75},"updated":"2016-01-27 13:43:46.000000000","message":"same as above","commit_id":"968c4f044463494cc278c76da9abe1eeb255b13d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"b5c5a88dc7f6484a1ab8fa6bf2869b222e3782fb","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        should print `key` `value` pairs separated by colon. These pairs will"},{"line_number":221,"context_line":"        be presented in results."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        Gate node should be accessible via ssh with keypair `key_name`, so "},{"line_number":224,"context_line":"        heat template should accept parameter `key_name`."},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        :param dict workload: workload to run"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_eeebd776","line":223,"updated":"2016-01-28 12:10:07.000000000","message":"trailing space","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"1bfcb4dcf732f76dad429fe194e99bb9924310f3","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        should print `key` `value` pairs separated by colon. These pairs will"},{"line_number":221,"context_line":"        be presented in results."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        Gate node should be accessible via ssh with keypair `key_name`, so "},{"line_number":224,"context_line":"        heat template should accept parameter `key_name`."},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        :param dict workload: workload to run"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_bd92f39d","line":223,"in_reply_to":"7a5de9d1_eeebd776","updated":"2016-01-28 13:50:32.000000000","message":"Done","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"b5c5a88dc7f6484a1ab8fa6bf2869b222e3782fb","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        status, out, err \u003d ssh.execute(\"/tmp/.rally-workload\","},{"line_number":253,"context_line":"                                       stdin\u003djson.dumps(self.stack.stack.outputs))"},{"line_number":254,"context_line":"        rows \u003d []"},{"line_number":255,"context_line":"        print keypair.private_key"},{"line_number":256,"context_line":"        for line in out.splitlines():"},{"line_number":257,"context_line":"            row \u003d line.split(\":\")"},{"line_number":258,"context_line":"            if len(row) !\u003d 2:"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_8e210350","line":255,"updated":"2016-01-28 12:10:07.000000000","message":"remove this","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"1bfcb4dcf732f76dad429fe194e99bb9924310f3","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        status, out, err \u003d ssh.execute(\"/tmp/.rally-workload\","},{"line_number":253,"context_line":"                                       stdin\u003djson.dumps(self.stack.stack.outputs))"},{"line_number":254,"context_line":"        rows \u003d []"},{"line_number":255,"context_line":"        print keypair.private_key"},{"line_number":256,"context_line":"        for line in out.splitlines():"},{"line_number":257,"context_line":"            row \u003d line.split(\":\")"},{"line_number":258,"context_line":"            if len(row) !\u003d 2:"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_fd7f0b64","line":255,"in_reply_to":"7a5de9d1_8e210350","updated":"2016-01-28 13:50:32.000000000","message":"Done","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"b5c5a88dc7f6484a1ab8fa6bf2869b222e3782fb","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                raise Exception(\"Invalid data %s\" % line)"},{"line_number":260,"context_line":"            rows.append(row)"},{"line_number":261,"context_line":"        if not rows:"},{"line_number":262,"context_line":"            raise Exception(\"No data\")"},{"line_number":263,"context_line":"        self.add_output("},{"line_number":264,"context_line":"            complete\u003d{\"title\": \"Workload results\","},{"line_number":265,"context_line":"                      \"description\": \"Workload results\","}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_aee39f04","line":262,"updated":"2016-01-28 12:10:07.000000000","message":"Need more explicit exception type","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"1bfcb4dcf732f76dad429fe194e99bb9924310f3","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                raise Exception(\"Invalid data %s\" % line)"},{"line_number":260,"context_line":"            rows.append(row)"},{"line_number":261,"context_line":"        if not rows:"},{"line_number":262,"context_line":"            raise Exception(\"No data\")"},{"line_number":263,"context_line":"        self.add_output("},{"line_number":264,"context_line":"            complete\u003d{\"title\": \"Workload results\","},{"line_number":265,"context_line":"                      \"description\": \"Workload results\","}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_1d38e79f","line":262,"in_reply_to":"7a5de9d1_aee39f04","updated":"2016-01-28 13:50:32.000000000","message":"Done","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"b5c5a88dc7f6484a1ab8fa6bf2869b222e3782fb","unresolved":false,"context_lines":[{"line_number":262,"context_line":"            raise Exception(\"No data\")"},{"line_number":263,"context_line":"        self.add_output("},{"line_number":264,"context_line":"            complete\u003d{\"title\": \"Workload results\","},{"line_number":265,"context_line":"                      \"description\": \"Workload results\","},{"line_number":266,"context_line":"                      \"chart_plugin\": \"Table\","},{"line_number":267,"context_line":"                      \"data\": {"},{"line_number":268,"context_line":"                      \"cols\": [\"key\", \"value\"],"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_ce0ffbdf","line":265,"updated":"2016-01-28 12:10:07.000000000","message":"It would be nice to make description different to title, because duplication looks confusing","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"1bfcb4dcf732f76dad429fe194e99bb9924310f3","unresolved":false,"context_lines":[{"line_number":262,"context_line":"            raise Exception(\"No data\")"},{"line_number":263,"context_line":"        self.add_output("},{"line_number":264,"context_line":"            complete\u003d{\"title\": \"Workload results\","},{"line_number":265,"context_line":"                      \"description\": \"Workload results\","},{"line_number":266,"context_line":"                      \"chart_plugin\": \"Table\","},{"line_number":267,"context_line":"                      \"data\": {"},{"line_number":268,"context_line":"                      \"cols\": [\"key\", \"value\"],"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_dde7afe2","line":265,"in_reply_to":"7a5de9d1_ce0ffbdf","updated":"2016-01-28 13:50:32.000000000","message":"Done","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"195a9b2cd09b9c307d8dbeb015b4fc055937aee4","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        \"\"\""},{"line_number":233,"context_line":"        clients \u003d osclients.Clients(self.context[\"admin\"][\"credential\"])"},{"line_number":234,"context_line":"        nova \u003d clients.nova.create_client()"},{"line_number":235,"context_line":"        keypair \u003d nova.keypairs.create(self.generate_random_name())"},{"line_number":236,"context_line":"        parameters[\"key_name\"] \u003d keypair.name"},{"line_number":237,"context_line":"        self.stack \u003d heat.main.Stack(self, self.task,"},{"line_number":238,"context_line":"                                     template, files\u003dfiles,"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a5de9d1_8b9e3161","line":235,"updated":"2016-02-01 18:35:05.000000000","message":"there is a context class for keypairs","commit_id":"b753931e67038dd72158ea2f1ac5aa6bce85f43b"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"ad6e7cd9264685676cc340246ac3d8a9812a0940","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        \"\"\""},{"line_number":233,"context_line":"        clients \u003d osclients.Clients(self.context[\"admin\"][\"credential\"])"},{"line_number":234,"context_line":"        nova \u003d clients.nova.create_client()"},{"line_number":235,"context_line":"        keypair \u003d nova.keypairs.create(self.generate_random_name())"},{"line_number":236,"context_line":"        parameters[\"key_name\"] \u003d keypair.name"},{"line_number":237,"context_line":"        self.stack \u003d heat.main.Stack(self, self.task,"},{"line_number":238,"context_line":"                                     template, files\u003dfiles,"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a5de9d1_734880b3","line":235,"in_reply_to":"7a5de9d1_8b9e3161","updated":"2016-02-02 00:57:50.000000000","message":"Done","commit_id":"b753931e67038dd72158ea2f1ac5aa6bce85f43b"}],"rally/plugins/openstack/services/heat/main.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"bc99de5a607359e93391eab93d70b4656e5fc925","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    \"\"\"Represent heat stack."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    Sample usage:"},{"line_number":23,"context_line":"    \u003e\u003e\u003e my_stack \u003d Stack(self, \"template.yml\", parameters\u003d{\"workers\": 3}"},{"line_number":24,"context_line":"    \u003e\u003e\u003e run_benchmark(my_stack)"},{"line_number":25,"context_line":"    \u003e\u003e\u003e my_stack.update(workers\u003d4)"},{"line_number":26,"context_line":"    \u003e\u003e\u003e run_benchmark(my_stack)"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_8eb02345","line":23,"updated":"2016-01-28 11:36:45.000000000","message":"Stack(self, \"template.yml\", parameters\u003d{\"workers\": 3})\n\n\nSo \"self\" in this case is not task it is scenario or context. \n\nBut to add support for atomic actions to this we need to pass self as well. \n\nSo there are 2 ways to handle this:\n\n  - put 2 arguments self and task \n\n   - put single argument \"self\" and make implcit rule that it should have self.task parameter \n\nI believe that it is better to use first approach even if it requires a bit more code, because it\u0027s way simpler and explicit (no magic)","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"15b4a670bbf1c13d16d522a05c28f0f87116bf03","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    \"\"\"Represent heat stack."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    Sample usage:"},{"line_number":23,"context_line":"    \u003e\u003e\u003e my_stack \u003d Stack(self, \"template.yml\", parameters\u003d{\"workers\": 3}"},{"line_number":24,"context_line":"    \u003e\u003e\u003e run_benchmark(my_stack)"},{"line_number":25,"context_line":"    \u003e\u003e\u003e my_stack.update(workers\u003d4)"},{"line_number":26,"context_line":"    \u003e\u003e\u003e run_benchmark(my_stack)"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_f4b3a8e7","line":23,"in_reply_to":"7a5de9d1_8eb02345","updated":"2016-01-28 12:15:30.000000000","message":"@Sergey: Please don\u0027t use \u0027self\u0027 as a var name in the sample.\nI broke my brain before I could reach actual docstring in __init__","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"1bfcb4dcf732f76dad429fe194e99bb9924310f3","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    \"\"\"Represent heat stack."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    Sample usage:"},{"line_number":23,"context_line":"    \u003e\u003e\u003e my_stack \u003d Stack(self, \"template.yml\", parameters\u003d{\"workers\": 3}"},{"line_number":24,"context_line":"    \u003e\u003e\u003e run_benchmark(my_stack)"},{"line_number":25,"context_line":"    \u003e\u003e\u003e my_stack.update(workers\u003d4)"},{"line_number":26,"context_line":"    \u003e\u003e\u003e run_benchmark(my_stack)"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_dd6ecfc8","line":23,"in_reply_to":"7a5de9d1_8eb02345","updated":"2016-01-28 13:50:32.000000000","message":"Done","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"1bfcb4dcf732f76dad429fe194e99bb9924310f3","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    \"\"\"Represent heat stack."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    Sample usage:"},{"line_number":23,"context_line":"    \u003e\u003e\u003e my_stack \u003d Stack(self, \"template.yml\", parameters\u003d{\"workers\": 3}"},{"line_number":24,"context_line":"    \u003e\u003e\u003e run_benchmark(my_stack)"},{"line_number":25,"context_line":"    \u003e\u003e\u003e my_stack.update(workers\u003d4)"},{"line_number":26,"context_line":"    \u003e\u003e\u003e run_benchmark(my_stack)"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_3dcb6320","line":23,"in_reply_to":"7a5de9d1_f4b3a8e7","updated":"2016-01-28 13:50:32.000000000","message":"Done","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"bc99de5a607359e93391eab93d70b4656e5fc925","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            update_resource\u003dutils.get_from_manager(error_statuses),"},{"line_number":55,"context_line":"        )"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def create(self):"},{"line_number":58,"context_line":"        self.stack \u003d self.client.stacks.create("},{"line_number":59,"context_line":"            stack_name\u003dself.task.generate_random_name(),"},{"line_number":60,"context_line":"            template\u003dself.template,"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_ceb4dbf3","line":57,"updated":"2016-01-28 11:36:45.000000000","message":"this should be atomic action","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"1bfcb4dcf732f76dad429fe194e99bb9924310f3","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            update_resource\u003dutils.get_from_manager(error_statuses),"},{"line_number":55,"context_line":"        )"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def create(self):"},{"line_number":58,"context_line":"        self.stack \u003d self.client.stacks.create("},{"line_number":59,"context_line":"            stack_name\u003dself.task.generate_random_name(),"},{"line_number":60,"context_line":"            template\u003dself.template,"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_9d6937c1","line":57,"in_reply_to":"7a5de9d1_ceb4dbf3","updated":"2016-01-28 13:50:32.000000000","message":"Done","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"bc99de5a607359e93391eab93d70b4656e5fc925","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.stack \u003d self.client.stacks.get(self.stack_id)"},{"line_number":65,"context_line":"        self._wait([\"CREATE_COMPLETE\"], [\"CREATE_FAILED\"])"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def update(self, data):"},{"line_number":68,"context_line":"        self.parameters.update(data)"},{"line_number":69,"context_line":"        self.client.stacks.update(self.stack_id,"},{"line_number":70,"context_line":"                                  template\u003dself.template,"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_eeb757f3","line":67,"updated":"2016-01-28 11:36:45.000000000","message":"this as well","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"1bfcb4dcf732f76dad429fe194e99bb9924310f3","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.stack \u003d self.client.stacks.get(self.stack_id)"},{"line_number":65,"context_line":"        self._wait([\"CREATE_COMPLETE\"], [\"CREATE_FAILED\"])"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def update(self, data):"},{"line_number":68,"context_line":"        self.parameters.update(data)"},{"line_number":69,"context_line":"        self.client.stacks.update(self.stack_id,"},{"line_number":70,"context_line":"                                  template\u003dself.template,"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_5d63bfdc","line":67,"in_reply_to":"7a5de9d1_eeb757f3","updated":"2016-01-28 13:50:32.000000000","message":"Done","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"195a9b2cd09b9c307d8dbeb015b4fc055937aee4","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \"\"\""},{"line_number":42,"context_line":"        self.scenario \u003d scenario"},{"line_number":43,"context_line":"        self.task \u003d task"},{"line_number":44,"context_line":"        clients \u003d osclients.Clients(scenario.context[\"admin\"][\"credential\"])"},{"line_number":45,"context_line":"        self.client \u003d clients.heat.create_client()"},{"line_number":46,"context_line":"        self.template \u003d open(template).read()"},{"line_number":47,"context_line":"        self.files \u003d {}"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a5de9d1_aba76da5","line":44,"updated":"2016-02-01 18:35:05.000000000","message":"you should create heat stack from users, then it will be cleaned up by context.","commit_id":"b753931e67038dd72158ea2f1ac5aa6bce85f43b"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"ad6e7cd9264685676cc340246ac3d8a9812a0940","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \"\"\""},{"line_number":42,"context_line":"        self.scenario \u003d scenario"},{"line_number":43,"context_line":"        self.task \u003d task"},{"line_number":44,"context_line":"        clients \u003d osclients.Clients(scenario.context[\"admin\"][\"credential\"])"},{"line_number":45,"context_line":"        self.client \u003d clients.heat.create_client()"},{"line_number":46,"context_line":"        self.template \u003d open(template).read()"},{"line_number":47,"context_line":"        self.files \u003d {}"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a5de9d1_53e464aa","line":44,"in_reply_to":"7a5de9d1_aba76da5","updated":"2016-02-02 00:57:50.000000000","message":"Done","commit_id":"b753931e67038dd72158ea2f1ac5aa6bce85f43b"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"f0e40d5f29ecd340c052a25aa8b21f08c3582111","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class Stack(common_utils.RandomNameGeneratorMixin):"},{"line_number":21,"context_line":"    \"\"\"Represent heat stack."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    Usage:"},{"line_number":24,"context_line":"    \u003e\u003e\u003e stack \u003d Stack(scenario, task, \"template.yaml\", parameters\u003d{\"nodes\": 3})"}],"source_content_type":"text/x-python","patch_set":30,"id":"3a57f1b5_54b64ddd","line":21,"updated":"2016-02-10 13:27:13.000000000","message":"This is a kind of service, not \"stack\"","commit_id":"7ab0aa63451a3f983f862e702065dbd7984ab51d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"f0e40d5f29ecd340c052a25aa8b21f08c3582111","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    Usage:"},{"line_number":24,"context_line":"    \u003e\u003e\u003e stack \u003d Stack(scenario, task, \"template.yaml\", parameters\u003d{\"nodes\": 3})"},{"line_number":25,"context_line":"    \u003e\u003e\u003e run_benchmark(stack)"},{"line_number":26,"context_line":"    \u003e\u003e\u003e stack.update(nodes\u003d4)"},{"line_number":27,"context_line":"    \u003e\u003e\u003e run_benchmark(stack)"},{"line_number":28,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":30,"id":"3a57f1b5_f4797930","line":25,"updated":"2016-02-10 13:27:13.000000000","message":"1) What is \"run_benchmark\" ?\n2) We avoid term \"benchmark\"","commit_id":"7ab0aa63451a3f983f862e702065dbd7984ab51d"}],"rally/plugins/workload/siege.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"b5c5a88dc7f6484a1ab8fa6bf2869b222e3782fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"7a5de9d1_54babc24","updated":"2016-01-28 12:10:07.000000000","message":"This file does not represent a plugin, so why this is placed in rally/plugins/ ?","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"1bfcb4dcf732f76dad429fe194e99bb9924310f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"7a5de9d1_a842af3c","in_reply_to":"7a5de9d1_54babc24","updated":"2016-01-28 13:50:32.000000000","message":"Yes, this file is actually a resource. There is no \"resources\" directory in rally, so probably it should be created.","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"}],"samples/tasks/scenarios/workload/wordpress.json":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"f0e40d5f29ecd340c052a25aa8b21f08c3582111","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{   "},{"line_number":2,"context_line":"    \"VMTasks.runcommand_heat\": ["},{"line_number":3,"context_line":"        {   "},{"line_number":4,"context_line":"            \"runner\": {"}],"source_content_type":"application/json","patch_set":30,"id":"3a57f1b5_bed8c21e","line":1,"updated":"2016-02-10 13:27:13.000000000","message":"trailing spaces","commit_id":"7ab0aa63451a3f983f862e702065dbd7984ab51d"}],"tests/unit/plugins/openstack/context/ceilometer/test_samples.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"f0e40d5f29ecd340c052a25aa8b21f08c3582111","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        inst \u003d samples.CeilometerSampleGenerator(context)"},{"line_number":102,"context_line":"        self.assertEqual(inst.config, context[\"config\"][\"ceilometer\"])"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test__store_batch_samples(self):"},{"line_number":105,"context_line":"        tenants_count \u003d 2"},{"line_number":106,"context_line":"        users_per_tenant \u003d 2"},{"line_number":107,"context_line":"        resources_per_tenant \u003d 2"}],"source_content_type":"text/x-python","patch_set":30,"id":"3a57f1b5_b48d417d","line":104,"updated":"2016-02-10 13:27:13.000000000","message":"1) How does this test related to siege workload?\n\n2) This test should be named \"test__store_batch_samples_raises\" because it checks that exception is raised","commit_id":"7ab0aa63451a3f983f862e702065dbd7984ab51d"}],"tests/unit/plugins/openstack/workload/test_siege.py":[{"author":{"_account_id":14168,"name":"Alexandr Nevenchannyy","email":"anevenchannyy@mirantis.com","username":"anevenchannyy"},"change_message_id":"847beef733d26773f648bccd63d6c739192078b7","unresolved":false,"context_lines":[{"line_number":38,"context_line":"          {\"output_value\": [\"10.0.0.3\", \"172.16.0.159\"], \"description\": \"\","},{"line_number":39,"context_line":"                           \"output_key\": \"gate_node\"},"},{"line_number":40,"context_line":"          {\"output_value\": {"},{"line_number":41,"context_line":"              \"1\": {\"wordpress-network\": [\"10.0.0.4\"]}, "},{"line_number":42,"context_line":"              \"0\": {\"wordpress-network\": [\"10.0.0.5\"]}},"},{"line_number":43,"context_line":"              \"description\": \"No description given\", \"output_key\": \"wp_nodes\"}]"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_c125c15c","line":41,"range":{"start_line":41,"start_character":55,"end_line":41,"end_character":56},"updated":"2016-01-27 13:43:46.000000000","message":"please remove tailing space","commit_id":"968c4f044463494cc278c76da9abe1eeb255b13d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"b5c5a88dc7f6484a1ab8fa6bf2869b222e3782fb","unresolved":false,"context_lines":[{"line_number":38,"context_line":"          {\"output_value\": [\"10.0.0.3\", \"172.16.0.159\"], \"description\": \"\","},{"line_number":39,"context_line":"                           \"output_key\": \"gate_node\"},"},{"line_number":40,"context_line":"          {\"output_value\": {"},{"line_number":41,"context_line":"              \"1\": {\"wordpress-network\": [\"10.0.0.4\"]}, "},{"line_number":42,"context_line":"              \"0\": {\"wordpress-network\": [\"10.0.0.5\"]}},"},{"line_number":43,"context_line":"              \"description\": \"No description given\", \"output_key\": \"wp_nodes\"}]"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_74ba580c","line":41,"updated":"2016-01-28 12:10:07.000000000","message":"trailing space","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"1bfcb4dcf732f76dad429fe194e99bb9924310f3","unresolved":false,"context_lines":[{"line_number":38,"context_line":"          {\"output_value\": [\"10.0.0.3\", \"172.16.0.159\"], \"description\": \"\","},{"line_number":39,"context_line":"                           \"output_key\": \"gate_node\"},"},{"line_number":40,"context_line":"          {\"output_value\": {"},{"line_number":41,"context_line":"              \"1\": {\"wordpress-network\": [\"10.0.0.4\"]}, "},{"line_number":42,"context_line":"              \"0\": {\"wordpress-network\": [\"10.0.0.5\"]}},"},{"line_number":43,"context_line":"              \"description\": \"No description given\", \"output_key\": \"wp_nodes\"}]"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_a8694fc0","line":41,"in_reply_to":"7a5de9d1_74ba580c","updated":"2016-01-28 13:50:32.000000000","message":"Done","commit_id":"4e3e6eba5f69cd6251a9d6c040548b05f262ddc9"}]}
