)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"25403069cccd1431fa8cc447428ecd2eb68bea87","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     chen-li \u003cshchenli@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-11-24 05:46:09 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Return serialized data for task result"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Convert the rally.common.db.api.task_result_get_all_by_uuid"},{"line_number":10,"context_line":"return value from rally.common.db.sqlalchemy.models.TaskResult"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"ba8a016a_4e0c5d42","line":7,"updated":"2015-11-23 14:02:28.000000000","message":"Please fix the commit message. \n\nIt should be something like: \n\n  Return serialized data from DB layer \n\n  Covert rally.common.db.api results from sqla models to plain dict object","commit_id":"a2774761134306cf4989e78d6f839c8496b3e837"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"98a98d531c3609c012a01a32cc4f24dd76455f66","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     chen-li \u003cshchenli@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-11-24 05:46:09 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Return serialized data for task result"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Convert the rally.common.db.api.task_result_get_all_by_uuid"},{"line_number":10,"context_line":"return value from rally.common.db.sqlalchemy.models.TaskResult"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"ba8a016a_89dc7f47","line":7,"in_reply_to":"ba8a016a_4e0c5d42","updated":"2015-11-23 14:08:46.000000000","message":"Done","commit_id":"a2774761134306cf4989e78d6f839c8496b3e837"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"89b02dd32a766b457cd767baa5311a5fd0bfc8a2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Transform DB layer to return dicts, not SQLAlchemy models"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Co-Authored-By: Alexander Maretskiy \u003camaretskiy@mirantis.com\u003e"},{"line_number":10,"context_line":"Co-Authored-By: Illia Khudoshyn \u003cikhudoshyn@mirantis.com\u003e"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I3c1b28f3bcd5a4889f3f1c77dd68feac2cbf0e50"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":37,"id":"5a18252c_92b6e43b","line":9,"updated":"2016-04-12 10:41:29.000000000","message":"Co-Authored-By: chen-li \u003cshchenli@cn.ibm.com\u003e","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"29b668bc98fb48c824028ee6b4791b124655f65d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Transform DB layer to return dicts, not SQLAlchemy models"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Co-Authored-By: Alexander Maretskiy \u003camaretskiy@mirantis.com\u003e"},{"line_number":10,"context_line":"Co-Authored-By: Illia Khudoshyn \u003cikhudoshyn@mirantis.com\u003e"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I3c1b28f3bcd5a4889f3f1c77dd68feac2cbf0e50"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":37,"id":"5a18252c_af72927a","line":9,"in_reply_to":"5a18252c_92b6e43b","updated":"2016-04-12 11:36:19.000000000","message":"She\u0027s the original author, see the 2nd line. The patch will be counted for her, as well, in all stats.","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"59e1f410d2640d8f15fc53977007b5455408913e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Transform DB layer to return dicts, not SQLAlchemy models"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Co-Authored-By: Alexander Maretskiy \u003camaretskiy@mirantis.com\u003e"},{"line_number":10,"context_line":"Co-Authored-By: Illia Khudoshyn \u003cikhudoshyn@mirantis.com\u003e"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I3c1b28f3bcd5a4889f3f1c77dd68feac2cbf0e50"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":37,"id":"5a18252c_a8e88811","line":9,"in_reply_to":"5a18252c_af72927a","updated":"2016-04-13 12:57:43.000000000","message":"Done","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"be3fcba2e254708746b4e299257b2e84765226d9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Transform DB layer to return dicts, not SQLAlchemy models"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Co-Authored-By: Alexander Maretskiy \u003camaretskiy@mirantis.com\u003e"},{"line_number":10,"context_line":"Co-Authored-By: Illia Khudoshyn \u003cikhudoshyn@mirantis.com\u003e"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I3c1b28f3bcd5a4889f3f1c77dd68feac2cbf0e50"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":37,"id":"5a18252c_1c35bdd9","line":9,"in_reply_to":"5a18252c_af72927a","updated":"2016-04-12 14:46:52.000000000","message":"Sometimes stackalytics calculate wrong so better to do this for sure","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"}],"rally/cli/cliutils.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"0d198bdd0aba6a51be93ddc5b2f7b8ac6d28e56b","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                    field_name \u003d field.lower().replace(\" \", \"_\")"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"                if isinstance(o, dict):"},{"line_number":148,"context_line":"                    data \u003d o.get(field_name)"},{"line_number":149,"context_line":"                else:"},{"line_number":150,"context_line":"                    data \u003d getattr(o, field_name, \"\")"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"1a7b0d38_9855d8c7","line":148,"updated":"2015-12-23 14:14:34.000000000","message":"data \u003d o.get(field_name, \"\")","commit_id":"fea0f67cec66a8d9bcc26fabb41991aff7b2cd9f"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"01dec6ef2425183116750fa809bc4eb5cda24fcf","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                    field_name \u003d field.lower().replace(\" \", \"_\")"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"                if isinstance(o, dict):"},{"line_number":148,"context_line":"                    data \u003d o.get(field_name)"},{"line_number":149,"context_line":"                else:"},{"line_number":150,"context_line":"                    data \u003d getattr(o, field_name, \"\")"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"1a7b0d38_ec70c7de","line":148,"in_reply_to":"1a7b0d38_9855d8c7","updated":"2015-12-24 01:34:03.000000000","message":"Done","commit_id":"fea0f67cec66a8d9bcc26fabb41991aff7b2cd9f"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"89b02dd32a766b457cd767baa5311a5fd0bfc8a2","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def print_list(objs, fields, formatters\u003dNone, sortby_index\u003d0,"},{"line_number":100,"context_line":"               mixed_case_fields\u003dNone, field_labels\u003dNone,"},{"line_number":101,"context_line":"               normalize_field_names\u003dFalse,"},{"line_number":102,"context_line":"               table_label\u003dNone, print_header\u003dTrue, print_border\u003dTrue,"},{"line_number":103,"context_line":"               out\u003dsys.stdout):"},{"line_number":104,"context_line":"    \"\"\"Print a list or objects as a table, one row per object."}],"source_content_type":"text/x-python","patch_set":37,"id":"5a18252c_bd03f1b7","line":101,"updated":"2016-04-12 10:41:29.000000000","message":"This is not clear for me why this extra parameter is introduced - it complicates the code but is used twice (in verify.py), in both cases field names are explicitly specified so they can be normalized in-place - see my comments in verify.py","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"29b668bc98fb48c824028ee6b4791b124655f65d","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def print_list(objs, fields, formatters\u003dNone, sortby_index\u003d0,"},{"line_number":100,"context_line":"               mixed_case_fields\u003dNone, field_labels\u003dNone,"},{"line_number":101,"context_line":"               normalize_field_names\u003dFalse,"},{"line_number":102,"context_line":"               table_label\u003dNone, print_header\u003dTrue, print_border\u003dTrue,"},{"line_number":103,"context_line":"               out\u003dsys.stdout):"},{"line_number":104,"context_line":"    \"\"\"Print a list or objects as a table, one row per object."}],"source_content_type":"text/x-python","patch_set":37,"id":"5a18252c_ef764a3d","line":101,"in_reply_to":"5a18252c_bd03f1b7","updated":"2016-04-12 11:36:19.000000000","message":"In all examples where we use \u0027normalize_field_names\u0027 not _field names_ but _column headers_ are specified. \u0027print_list\u0027 does the magic to map these headers to attribute names or dict keys.","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"58b2dbdc2eb7e6ffabd0bcdb8af1d371869e9874","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def print_list(objs, fields, formatters\u003dNone, sortby_index\u003d0,"},{"line_number":100,"context_line":"               mixed_case_fields\u003dNone, field_labels\u003dNone,"},{"line_number":101,"context_line":"               normalize_field_names\u003dFalse,"},{"line_number":102,"context_line":"               table_label\u003dNone, print_header\u003dTrue, print_border\u003dTrue,"},{"line_number":103,"context_line":"               out\u003dsys.stdout):"},{"line_number":104,"context_line":"    \"\"\"Print a list or objects as a table, one row per object."}],"source_content_type":"text/x-python","patch_set":37,"id":"5a18252c_a220e94a","line":101,"in_reply_to":"5a18252c_ef764a3d","updated":"2016-04-12 11:47:29.000000000","message":"Ok","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"}],"rally/cli/commands/verify.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"89b02dd32a766b457cd767baa5311a5fd0bfc8a2","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        if verifications:"},{"line_number":196,"context_line":"            cliutils.print_list(verifications, fields,"},{"line_number":197,"context_line":"                                normalize_field_names\u003dTrue,"},{"line_number":198,"context_line":"                                sortby_index\u003dfields.index(\"Created at\"))"},{"line_number":199,"context_line":"        else:"},{"line_number":200,"context_line":"            print(_(\"No verification was started yet. \""}],"source_content_type":"text/x-python","patch_set":37,"id":"5a18252c_9deef5ea","line":197,"updated":"2016-04-12 10:41:29.000000000","message":"Why not simply normalize values of `fields\u0027 here, at L188?","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"1ebaa721d467a68b45b5355e7a8c34dcb31e6da2","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        if verifications:"},{"line_number":196,"context_line":"            cliutils.print_list(verifications, fields,"},{"line_number":197,"context_line":"                                normalize_field_names\u003dTrue,"},{"line_number":198,"context_line":"                                sortby_index\u003dfields.index(\"Created at\"))"},{"line_number":199,"context_line":"        else:"},{"line_number":200,"context_line":"            print(_(\"No verification was started yet. \""}],"source_content_type":"text/x-python","patch_set":37,"id":"5a18252c_42f8f5e5","line":197,"in_reply_to":"5a18252c_4f3ade37","updated":"2016-04-12 11:47:02.000000000","message":"Ok","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"29b668bc98fb48c824028ee6b4791b124655f65d","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        if verifications:"},{"line_number":196,"context_line":"            cliutils.print_list(verifications, fields,"},{"line_number":197,"context_line":"                                normalize_field_names\u003dTrue,"},{"line_number":198,"context_line":"                                sortby_index\u003dfields.index(\"Created at\"))"},{"line_number":199,"context_line":"        else:"},{"line_number":200,"context_line":"            print(_(\"No verification was started yet. \""}],"source_content_type":"text/x-python","patch_set":37,"id":"5a18252c_4f3ade37","line":197,"in_reply_to":"5a18252c_9deef5ea","updated":"2016-04-12 11:36:19.000000000","message":"pls see my answer in cliutils.py. These provided are not \u0027fields\u0027 but table column captions, as they get printed.\nThese captions look pretty nice and user-friendly. I would prefer to see \u0027Deployment UUID\u0027 rather then \u0027deployment-uuid\u0027.","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"89b02dd32a766b457cd767baa5311a5fd0bfc8a2","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        total_fields \u003d [\"UUID\", \"Deployment UUID\", \"Set name\", \"Tests\","},{"line_number":271,"context_line":"                        \"Failures\", \"Created at\", \"Status\"]"},{"line_number":272,"context_line":"        cliutils.print_list([verification], fields\u003dtotal_fields,"},{"line_number":273,"context_line":"                            normalize_field_names\u003dTrue)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        print(_(\"\\nTests:\\n\"))"},{"line_number":276,"context_line":"        fields \u003d [\"name\", \"time\", \"status\"]"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a18252c_5dce1d5b","line":273,"updated":"2016-04-12 10:41:29.000000000","message":"same here","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"}],"rally/common/db/api.py":[{"author":{"_account_id":6835,"name":"Kun Huang","email":"gareth@openstacker.org","username":"academicgareth"},"change_message_id":"1590c3465bd1dba034831be6e5ca12badfc1b45e","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    \"\"\"Get list of task results."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    :param task_uuid: string with UUID of Task instance."},{"line_number":185,"context_line":"    :returns: list instances of TaskResult."},{"line_number":186,"context_line":"    \"\"\""},{"line_number":187,"context_line":"    return get_impl().task_result_get_all_by_uuid(task_uuid)"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_651ae219","line":185,"updated":"2015-11-16 14:40:26.000000000","message":"I\u0027m okay to add to_dict() here. But I think you need modify the return statement, which is dict here, not instance.\n\nAnd is it possible to move joinedload there too?","commit_id":"5ef7acd54e3aa957a405fd13dddb289a5f67a16f"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"9f045deea99cfb8b921b066ed504887f1ce31035","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    \"\"\"Get list of task results."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    :param task_uuid: string with UUID of Task instance."},{"line_number":185,"context_line":"    :returns: list instances of TaskResult."},{"line_number":186,"context_line":"    \"\"\""},{"line_number":187,"context_line":"    return get_impl().task_result_get_all_by_uuid(task_uuid)"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_45f31e74","line":185,"in_reply_to":"ba8a016a_651ae219","updated":"2015-11-16 14:46:26.000000000","message":"return value is still list, only the  member in the list is dict (not object) now.\n\njoinedload is import from  \"sqlalchemy.orm\", so I think it should be stay in sqlalchemy/api.py","commit_id":"5ef7acd54e3aa957a405fd13dddb289a5f67a16f"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"90fae9944dc9d3f98e3ea133c8c606f6fe5297d9","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            return [conv(i) for i in data]"},{"line_number":62,"context_line":"        if hasattr(data, \"_as_dict\"):"},{"line_number":63,"context_line":"            result \u003d data._as_dict()"},{"line_number":64,"context_line":"            for k, v in result.items():"},{"line_number":65,"context_line":"                result[k] \u003d conv(v)"},{"line_number":66,"context_line":"            return result"},{"line_number":67,"context_line":"        if hasattr(data, \"strftime\"):"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba8a016a_035ab583","line":64,"updated":"2015-11-23 11:40:20.000000000","message":"Please use six.iteritems(result) here.","commit_id":"5f1ade500d0325cc8e0e0d477df8f89ee2847f34"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"d96a69ba475ea216a43ce03ef5d387357216c465","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            return [conv(i) for i in data]"},{"line_number":62,"context_line":"        if hasattr(data, \"_as_dict\"):"},{"line_number":63,"context_line":"            result \u003d data._as_dict()"},{"line_number":64,"context_line":"            for k, v in result.items():"},{"line_number":65,"context_line":"                result[k] \u003d conv(v)"},{"line_number":66,"context_line":"            return result"},{"line_number":67,"context_line":"        if hasattr(data, \"strftime\"):"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba8a016a_83abfe1d","line":64,"in_reply_to":"ba8a016a_035ab583","updated":"2015-11-23 13:44:39.000000000","message":"Done","commit_id":"5f1ade500d0325cc8e0e0d477df8f89ee2847f34"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"fde6bd788ad2afe85413c6330c5c811944d9c95d","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    return get_impl().task_delete(uuid, status\u003dstatus)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"@convert_to_simple_types"},{"line_number":200,"context_line":"def task_result_get_all_by_uuid(task_uuid):"},{"line_number":201,"context_line":"    \"\"\"Get list of task results."},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"ba8a016a_a034d1dd","line":199,"updated":"2015-11-24 03:01:27.000000000","message":"Why you are converting only this method, you should convert all methods from this file..","commit_id":"5f34024d3d3c0f55b6dc7b72787eeccce2662b15"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"6c4cb5735ae95eae18fca23d2307be5a84e5eef2","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    return get_impl().task_delete(uuid, status\u003dstatus)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"@convert_to_simple_types"},{"line_number":200,"context_line":"def task_result_get_all_by_uuid(task_uuid):"},{"line_number":201,"context_line":"    \"\"\"Get list of task results."},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9a8ffd7b_9861a7d5","line":199,"in_reply_to":"9a8ffd7b_7e949436","updated":"2015-11-28 00:00:07.000000000","message":"Nobody is using sqlalchemy models","commit_id":"5f34024d3d3c0f55b6dc7b72787eeccce2662b15"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"d5b956ec2ff440925e81e49db62197b54b1d1b6a","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    return get_impl().task_delete(uuid, status\u003dstatus)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"@convert_to_simple_types"},{"line_number":200,"context_line":"def task_result_get_all_by_uuid(task_uuid):"},{"line_number":201,"context_line":"    \"\"\"Get list of task results."},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9a8ffd7b_7e949436","line":199,"in_reply_to":"ba8a016a_a034d1dd","updated":"2015-11-25 01:37:48.000000000","message":"Hi Boris,\n\nWe started this change because we met issues when we try to dump the test results to json format.\n\nAlso, there are many other place still using sql models, such as rally.common.objects,  rally.cli.cliutils and so on.\n\nSo, do we have a reason to change all other places to dict too ?\n\nIf no, change only this method is enough.\n\nIf yes, let\u0027s do that in separate changes, because as you can see, I tried, it is not as trivial as I thought.","commit_id":"5f34024d3d3c0f55b6dc7b72787eeccce2662b15"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"956c07133d00414bae0d241d6f7aaaedb9e39d17","unresolved":false,"context_lines":[{"line_number":56,"context_line":"IMPL \u003d None"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"def convert_to_simple_types(fn):"},{"line_number":60,"context_line":"    def conv(data):"},{"line_number":61,"context_line":"        if isinstance(data, list):"},{"line_number":62,"context_line":"            return [conv(i) for i in data]"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a8ffd7b_187b777c","line":59,"updated":"2015-11-28 00:05:15.000000000","message":"The name should be \"serialize\" I don\u0027t know what means simple_types","commit_id":"43533056f05b071b437c29d7c50714dd57e17741"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"956c07133d00414bae0d241d6f7aaaedb9e39d17","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    return get_impl().task_delete(uuid, status\u003dstatus)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"@convert_to_simple_types"},{"line_number":200,"context_line":"def task_result_get_all_by_uuid(task_uuid):"},{"line_number":201,"context_line":"    \"\"\"Get list of task results."},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9a8ffd7b_78ef231e","line":199,"updated":"2015-11-28 00:05:15.000000000","message":"This should be added to all methods. Pervious comment that \"sqla\" models are used somewhere else that this module is invalid.\nModels are used only here (or at least they must be used here).","commit_id":"43533056f05b071b437c29d7c50714dd57e17741"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"10f7cd3ba680551a4377ea27438f0510d3add9a4","unresolved":false,"context_lines":[{"line_number":56,"context_line":"IMPL \u003d None"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"def serialize(fn):"},{"line_number":60,"context_line":"    def conv(data):"},{"line_number":61,"context_line":"        if isinstance(data, list):"},{"line_number":62,"context_line":"            return [conv(i) for i in data]"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a7e1126_5f6e66ca","line":59,"updated":"2015-12-17 12:50:23.000000000","message":"Just to consider - `serialize\u0027 seems to be not the exact term since python serialization is `pickling\u0027, and this is a transformation into simple types suitable for `json.dump\u0027.\n\nIMHO word `serializeable\u0027 looks more exact. This suggestion is not critical, just a point of view.","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"ae3a6f39bd6f5dcc16f0ee4ebb5c6b46f33e7f9e","unresolved":false,"context_lines":[{"line_number":56,"context_line":"IMPL \u003d None"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"def serialize(fn):"},{"line_number":60,"context_line":"    def conv(data):"},{"line_number":61,"context_line":"        if isinstance(data, list):"},{"line_number":62,"context_line":"            return [conv(i) for i in data]"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a7b0d38_526200da","line":59,"in_reply_to":"3a7e1126_5f6e66ca","updated":"2015-12-23 04:26:43.000000000","message":"Done","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"10f7cd3ba680551a4377ea27438f0510d3add9a4","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    return get_impl().task_get_status(uuid)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"def task_get_detailed_last():"},{"line_number":125,"context_line":"    \"\"\"Returns the most recently created task.\"\"\""},{"line_number":126,"context_line":"    return get_impl().task_get_detailed_last()"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"3a7e1126_acff2a00","line":124,"updated":"2015-12-17 12:50:23.000000000","message":"@serialize","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"ae3a6f39bd6f5dcc16f0ee4ebb5c6b46f33e7f9e","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    return get_impl().task_get_status(uuid)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"def task_get_detailed_last():"},{"line_number":125,"context_line":"    \"\"\"Returns the most recently created task.\"\"\""},{"line_number":126,"context_line":"    return get_impl().task_get_detailed_last()"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1a7b0d38_3c5e26ea","line":124,"in_reply_to":"3a7e1126_acff2a00","updated":"2015-12-23 04:26:43.000000000","message":"Done","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"10f7cd3ba680551a4377ea27438f0510d3add9a4","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    return get_impl().task_get_detailed_last()"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"def task_get_detailed(uuid):"},{"line_number":130,"context_line":"    \"\"\"Returns task with results by uuid."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    :param uuid: UUID of the task."}],"source_content_type":"text/x-python","patch_set":23,"id":"3a7e1126_4cf7a6d3","line":129,"updated":"2015-12-17 12:50:23.000000000","message":"@serialize","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"ae3a6f39bd6f5dcc16f0ee4ebb5c6b46f33e7f9e","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    return get_impl().task_get_detailed_last()"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"def task_get_detailed(uuid):"},{"line_number":130,"context_line":"    \"\"\"Returns task with results by uuid."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    :param uuid: UUID of the task."}],"source_content_type":"text/x-python","patch_set":23,"id":"1a7b0d38_ff0bb07b","line":129,"in_reply_to":"3a7e1126_4cf7a6d3","updated":"2015-12-23 04:26:43.000000000","message":"Done","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"10f7cd3ba680551a4377ea27438f0510d3add9a4","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                                         status)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"def task_list(status\u003dNone, deployment\u003dNone):"},{"line_number":173,"context_line":"    \"\"\"Get a list of tasks."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    :param status: Task status to filter the returned list on. If set to"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a7e1126_69129464","line":172,"updated":"2015-12-17 12:50:23.000000000","message":"@serialize","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"69732da4d862c0372b03cbe4220329d15e4709ba","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                                         status)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"def task_list(status\u003dNone, deployment\u003dNone):"},{"line_number":173,"context_line":"    \"\"\"Get a list of tasks."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    :param status: Task status to filter the returned list on. If set to"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a7b0d38_8feef920","line":172,"in_reply_to":"1a7b0d38_9aee3aeb","updated":"2015-12-23 08:38:36.000000000","message":"Done","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"ae3a6f39bd6f5dcc16f0ee4ebb5c6b46f33e7f9e","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                                         status)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"def task_list(status\u003dNone, deployment\u003dNone):"},{"line_number":173,"context_line":"    \"\"\"Get a list of tasks."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    :param status: Task status to filter the returned list on. If set to"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a7b0d38_9aee3aeb","line":172,"in_reply_to":"3a7e1126_69129464","updated":"2015-12-23 04:26:43.000000000","message":"Working In Progress","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"10f7cd3ba680551a4377ea27438f0510d3add9a4","unresolved":false,"context_lines":[{"line_number":237,"context_line":"    return get_impl().deployment_delete(uuid)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"def deployment_get(deployment):"},{"line_number":241,"context_line":"    \"\"\"Get a deployment by UUID."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    :param deployment: UUID or name of the deployment."}],"source_content_type":"text/x-python","patch_set":23,"id":"3a7e1126_49aeb82f","line":240,"updated":"2015-12-17 12:50:23.000000000","message":"@serialize","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"69732da4d862c0372b03cbe4220329d15e4709ba","unresolved":false,"context_lines":[{"line_number":237,"context_line":"    return get_impl().deployment_delete(uuid)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"def deployment_get(deployment):"},{"line_number":241,"context_line":"    \"\"\"Get a deployment by UUID."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    :param deployment: UUID or name of the deployment."}],"source_content_type":"text/x-python","patch_set":23,"id":"1a7b0d38_ef4bfd29","line":240,"in_reply_to":"3a7e1126_49aeb82f","updated":"2015-12-23 08:38:36.000000000","message":"Done","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"10f7cd3ba680551a4377ea27438f0510d3add9a4","unresolved":false,"context_lines":[{"line_number":258,"context_line":"    return get_impl().deployment_update(uuid, values)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"def deployment_list(status\u003dNone, parent_uuid\u003dNone, name\u003dNone):"},{"line_number":262,"context_line":"    \"\"\"Get list of deployments."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    :param status: if None returns any deployments with any status."}],"source_content_type":"text/x-python","patch_set":23,"id":"3a7e1126_29dc8ce3","line":261,"updated":"2015-12-17 12:50:23.000000000","message":"@serialize","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"69732da4d862c0372b03cbe4220329d15e4709ba","unresolved":false,"context_lines":[{"line_number":258,"context_line":"    return get_impl().deployment_update(uuid, values)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"def deployment_list(status\u003dNone, parent_uuid\u003dNone, name\u003dNone):"},{"line_number":262,"context_line":"    \"\"\"Get list of deployments."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    :param status: if None returns any deployments with any status."}],"source_content_type":"text/x-python","patch_set":23,"id":"1a7b0d38_4f46d124","line":261,"in_reply_to":"3a7e1126_29dc8ce3","updated":"2015-12-23 08:38:36.000000000","message":"Done","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"10f7cd3ba680551a4377ea27438f0510d3add9a4","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    return get_impl().verification_update(uuid, values)"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"def verification_list(status\u003dNone):"},{"line_number":346,"context_line":"    \"\"\"Get a list of verifications."},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    :param status: Verification status to filter the returned list on."}],"source_content_type":"text/x-python","patch_set":23,"id":"3a7e1126_0c1e7eba","line":345,"updated":"2015-12-17 12:50:23.000000000","message":"@serialize","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"69732da4d862c0372b03cbe4220329d15e4709ba","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    return get_impl().verification_update(uuid, values)"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"def verification_list(status\u003dNone):"},{"line_number":346,"context_line":"    \"\"\"Get a list of verifications."},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    :param status: Verification status to filter the returned list on."}],"source_content_type":"text/x-python","patch_set":23,"id":"1a7b0d38_95ee0821","line":345,"in_reply_to":"3a7e1126_0c1e7eba","updated":"2015-12-23 08:38:36.000000000","message":"Done","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"10f7cd3ba680551a4377ea27438f0510d3add9a4","unresolved":false,"context_lines":[{"line_number":351,"context_line":"    return get_impl().verification_list(status\u003dstatus)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"def verification_result_get(verification_uuid):"},{"line_number":355,"context_line":"    \"\"\"Get dict of verification results."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    :param verification_uuid: string with UUID of Verification instance."}],"source_content_type":"text/x-python","patch_set":23,"id":"3a7e1126_0ca8be1e","line":354,"updated":"2015-12-17 12:50:23.000000000","message":"@serialize","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"69732da4d862c0372b03cbe4220329d15e4709ba","unresolved":false,"context_lines":[{"line_number":351,"context_line":"    return get_impl().verification_list(status\u003dstatus)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"def verification_result_get(verification_uuid):"},{"line_number":355,"context_line":"    \"\"\"Get dict of verification results."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    :param verification_uuid: string with UUID of Verification instance."}],"source_content_type":"text/x-python","patch_set":23,"id":"1a7b0d38_35f3940c","line":354,"in_reply_to":"3a7e1126_0ca8be1e","updated":"2015-12-23 08:38:36.000000000","message":"Done","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"1d868aac8349634d1b0b79ac3e2ef9886e659c11","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                             six.text_type,"},{"line_number":70,"context_line":"                             dt.date,"},{"line_number":71,"context_line":"                             dt.time,"},{"line_number":72,"context_line":"                             dt.datetime,"},{"line_number":73,"context_line":"                             float,"},{"line_number":74,"context_line":"                             )):"},{"line_number":75,"context_line":"            return data"}],"source_content_type":"text/x-python","patch_set":38,"id":"5a18252c_19ff5068","line":72,"updated":"2016-04-13 13:45:15.000000000","message":"datetime.datetime can be removed because it has datetime.date in bases","commit_id":"8cc9b7335bfa738a718e02ba9a8ddf368c959b9d"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"a6ee14ea6375aa1380301a68f91dd3a2e967390c","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                             six.text_type,"},{"line_number":70,"context_line":"                             dt.date,"},{"line_number":71,"context_line":"                             dt.time,"},{"line_number":72,"context_line":"                             dt.datetime,"},{"line_number":73,"context_line":"                             float,"},{"line_number":74,"context_line":"                             )):"},{"line_number":75,"context_line":"            return data"}],"source_content_type":"text/x-python","patch_set":38,"id":"5a18252c_5bc53759","line":72,"in_reply_to":"5a18252c_19ff5068","updated":"2016-04-13 15:14:14.000000000","message":"Done","commit_id":"8cc9b7335bfa738a718e02ba9a8ddf368c959b9d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"1d868aac8349634d1b0b79ac3e2ef9886e659c11","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            return data"},{"line_number":76,"context_line":"        if isinstance(data, dict):"},{"line_number":77,"context_line":"            return {k: conv(v) for k, v in six.iteritems(data)}"},{"line_number":78,"context_line":"        if isinstance(data, list):"},{"line_number":79,"context_line":"            return [conv(i) for i in data]"},{"line_number":80,"context_line":"        if hasattr(data, \"_as_dict\"):"},{"line_number":81,"context_line":"            result \u003d data._as_dict()"}],"source_content_type":"text/x-python","patch_set":38,"id":"5a18252c_be4d629b","line":78,"updated":"2016-04-13 13:45:15.000000000","message":"isinstance(data, (list, tuple))","commit_id":"8cc9b7335bfa738a718e02ba9a8ddf368c959b9d"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"a6ee14ea6375aa1380301a68f91dd3a2e967390c","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            return data"},{"line_number":76,"context_line":"        if isinstance(data, dict):"},{"line_number":77,"context_line":"            return {k: conv(v) for k, v in six.iteritems(data)}"},{"line_number":78,"context_line":"        if isinstance(data, list):"},{"line_number":79,"context_line":"            return [conv(i) for i in data]"},{"line_number":80,"context_line":"        if hasattr(data, \"_as_dict\"):"},{"line_number":81,"context_line":"            result \u003d data._as_dict()"}],"source_content_type":"text/x-python","patch_set":38,"id":"5a18252c_bba28bac","line":78,"in_reply_to":"5a18252c_be4d629b","updated":"2016-04-13 15:14:14.000000000","message":"Done","commit_id":"8cc9b7335bfa738a718e02ba9a8ddf368c959b9d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"1d868aac8349634d1b0b79ac3e2ef9886e659c11","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                result[k] \u003d conv(v)"},{"line_number":84,"context_line":"            return result"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        raise exceptions.InvalidArgumentsException("},{"line_number":87,"context_line":"            message\u003d\"Can not serialize {}\".format(data))"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def wrapper(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":38,"id":"5a18252c_3ed792c0","line":86,"updated":"2016-04-13 13:45:15.000000000","message":"ValueError is much better\n\nInvalidArgumentsException is about CLI and json input file","commit_id":"8cc9b7335bfa738a718e02ba9a8ddf368c959b9d"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"a6ee14ea6375aa1380301a68f91dd3a2e967390c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                result[k] \u003d conv(v)"},{"line_number":84,"context_line":"            return result"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        raise exceptions.InvalidArgumentsException("},{"line_number":87,"context_line":"            message\u003d\"Can not serialize {}\".format(data))"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def wrapper(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":38,"id":"5a18252c_fbac03a2","line":86,"in_reply_to":"5a18252c_3ed792c0","updated":"2016-04-13 15:14:14.000000000","message":"Done","commit_id":"8cc9b7335bfa738a718e02ba9a8ddf368c959b9d"}],"rally/common/db/sqlalchemy/api.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8e662d0124e3b9b2afdb289803aaf89e2e4081f6","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        result.save()"},{"line_number":192,"context_line":"        return result"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def task_result_get_all_by_uuid(self, uuid):"},{"line_number":195,"context_line":"        task_result \u003d (self.model_query(models.TaskResult)."},{"line_number":196,"context_line":"                       filter_by(task_uuid\u003duuid).all())"},{"line_number":197,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_ec5de415","line":194,"updated":"2015-11-06 04:58:36.000000000","message":"So I would like to prefer to make one time in one place serialization or at least decorator that is doing serialization, without fixing implementation of all methods.","commit_id":"e3cc12ee5091b75de5635bbfc284453191b0fdcb"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"a02ea80c97d63bfe1829b0006c40a055de2d19a4","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    @utils.to_dict()"},{"line_number":196,"context_line":"    def task_result_get_all_by_uuid(self, uuid):"},{"line_number":197,"context_line":"        return (self.model_query(models.TaskResult)."},{"line_number":198,"context_line":"                filter_by(task_uuid\u003duuid).all())"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def _deployment_get(self, deployment, session\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_04a6f452","line":197,"updated":"2015-11-06 10:52:37.000000000","message":"return [result.to_dict() for result in \n self.model_query(models.TaskResult\n ).filter_by(task_uuid\u003duuid).all()]\n\n\nomg i wrote this, and though that boris42 decided to use a decorator, and was right","commit_id":"6c72f5d7edcc3c1454aa638e3c9e99e2b8033958"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"ab59993f58c098c071260c7659a950cccbff9c1b","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        result.save()"},{"line_number":194,"context_line":"        return result"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    @utils.object_to_dict(models.convert_model_to_dict)"},{"line_number":197,"context_line":"    def task_result_get_all_by_uuid(self, uuid):"},{"line_number":198,"context_line":"        return (self.model_query(models.TaskResult)."},{"line_number":199,"context_line":"                filter_by(task_uuid\u003duuid).options(joinedload(\"task\")).all())"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_580ce340","line":196,"updated":"2015-11-18 15:28:12.000000000","message":"There are two main issues:\n\n1) this does not actually serialize data completely - `datetime\u0027 objects are not converted to strings so json.dumps() will fail with this data\n\n2) this approach is overcomplicated and can be done simpler  by changes in this module only. Working example: http://paste.openstack.org/show/479264/","commit_id":"695c0dade3567ba631b970a3752171333e4f48c9"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"6157a470142a83138a8074c1d5c7710a6201eacf","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        result.save()"},{"line_number":194,"context_line":"        return result"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    @utils.object_to_dict(models.convert_model_to_dict)"},{"line_number":197,"context_line":"    def task_result_get_all_by_uuid(self, uuid):"},{"line_number":198,"context_line":"        return (self.model_query(models.TaskResult)."},{"line_number":199,"context_line":"                filter_by(task_uuid\u003duuid).options(joinedload(\"task\")).all())"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_3247a1bd","line":196,"in_reply_to":"ba8a016a_580ce340","updated":"2015-11-19 01:27:36.000000000","message":"Updated, with commit message too. You have done the most work here.  :)\n\nThank a lot for the kindly help !","commit_id":"695c0dade3567ba631b970a3752171333e4f48c9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"956c07133d00414bae0d241d6f7aaaedb9e39d17","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def task_result_get_all_by_uuid(self, uuid):"},{"line_number":196,"context_line":"        return (self.model_query(models.TaskResult)."},{"line_number":197,"context_line":"                filter_by(task_uuid\u003duuid).options(joinedload(\"task\")).all())"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def _deployment_get(self, deployment, session\u003dNone):"},{"line_number":200,"context_line":"        stored_deployment \u003d self.model_query("}],"source_content_type":"text/x-python","patch_set":22,"id":"9a8ffd7b_589edfb9","line":197,"updated":"2015-11-28 00:05:15.000000000","message":"This change has big impact, and must be documented.","commit_id":"43533056f05b071b437c29d7c50714dd57e17741"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"a55d1e45e55b28f35d8d0799b1ac0ffb4315d241","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def task_result_get_all_by_uuid(self, uuid):"},{"line_number":196,"context_line":"        return (self.model_query(models.TaskResult)."},{"line_number":197,"context_line":"                filter_by(task_uuid\u003duuid).options(joinedload(\"task\")).all())"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def _deployment_get(self, deployment, session\u003dNone):"},{"line_number":200,"context_line":"        stored_deployment \u003d self.model_query("}],"source_content_type":"text/x-python","patch_set":22,"id":"9a8ffd7b_859492e8","line":197,"in_reply_to":"9a8ffd7b_52da2918","updated":"2015-12-01 03:14:03.000000000","message":"This is added because when we do serialize, it need to get \"task\", to make unit test pass.\n\nActually, I get questions about when to do serialize. For the discussion about what to use inside rally code, object or dict, I agree with @Kun Huang, and\tprefer using object, just like most other project do. \n\nAnd, I\u0027m confused about module objects/, if it doesn\u0027t mean to cover all db access, then what it is used for ?","commit_id":"43533056f05b071b437c29d7c50714dd57e17741"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"a8d9d042721776a120092257526ebee105fcf6f9","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def task_result_get_all_by_uuid(self, uuid):"},{"line_number":196,"context_line":"        return (self.model_query(models.TaskResult)."},{"line_number":197,"context_line":"                filter_by(task_uuid\u003duuid).options(joinedload(\"task\")).all())"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def _deployment_get(self, deployment, session\u003dNone):"},{"line_number":200,"context_line":"        stored_deployment \u003d self.model_query("}],"source_content_type":"text/x-python","patch_set":22,"id":"9a8ffd7b_926bb1b6","line":197,"in_reply_to":"9a8ffd7b_589edfb9","updated":"2015-11-30 01:24:37.000000000","message":"Could you elaborate a little more? what impact ?\nWhere to update document ?","commit_id":"43533056f05b071b437c29d7c50714dd57e17741"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"cef87c2eff8cd32c13910da28bc8a47b09eb7f5b","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def task_result_get_all_by_uuid(self, uuid):"},{"line_number":196,"context_line":"        return (self.model_query(models.TaskResult)."},{"line_number":197,"context_line":"                filter_by(task_uuid\u003duuid).options(joinedload(\"task\")).all())"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def _deployment_get(self, deployment, session\u003dNone):"},{"line_number":200,"context_line":"        stored_deployment \u003d self.model_query("}],"source_content_type":"text/x-python","patch_set":22,"id":"9a8ffd7b_52da2918","line":197,"in_reply_to":"9a8ffd7b_926bb1b6","updated":"2015-11-30 02:18:50.000000000","message":"You are changing the SQL request that is generated by this SqlAlchmeny expression. \n\nFirst one used lazy load mechanism this one is using eager (does JOIN) in our case I believe this does JOIN which may be bad in our case.","commit_id":"43533056f05b071b437c29d7c50714dd57e17741"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"be3fcba2e254708746b4e299257b2e84765226d9","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def wrapper(*args, **kwargs):"},{"line_number":95,"context_line":"        deployment \u003d fn(*args, **kwargs)"},{"line_number":96,"context_line":"        return fix(deployment)"},{"line_number":97,"context_line":"    return wrapper"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"class Connection(object):"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a18252c_6d04f97d","line":97,"updated":"2016-04-12 14:46:52.000000000","message":"Sorry bu I forget why we do this here( Maybe we will add the reason to commit msg?","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"87cfa691f6de632d52ef307b1346ce73d9336484","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def wrapper(*args, **kwargs):"},{"line_number":95,"context_line":"        deployment \u003d fn(*args, **kwargs)"},{"line_number":96,"context_line":"        return fix(deployment)"},{"line_number":97,"context_line":"    return wrapper"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"class Connection(object):"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a18252c_c6e18b9c","line":97,"in_reply_to":"5a18252c_6d04f97d","updated":"2016-04-13 07:23:39.000000000","message":"I\u0027ll write more detailed comment/docstring","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"be3fcba2e254708746b4e299257b2e84765226d9","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        return query"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    @db_api.serialize"},{"line_number":267,"context_line":"    def task_list(self, status\u003dNone, deployment\u003dNone):"},{"line_number":268,"context_line":"        query \u003d self.model_query(models.Task)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        filters \u003d {}"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a18252c_53bba0c4","line":267,"updated":"2016-04-12 14:46:52.000000000","message":"Do we need to deal with https://github.com/openstack/rally/blob/master/rally/common/objects/task.py#L330 We return dicts then wrap them in Task object and then try to use to_dict() to convert from object to dict https://github.com/openstack/rally/blob/master/rally/cli/commands/task.py#L511 . What is the logic?)","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"1d868aac8349634d1b0b79ac3e2ef9886e659c11","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    return config"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"def fix_deployment(fn):"},{"line_number":76,"context_line":"    # NOTE(ikhudoshyn): Remove this once new deployment model"},{"line_number":77,"context_line":"    # get adopted."},{"line_number":78,"context_line":"    # New DB schema for Deployment was introduced in"}],"source_content_type":"text/x-python","patch_set":38,"id":"5a18252c_792be494","line":75,"updated":"2016-04-13 13:45:15.000000000","message":"This is not covered by unit tests","commit_id":"8cc9b7335bfa738a718e02ba9a8ddf368c959b9d"}],"rally/common/db/sqlalchemy/models.py":[{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"a02ea80c97d63bfe1829b0006c40a055de2d19a4","unresolved":false,"context_lines":[{"line_number":183,"context_line":"                               primaryjoin\u003d\"TaskResult.task_uuid \u003d\u003d Task.uuid\")"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def to_dict(self):"},{"line_number":186,"context_line":"        d \u003d {}"},{"line_number":187,"context_line":"        d[\"id\"] \u003d self.id"},{"line_number":188,"context_line":"        d[\"key\"] \u003d self.key"},{"line_number":189,"context_line":"        d[\"data\"] \u003d self.data"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_443f1c24","line":186,"updated":"2015-11-06 10:52:37.000000000","message":"...\n\n  d \u003d {\"id\": self.id,\n       \"key\": self.key, ....","commit_id":"6c72f5d7edcc3c1454aa638e3c9e99e2b8033958"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"a02ea80c97d63bfe1829b0006c40a055de2d19a4","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        d[\"task_uuid\"] \u003d self.task_uuid"},{"line_number":191,"context_line":"        try:"},{"line_number":192,"context_line":"            d[\"task\"] \u003d self.task"},{"line_number":193,"context_line":"        except Exception:"},{"line_number":194,"context_line":"            d[\"task\"] \u003d None"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        return d"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_2470d80a","line":193,"updated":"2015-11-06 10:52:37.000000000","message":"Please catch here more specific exception.\n\nBtw, I\u0027m not sure what may be wrong here? Task is deleted but results still here?","commit_id":"6c72f5d7edcc3c1454aa638e3c9e99e2b8033958"}],"rally/common/objects/task.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"be3fcba2e254708746b4e299257b2e84765226d9","unresolved":false,"context_lines":[{"line_number":308,"context_line":"        return self.task[key]"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def to_dict(self):"},{"line_number":311,"context_line":"        db_task \u003d self.task"},{"line_number":312,"context_line":"        deployment_name \u003d db.deployment_get("},{"line_number":313,"context_line":"            self.task[\"deployment_uuid\"])[\"name\"]"},{"line_number":314,"context_line":"        db_task[\"deployment_name\"] \u003d deployment_name"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a18252c_6837c7b0","line":311,"updated":"2016-04-12 14:46:52.000000000","message":"I can\u0027t understand why we use additional variable here. Why not:\ndeployment_name \u003d db.deployment_get(self.task[\"deployment_uuid\"])[\"name\"]\nself.task[\"deployment_name\"] \u003d deployment_name\nAlso I can\u0027t understand Why we need this method https://github.com/openstack/rally/blob/master/rally/common/db/api.py#L141","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"87cfa691f6de632d52ef307b1346ce73d9336484","unresolved":false,"context_lines":[{"line_number":308,"context_line":"        return self.task[key]"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def to_dict(self):"},{"line_number":311,"context_line":"        db_task \u003d self.task"},{"line_number":312,"context_line":"        deployment_name \u003d db.deployment_get("},{"line_number":313,"context_line":"            self.task[\"deployment_uuid\"])[\"name\"]"},{"line_number":314,"context_line":"        db_task[\"deployment_name\"] \u003d deployment_name"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a18252c_66ffd767","line":311,"in_reply_to":"5a18252c_6837c7b0","updated":"2016-04-13 07:23:39.000000000","message":"I\u0027m not sure why exactly \u0027db_task\u0027 exists here. But what comes to my mind first is, author tried to prevent original self.task from modification (and failed)\n\nAs for https://github.com/openstack/rally/blob/master/rally/common/db/api.py#L141, it exists at least for completeness of DB API, even if it not used now. Anyway I don\u0027t understand why do you ask me about it ))","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"}],"rally/common/utils.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"a93c4586ba57f08c76b69f102747afb74b30f6e5","unresolved":false,"context_lines":[{"line_number":474,"context_line":"                dict_ret \u003d []"},{"line_number":475,"context_line":"                for el in ret:"},{"line_number":476,"context_line":"                    dict_ret.append(el.to_dict())"},{"line_number":477,"context_line":"                return tuple(dict_ret)"},{"line_number":478,"context_line":"            elif ret:"},{"line_number":479,"context_line":"                return ret.to_dict()"},{"line_number":480,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_2b47404c","line":477,"updated":"2015-11-06 13:42:57.000000000","message":"In bug description is wrote that we need to get list of dicts. But you return also tuple and dict. I think we need to return list of dicts any time","commit_id":"6c72f5d7edcc3c1454aa638e3c9e99e2b8033958"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"ebfae9bf1c504b55386133f8089994f953749393","unresolved":false,"context_lines":[{"line_number":475,"context_line":"            return"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"def convert_object_to_dict(obj):"},{"line_number":479,"context_line":"    d \u003d {}"},{"line_number":480,"context_line":"    for name in dir(obj):"},{"line_number":481,"context_line":"        value \u003d getattr(obj, name)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba8a016a_a1695727","line":478,"updated":"2015-11-17 17:03:06.000000000","message":"This approach is wrong - if you want to transform any sqlalchemy model instance to dict, you can just run:\n\n dict(model_instance)\n\n Example: http://paste.openstack.org/show/479145/\n\nNeither iterations over dir(...), nor extra code","commit_id":"e39d2735453bd3c608e4011cb25d4b20fb84b5cd"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"64b427ce2b263dfd2e3ee9a6695c60428bc22f32","unresolved":false,"context_lines":[{"line_number":475,"context_line":"            return"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"def convert_object_to_dict(obj):"},{"line_number":479,"context_line":"    d \u003d {}"},{"line_number":480,"context_line":"    for name in dir(obj):"},{"line_number":481,"context_line":"        value \u003d getattr(obj, name)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba8a016a_3c59f3fe","line":478,"in_reply_to":"ba8a016a_a1695727","updated":"2015-11-18 02:32:29.000000000","message":"Thanks for the info !\n\nAs the dict approach only works for  sqlalchemy model instance,  I moved convert method to sqlalchemy model module, and call the decorate inside sqlalchemy api module.","commit_id":"e39d2735453bd3c608e4011cb25d4b20fb84b5cd"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"5e92ac2ae25ed1b03570018741de19f05b6cf591","unresolved":false,"context_lines":[{"line_number":489,"context_line":"        def handle(*args, **kwargs):"},{"line_number":490,"context_line":"            ret \u003d func(*args, **kwargs)"},{"line_number":491,"context_line":"            if isinstance(ret, list):"},{"line_number":492,"context_line":"                dict_ret \u003d []"},{"line_number":493,"context_line":"                for el in ret:"},{"line_number":494,"context_line":"                    dict_ret.append(convert_object_to_dict(el))"},{"line_number":495,"context_line":"                return dict_ret"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba8a016a_3d8cb17e","line":492,"range":{"start_line":492,"start_character":16,"end_line":492,"end_character":25},"updated":"2015-11-17 23:19:05.000000000","message":"\u0027dict_ret\u0027 name for list is confusing. Let it be, for example, \u0027result_list\u0027","commit_id":"e39d2735453bd3c608e4011cb25d4b20fb84b5cd"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"64b427ce2b263dfd2e3ee9a6695c60428bc22f32","unresolved":false,"context_lines":[{"line_number":489,"context_line":"        def handle(*args, **kwargs):"},{"line_number":490,"context_line":"            ret \u003d func(*args, **kwargs)"},{"line_number":491,"context_line":"            if isinstance(ret, list):"},{"line_number":492,"context_line":"                dict_ret \u003d []"},{"line_number":493,"context_line":"                for el in ret:"},{"line_number":494,"context_line":"                    dict_ret.append(convert_object_to_dict(el))"},{"line_number":495,"context_line":"                return dict_ret"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba8a016a_90900545","line":492,"in_reply_to":"ba8a016a_3d8cb17e","updated":"2015-11-18 02:32:29.000000000","message":"done !","commit_id":"e39d2735453bd3c608e4011cb25d4b20fb84b5cd"}],"tests/unit/common/db/test_api.py":[{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"8f5d9eb0e8050ef604787f57440770e3f03e4113","unresolved":false,"context_lines":[{"line_number":478,"context_line":"        self.assertNotEqual(self.worker[\"updated_at\"], worker[\"updated_at\"])"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"    def test_update_worker_not_found(self):"},{"line_number":481,"context_line":"        self.assertRaises(exceptions.WorkerNotFound, db.update_worker, \"fake\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_6ff912c8","line":481,"updated":"2015-11-16 02:30:25.000000000","message":"Why this line shows up here ?? I get no idea...","commit_id":"14b6e1b76ff356d3ff49a18ac3dbe42d447455ce"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"6ab3ea22bd27298ddbbb9a60d565568697e48f73","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            self.assertEqual(res[0][\"key\"], data)"},{"line_number":176,"context_line":"            self.assertEqual(res[0][\"data\"], data)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def test_task_result_get_all_by_uuid_is_dict(self):"},{"line_number":179,"context_line":"        task1 \u003d self._create_task()[\"uuid\"]"},{"line_number":180,"context_line":"        db.task_result_create(task1,"},{"line_number":181,"context_line":"                              {task1: task1},"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba8a016a_0213cc0e","line":178,"updated":"2015-11-20 15:03:27.000000000","message":"Update already existent test `test_task_result_get_all_by_uuid\u0027 above instead of adding another test. As we see, existent test is not perfect because it should definitely check type of return value - it must fail in its current (unchanged) state but it does not actually fail","commit_id":"340f6b85567a784fdfdd4229691f588521b113c8"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"10f7cd3ba680551a4377ea27438f0510d3add9a4","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from rally import exceptions"},{"line_number":22,"context_line":"from tests.unit import test"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class TasksTestCase(test.DBTestCase):"},{"line_number":26,"context_line":"    def setUp(self):"},{"line_number":27,"context_line":"        super(TasksTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a7e1126_1fa45ea4","line":24,"updated":"2015-12-17 12:50:23.000000000","message":"Missing test_serialize","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"69732da4d862c0372b03cbe4220329d15e4709ba","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from rally import exceptions"},{"line_number":22,"context_line":"from tests.unit import test"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class TasksTestCase(test.DBTestCase):"},{"line_number":26,"context_line":"    def setUp(self):"},{"line_number":27,"context_line":"        super(TasksTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a7b0d38_754d9c71","line":24,"in_reply_to":"3a7e1126_1fa45ea4","updated":"2015-12-23 08:38:36.000000000","message":"Done","commit_id":"c2f5c6f1e77cebb65eb22e9d42da8246f4e8c087"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"b43c0fa2cb840948319687208ed8f7843797b98c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        super(SerializeTestCase, self).setUp()"},{"line_number":29,"context_line":"        self.deploy \u003d db.deployment_create({})"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def test_serialize(self):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        @db_api.serialize"},{"line_number":34,"context_line":"        def fake_method(data):"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a18252c_5d745dce","line":31,"updated":"2016-04-12 10:47:49.000000000","message":"I would recommend ddt here","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"1ebaa721d467a68b45b5355e7a8c34dcb31e6da2","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        super(SerializeTestCase, self).setUp()"},{"line_number":29,"context_line":"        self.deploy \u003d db.deployment_create({})"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def test_serialize(self):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        @db_api.serialize"},{"line_number":34,"context_line":"        def fake_method(data):"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a18252c_020a7dd2","line":31,"in_reply_to":"5a18252c_2f7962fd","updated":"2016-04-12 11:47:02.000000000","message":"No, serialize() requires more than one test cases (I would recommend to add them)","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"29b668bc98fb48c824028ee6b4791b124655f65d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        super(SerializeTestCase, self).setUp()"},{"line_number":29,"context_line":"        self.deploy \u003d db.deployment_create({})"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def test_serialize(self):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        @db_api.serialize"},{"line_number":34,"context_line":"        def fake_method(data):"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a18252c_2f7962fd","line":31,"in_reply_to":"5a18252c_5d745dce","updated":"2016-04-12 11:36:19.000000000","message":"For just one test? Seriously? ))","commit_id":"da8b0eaa46a33313aa4c807b91d7fff50e9426ad"}]}
