)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d0ce427ad45afaa3f2f5e56c017ee5892a176a2e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"workload: add ZMQ agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add ZMQ agent that is to be installed on the swarm workers. They are"},{"line_number":10,"context_line":"then connect the MasterAgent."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I08807ec035c71ecba3a886946c9dade626741b3b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"da85f559_dd6518b5","line":9,"range":{"start_line":9,"start_character":19,"end_line":9,"end_character":21},"updated":"2015-11-11 10:31:56.000000000","message":"has?","commit_id":"470e0fdc5e8b72eaf2b3b069859680a701a8147d"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d0ce427ad45afaa3f2f5e56c017ee5892a176a2e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"workload: add ZMQ agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add ZMQ agent that is to be installed on the swarm workers. They are"},{"line_number":10,"context_line":"then connect the MasterAgent."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I08807ec035c71ecba3a886946c9dade626741b3b"},{"line_number":13,"context_line":"Implements: blueprint vm-workloads-framework"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"da85f559_5d72887c","line":10,"range":{"start_line":10,"start_character":5,"end_line":10,"end_character":12},"updated":"2015-11-11 10:31:56.000000000","message":"connected","commit_id":"470e0fdc5e8b72eaf2b3b069859680a701a8147d"}],"rally/plugins/agent/agent.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e3ff14747874e8449e32bba4949073e2a2f76274","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self.subscribe_socket \u003d self.init_subscribe_zmq(subscribe_url)"},{"line_number":117,"context_line":"        self.push_socket \u003d self.init_push_zmq(push_url)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def init_subscribe_zmq(self, subscribe_url):"},{"line_number":120,"context_line":"        subscribe_context \u003d zmq.Context()"},{"line_number":121,"context_line":"        subscribe_socket \u003d subscribe_context.socket(zmq.SUB)"},{"line_number":122,"context_line":"        subscribe_socket.connect(subscribe_url)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_c00c4cee","line":119,"updated":"2015-11-11 11:13:29.000000000","message":"probably it\u0027ll be ok to have this method static?","commit_id":"470e0fdc5e8b72eaf2b3b069859680a701a8147d"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e3ff14747874e8449e32bba4949073e2a2f76274","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        return subscribe_socket"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def init_push_zmq(self, push_url):"},{"line_number":128,"context_line":"        push_context \u003d zmq.Context()"},{"line_number":129,"context_line":"        push_socket \u003d push_context.socket(zmq.PUSH)"},{"line_number":130,"context_line":"        push_socket.connect(push_url)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_e0115005","line":127,"updated":"2015-11-11 11:13:29.000000000","message":"probably it\u0027ll be ok to have this method static?","commit_id":"470e0fdc5e8b72eaf2b3b069859680a701a8147d"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e3ff14747874e8449e32bba4949073e2a2f76274","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        return request"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def do_default(sef, req, resp):"},{"line_number":146,"context_line":"        raise ValueError("},{"line_number":147,"context_line":"            \"Action \u0027%s\u0027 unknown.\" % req.get(\"action\", \"unspecified\"))"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_60fec0af","line":145,"updated":"2015-11-11 11:13:29.000000000","message":"sef -\u003e self?","commit_id":"470e0fdc5e8b72eaf2b3b069859680a701a8147d"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"1a889f97259cb925ccd1936e6c333d8ef8f8a1ec","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        if req.get(\"wait\") or req.get(\"clear\"):"},{"line_number":233,"context_line":"            self.executor.thread.join()"},{"line_number":234,"context_line":"        resp[\"exit_code\"] \u003d getattr(self.executor, \"exit_code\", None)"},{"line_number":235,"context_line":"        if req.get(\"clear\"):"},{"line_number":236,"context_line":"            self.executor.clear()"},{"line_number":237,"context_line":"            self.executor \u003d None"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_6b0e688d","line":235,"updated":"2015-12-08 18:12:06.000000000","message":"if req.wait \u003d\u003d False and req.clear \u003d\u003d True then we just close files and abandon the subprocess? This may produce a zombie.","commit_id":"6aad756493720ca142b27de6f2a743fc14dda096"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"1a889f97259cb925ccd1936e6c333d8ef8f8a1ec","unresolved":false,"context_lines":[{"line_number":239,"context_line":"    def do_command(self, req, resp):"},{"line_number":240,"context_line":"        \"\"\"Execute a local command."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        Execution is done either synchronously or in a separate thread, this"},{"line_number":243,"context_line":"        is controlled by \"thread\" request paramater being True."},{"line_number":244,"context_line":"        \"\"\""},{"line_number":245,"context_line":"        if self.executor and self.executor.thread:"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_ebb81813","line":242,"updated":"2015-12-08 18:12:06.000000000","message":"Why thread is needed here? Command is running in separate process and we can do the same without any additional threads.","commit_id":"6aad756493720ca142b27de6f2a743fc14dda096"}],"tests/unit/plugins/agent/test_agent.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"e3ff14747874e8449e32bba4949073e2a2f76274","unresolved":false,"context_lines":[{"line_number":281,"context_line":"    )"},{"line_number":282,"context_line":"    @ddt.unpack"},{"line_number":283,"context_line":"    def test_recv_request(self, agent_id\u003d\"foobar\","},{"line_number":284,"context_line":"                          recv_json\u003d{}, expected\u003dTrue):"},{"line_number":285,"context_line":"        mock_init_subscribe_zmq, mock_init_push_zmq \u003d self._start_zmq_mocks()"},{"line_number":286,"context_line":"        subscribe_socket \u003d mock_init_subscribe_zmq.return_value"},{"line_number":287,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_a094a842","line":284,"updated":"2015-11-11 11:13:29.000000000","message":"is the mutable default for recv_json here intentional?","commit_id":"470e0fdc5e8b72eaf2b3b069859680a701a8147d"}]}
