)]}'
{"mistral/api/controllers/v2/execution.py":[{"author":{"_account_id":21970,"name":"Andras Kovi","email":"akovi@nokia.com","username":"andras.kovi"},"change_message_id":"a960bf77d1eee8f343752bb43fd93c577b8d223c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    stop\u003dtenacity.stop_after_attempt(10),"},{"line_number":71,"context_line":"    wait\u003dtenacity.wait_incrementing(increment\u003d100)  # 0.1 seconds"},{"line_number":72,"context_line":")"},{"line_number":73,"context_line":"def _get_workflow_execution(id, allow_none\u003dFalse):"},{"line_number":74,"context_line":"    with db_api.transaction():"},{"line_number":75,"context_line":"        if allow_none:"},{"line_number":76,"context_line":"            wf_ex \u003d db_api.load_workflow_execution(id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_f8ac8e8d","line":73,"range":{"start_line":73,"start_character":32,"end_line":73,"end_character":42},"updated":"2017-12-25 11:12:10.000000000","message":"rather \u0027should_exist\u0027 ?","commit_id":"37dc946899660f5512d746454eb9e7e30d378158"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"77c9ed84c97a29383c1911ffdaec64f60f277be9","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    stop\u003dtenacity.stop_after_attempt(10),"},{"line_number":71,"context_line":"    wait\u003dtenacity.wait_incrementing(increment\u003d100)  # 0.1 seconds"},{"line_number":72,"context_line":")"},{"line_number":73,"context_line":"def _get_workflow_execution(id, allow_none\u003dFalse):"},{"line_number":74,"context_line":"    with db_api.transaction():"},{"line_number":75,"context_line":"        if allow_none:"},{"line_number":76,"context_line":"            wf_ex \u003d db_api.load_workflow_execution(id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_cd72274a","line":73,"range":{"start_line":73,"start_character":32,"end_line":73,"end_character":42},"in_reply_to":"bf8cb3f7_f8ac8e8d","updated":"2017-12-26 06:09:06.000000000","message":"Ok, I\u0027ll rename it to \"must_exist\".","commit_id":"37dc946899660f5512d746454eb9e7e30d378158"}],"mistral/api/controllers/v2/resources.py":[{"author":{"_account_id":21970,"name":"Andras Kovi","email":"akovi@nokia.com","username":"andras.kovi"},"change_message_id":"a960bf77d1eee8f343752bb43fd93c577b8d223c","unresolved":false,"context_lines":[{"line_number":215,"context_line":"    \"\"\"Execution resource.\"\"\""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    id \u003d wtypes.text"},{"line_number":218,"context_line":"    \"execution ID. If it\u0027s passed to POST method from a client it\u0027ll \""},{"line_number":219,"context_line":"    \"be assigned to the newly created execution object, but only if \""},{"line_number":220,"context_line":"    \"an execution with such ID doesn\u0027t exist. If it exists, then the \""},{"line_number":221,"context_line":"    \"endpoint will just return execution properties in JSON.\""},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    workflow_id \u003d wtypes.text"},{"line_number":224,"context_line":"    \"workflow ID\""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_d8e0aacf","line":221,"range":{"start_line":218,"start_character":1,"end_line":221,"end_character":61},"updated":"2017-12-25 11:12:10.000000000","message":"This description is a good starting point for the REST API description but I feel like it\u0027s too much here.\nMaybe: id is immutable and auto assigned or determined by the API client on execution creation.","commit_id":"37dc946899660f5512d746454eb9e7e30d378158"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"77c9ed84c97a29383c1911ffdaec64f60f277be9","unresolved":false,"context_lines":[{"line_number":215,"context_line":"    \"\"\"Execution resource.\"\"\""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    id \u003d wtypes.text"},{"line_number":218,"context_line":"    \"execution ID. If it\u0027s passed to POST method from a client it\u0027ll \""},{"line_number":219,"context_line":"    \"be assigned to the newly created execution object, but only if \""},{"line_number":220,"context_line":"    \"an execution with such ID doesn\u0027t exist. If it exists, then the \""},{"line_number":221,"context_line":"    \"endpoint will just return execution properties in JSON.\""},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    workflow_id \u003d wtypes.text"},{"line_number":224,"context_line":"    \"workflow ID\""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_6db8bbc7","line":221,"range":{"start_line":218,"start_character":1,"end_line":221,"end_character":61},"in_reply_to":"bf8cb3f7_d8e0aacf","updated":"2017-12-26 06:09:06.000000000","message":"Well, the API docs are currently generated from the source code, from these resources. Let me insert your short description which I agree with followed by what I wrote.","commit_id":"37dc946899660f5512d746454eb9e7e30d378158"}],"mistral/engine/workflows.py":[{"author":{"_account_id":21970,"name":"Andras Kovi","email":"akovi@nokia.com","username":"andras.kovi"},"change_message_id":"76e187baee64830d2a1a27a73feba77959c401ed","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        self.validate_input(input_dict)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        self._create_execution("},{"line_number":92,"context_line":"            wf_def,"},{"line_number":93,"context_line":"            wf_ex_id,"},{"line_number":94,"context_line":"            self.prepare_input(input_dict),"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_a4e607e8","line":91,"updated":"2018-01-02 14:50:08.000000000","message":"This can now throw DUPLICATE IDENTIFIER error. There is no guarantee that this function is not called with the same ID in more than one engine at the same time.\n\nExample:\n   \n   DBError: (mysql.connector.errors.IntegrityError) 1062 (23000): Duplicate entry \u002712345\u0027 for key \u0027PRIMARY\u0027...","commit_id":"c47cbbf82574cc327721b13518445c1a5ae6ae0a"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"4f4eb7f8ffb6ed28753b7715fdf06bba252cc8f0","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        self.validate_input(input_dict)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        self._create_execution("},{"line_number":92,"context_line":"            wf_def,"},{"line_number":93,"context_line":"            wf_ex_id,"},{"line_number":94,"context_line":"            self.prepare_input(input_dict),"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_faa9608f","line":91,"in_reply_to":"9f91af0f_a4e607e8","updated":"2018-01-10 09:48:13.000000000","message":"Yes, right.","commit_id":"c47cbbf82574cc327721b13518445c1a5ae6ae0a"}],"mistral/rpc/clients.py":[{"author":{"_account_id":21970,"name":"Andras Kovi","email":"akovi@nokia.com","username":"andras.kovi"},"change_message_id":"a960bf77d1eee8f343752bb43fd93c577b8d223c","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            a workflow execution rather than action execution. It happens"},{"line_number":163,"context_line":"            when a nested workflow execution sends its result to a parent"},{"line_number":164,"context_line":"            workflow."},{"line_number":165,"context_line":"        :param async_: If True, run action in asynchronous mode (w/o waiting"},{"line_number":166,"context_line":"            for completion)."},{"line_number":167,"context_line":"        :return: Action(or workflow if wf_action\u003dTrue) execution object."},{"line_number":168,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_f8f32e9d","line":165,"range":{"start_line":165,"start_character":20,"end_line":165,"end_character":21},"updated":"2017-12-25 11:12:10.000000000","message":"not clear why","commit_id":"37dc946899660f5512d746454eb9e7e30d378158"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"77c9ed84c97a29383c1911ffdaec64f60f277be9","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            a workflow execution rather than action execution. It happens"},{"line_number":163,"context_line":"            when a nested workflow execution sends its result to a parent"},{"line_number":164,"context_line":"            workflow."},{"line_number":165,"context_line":"        :param async_: If True, run action in asynchronous mode (w/o waiting"},{"line_number":166,"context_line":"            for completion)."},{"line_number":167,"context_line":"        :return: Action(or workflow if wf_action\u003dTrue) execution object."},{"line_number":168,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_cdd547e7","line":165,"range":{"start_line":165,"start_character":20,"end_line":165,"end_character":21},"in_reply_to":"bf8cb3f7_f8f32e9d","updated":"2017-12-26 06:09:06.000000000","message":"Yep, I just added an underscore to be in sync with the actual parameter name. The parameter was called with an underscore because \"async\" was going to be a reserved word in the upcoming versions of oslo.messaging.","commit_id":"37dc946899660f5512d746454eb9e7e30d378158"},{"author":{"_account_id":21970,"name":"Andras Kovi","email":"akovi@nokia.com","username":"andras.kovi"},"change_message_id":"a960bf77d1eee8f343752bb43fd93c577b8d223c","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            a workflow execution rather than action execution. It happens"},{"line_number":197,"context_line":"            when a nested workflow execution sends its result to a parent"},{"line_number":198,"context_line":"            workflow."},{"line_number":199,"context_line":"        :param async_: If True, run action in asynchronous mode (w/o waiting"},{"line_number":200,"context_line":"            for completion)."},{"line_number":201,"context_line":"        :return: Action(or workflow if wf_action\u003dTrue) execution object."},{"line_number":202,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_58f57a82","line":199,"range":{"start_line":199,"start_character":20,"end_line":199,"end_character":21},"updated":"2017-12-25 11:12:10.000000000","message":"why?","commit_id":"37dc946899660f5512d746454eb9e7e30d378158"}],"mistral/tests/unit/api/v2/test_executions.py":[{"author":{"_account_id":21970,"name":"Andras Kovi","email":"akovi@nokia.com","username":"andras.kovi"},"change_message_id":"a960bf77d1eee8f343752bb43fd93c577b8d223c","unresolved":false,"context_lines":[{"line_number":475,"context_line":""},{"line_number":476,"context_line":"    @mock.patch.object(rpc_clients.EngineClient, \u0027start_workflow\u0027)"},{"line_number":477,"context_line":"    @mock.patch.object(db_api, \u0027load_workflow_execution\u0027)"},{"line_number":478,"context_line":"    def test_post(self, load_wf_ex_func, start_wf_func):"},{"line_number":479,"context_line":"        # NOTE: In fact, we use \"white box\" testing here to understand"},{"line_number":480,"context_line":"        # if the REST controller calls other APIs as expected. This is"},{"line_number":481,"context_line":"        # the only way of testing available with the current testing"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_18eff2b0","line":478,"range":{"start_line":478,"start_character":8,"end_line":478,"end_character":17},"updated":"2017-12-25 11:12:10.000000000","message":"test_post_auto_id","commit_id":"37dc946899660f5512d746454eb9e7e30d378158"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"77c9ed84c97a29383c1911ffdaec64f60f277be9","unresolved":false,"context_lines":[{"line_number":475,"context_line":""},{"line_number":476,"context_line":"    @mock.patch.object(rpc_clients.EngineClient, \u0027start_workflow\u0027)"},{"line_number":477,"context_line":"    @mock.patch.object(db_api, \u0027load_workflow_execution\u0027)"},{"line_number":478,"context_line":"    def test_post(self, load_wf_ex_func, start_wf_func):"},{"line_number":479,"context_line":"        # NOTE: In fact, we use \"white box\" testing here to understand"},{"line_number":480,"context_line":"        # if the REST controller calls other APIs as expected. This is"},{"line_number":481,"context_line":"        # the only way of testing available with the current testing"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_6d067b89","line":478,"range":{"start_line":478,"start_character":8,"end_line":478,"end_character":17},"in_reply_to":"bf8cb3f7_18eff2b0","updated":"2017-12-26 06:09:06.000000000","message":"Yes, agree.","commit_id":"37dc946899660f5512d746454eb9e7e30d378158"},{"author":{"_account_id":21970,"name":"Andras Kovi","email":"akovi@nokia.com","username":"andras.kovi"},"change_message_id":"a960bf77d1eee8f343752bb43fd93c577b8d223c","unresolved":false,"context_lines":[{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    @mock.patch.object(rpc_clients.EngineClient, \u0027start_workflow\u0027)"},{"line_number":509,"context_line":"    @mock.patch.object(db_api, \u0027load_workflow_execution\u0027)"},{"line_number":510,"context_line":"    def test_post_with_exec_id_exec_doesnt_exist(self, load_wf_ex_func,"},{"line_number":511,"context_line":"                                                 start_wf_func):"},{"line_number":512,"context_line":"        # NOTE: In fact, we use \"white box\" testing here to understand"},{"line_number":513,"context_line":"        # if the REST controller calls other APIs as expected. This is"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_7835de45","line":510,"range":{"start_line":510,"start_character":4,"end_line":510,"end_character":47},"updated":"2017-12-25 11:12:10.000000000","message":"it would be great if we could extract some common parts and call those functions instead of copy-pasting","commit_id":"37dc946899660f5512d746454eb9e7e30d378158"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"77c9ed84c97a29383c1911ffdaec64f60f277be9","unresolved":false,"context_lines":[{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    @mock.patch.object(rpc_clients.EngineClient, \u0027start_workflow\u0027)"},{"line_number":509,"context_line":"    @mock.patch.object(db_api, \u0027load_workflow_execution\u0027)"},{"line_number":510,"context_line":"    def test_post_with_exec_id_exec_doesnt_exist(self, load_wf_ex_func,"},{"line_number":511,"context_line":"                                                 start_wf_func):"},{"line_number":512,"context_line":"        # NOTE: In fact, we use \"white box\" testing here to understand"},{"line_number":513,"context_line":"        # if the REST controller calls other APIs as expected. This is"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_adf3239e","line":510,"range":{"start_line":510,"start_character":4,"end_line":510,"end_character":47},"in_reply_to":"bf8cb3f7_7835de45","updated":"2017-12-26 06:09:06.000000000","message":"Well, honestly I prefer readability in tests rather than conciseness. For example, we have very well optimized tests for workflow language parser and it\u0027s hell to understand how they work. And there\u0027s not too much to copy here. So I\u0027d suggest we leave it as is for now and if it creates problems for us in future we\u0027ll optimize it.","commit_id":"37dc946899660f5512d746454eb9e7e30d378158"}]}
