)]}'
{"nova/conductor/manager.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    The nova-conductor service also exposes an API in the \u0027compute_task\u0027"},{"line_number":67,"context_line":"    namespace.  See the ComputeTaskManager class for details."},{"line_number":68,"context_line":"    \"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    RPC_API_VERSION \u003d \u00271.53\u0027"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FR0U%3D","line":69,"updated":"2013-07-05 11:02:43.000000000","message":"You changed API, so you have to change the version of API.","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    The nova-conductor service also exposes an API in the \u0027compute_task\u0027"},{"line_number":67,"context_line":"    namespace.  See the ComputeTaskManager class for details."},{"line_number":68,"context_line":"    \"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    RPC_API_VERSION \u003d \u00271.53\u0027"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3wY%3D","line":69,"in_reply_to":"AAAAPn%2F%2FR0U%3D","updated":"2013-07-10 03:57:29.000000000","message":"Done","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":471,"context_line":"    return model_query(context, models.ComputeNode).\\"},{"line_number":472,"context_line":"            options(joinedload(\u0027service\u0027)).\\"},{"line_number":473,"context_line":"            options(joinedload(\u0027stats\u0027)).\\"},{"line_number":474,"context_line":"            options(joinedload(\u0027resources\u0027)).\\"},{"line_number":475,"context_line":"            all()"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FRz4%3D","line":474,"updated":"2013-07-05 11:02:43.000000000","message":"This method is called on every scheduler call. I think that this will have really really bad performance.","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":471,"context_line":"    return model_query(context, models.ComputeNode).\\"},{"line_number":472,"context_line":"            options(joinedload(\u0027service\u0027)).\\"},{"line_number":473,"context_line":"            options(joinedload(\u0027stats\u0027)).\\"},{"line_number":474,"context_line":"            options(joinedload(\u0027resources\u0027)).\\"},{"line_number":475,"context_line":"            all()"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3wU%3D","line":474,"in_reply_to":"AAAAPn%2F%2FRz4%3D","updated":"2013-07-10 03:57:29.000000000","message":"Do you have any better suggestion? The scheduler has to get all the information to do scheduling.","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":547,"context_line":""},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"def _update_resources(context, new_resources, compute_id, session,"},{"line_number":550,"context_line":"                      prune_resources\u003dFalse):"},{"line_number":551,"context_line":"    existing \u003d model_query(context, models.ComputeNodeResource,"},{"line_number":552,"context_line":"            session\u003dsession, read_deleted\u003d\"no\").\\"},{"line_number":553,"context_line":"            filter_by(compute_node_id\u003dcompute_id).all()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FRx0%3D","line":550,"updated":"2013-07-05 11:02:43.000000000","message":"Imho I would prefer to see here: \n\nwith session.begin(subtransactions\u003dTrue).\n\nBecause if someone reuse this method in feature without started transaction, it will produce N queries in N transactions.","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":547,"context_line":""},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"def _update_resources(context, new_resources, compute_id, session,"},{"line_number":550,"context_line":"                      prune_resources\u003dFalse):"},{"line_number":551,"context_line":"    existing \u003d model_query(context, models.ComputeNodeResource,"},{"line_number":552,"context_line":"            session\u003dsession, read_deleted\u003d\"no\").\\"},{"line_number":553,"context_line":"            filter_by(compute_node_id\u003dcompute_id).all()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3vI%3D","line":550,"in_reply_to":"AAAAPn%2F%2FRx0%3D","updated":"2013-07-10 03:57:29.000000000","message":"Done","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":551,"context_line":"    existing \u003d model_query(context, models.ComputeNodeResource,"},{"line_number":552,"context_line":"            session\u003dsession, read_deleted\u003d\"no\").\\"},{"line_number":553,"context_line":"            filter_by(compute_node_id\u003dcompute_id).all()"},{"line_number":554,"context_line":"    resourcemap \u003d {}"},{"line_number":555,"context_line":"    for resource in existing:"},{"line_number":556,"context_line":"        key \u003d resource[\u0027name\u0027]"},{"line_number":557,"context_line":"        resourcemap[key] \u003d resource"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FRzI%3D","line":554,"updated":"2013-07-05 11:02:43.000000000","message":"it could be done in only one short line:\n\n  resourcemap \u003d dict((r[\u0027name\u0027], r) for r in existing)","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":551,"context_line":"    existing \u003d model_query(context, models.ComputeNodeResource,"},{"line_number":552,"context_line":"            session\u003dsession, read_deleted\u003d\"no\").\\"},{"line_number":553,"context_line":"            filter_by(compute_node_id\u003dcompute_id).all()"},{"line_number":554,"context_line":"    resourcemap \u003d {}"},{"line_number":555,"context_line":"    for resource in existing:"},{"line_number":556,"context_line":"        key \u003d resource[\u0027name\u0027]"},{"line_number":557,"context_line":"        resourcemap[key] \u003d resource"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3us%3D","line":554,"in_reply_to":"AAAAPn%2F%2FRzI%3D","updated":"2013-07-10 03:57:29.000000000","message":"Done","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":556,"context_line":"        key \u003d resource[\u0027name\u0027]"},{"line_number":557,"context_line":"        resourcemap[key] \u003d resource"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"    resources \u003d []"},{"line_number":560,"context_line":"    for new_resource in new_resources:"},{"line_number":561,"context_line":"        resource_name \u003d new_resource[\u0027name\u0027]"},{"line_number":562,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FRzs%3D","line":559,"updated":"2013-07-05 11:02:43.000000000","message":"race conditions, because you don\u0027t use unique constraints.","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":556,"context_line":"        key \u003d resource[\u0027name\u0027]"},{"line_number":557,"context_line":"        resourcemap[key] \u003d resource"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"    resources \u003d []"},{"line_number":560,"context_line":"    for new_resource in new_resources:"},{"line_number":561,"context_line":"        resource_name \u003d new_resource[\u0027name\u0027]"},{"line_number":562,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3to%3D","line":559,"in_reply_to":"AAAAPn%2F%2FRzs%3D","updated":"2013-07-10 03:57:29.000000000","message":"Done","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":572,"context_line":"            resource \u003d models.ComputeNodeResource()"},{"line_number":573,"context_line":"            resource[\u0027compute_node_id\u0027] \u003d compute_id"},{"line_number":574,"context_line":"            resource[\u0027name\u0027] \u003d resource_name"},{"line_number":575,"context_line":"            resource[\u0027value\u0027] \u003d jsonutils.dumps(new_resource[\u0027value\u0027])"},{"line_number":576,"context_line":"            resource[\u0027timestamp\u0027] \u003d new_resource[\u0027timestamp\u0027]"},{"line_number":577,"context_line":"            resource[\u0027source\u0027] \u003d new_resource[\u0027source\u0027]"},{"line_number":578,"context_line":"            resources.append(resource)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FRzU%3D","line":575,"updated":"2013-07-05 11:02:43.000000000","message":"it is not clear for me. Here you are expecting to get value as a object with fields, but I didn\u0027t see the process of restoring value from string to object when we are getting these resources.","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":572,"context_line":"            resource \u003d models.ComputeNodeResource()"},{"line_number":573,"context_line":"            resource[\u0027compute_node_id\u0027] \u003d compute_id"},{"line_number":574,"context_line":"            resource[\u0027name\u0027] \u003d resource_name"},{"line_number":575,"context_line":"            resource[\u0027value\u0027] \u003d jsonutils.dumps(new_resource[\u0027value\u0027])"},{"line_number":576,"context_line":"            resource[\u0027timestamp\u0027] \u003d new_resource[\u0027timestamp\u0027]"},{"line_number":577,"context_line":"            resource[\u0027source\u0027] \u003d new_resource[\u0027source\u0027]"},{"line_number":578,"context_line":"            resources.append(resource)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3s0%3D","line":575,"in_reply_to":"AAAAPn%2F%2FRzU%3D","updated":"2013-07-10 03:57:29.000000000","message":"that is on the scheduler side. See https://review.openstack.org/#/c/35764/","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":579,"context_line":""},{"line_number":580,"context_line":"    if prune_resources:"},{"line_number":581,"context_line":"        # prune un-touched old resources"},{"line_number":582,"context_line":"        for resource in resourcemap.values():"},{"line_number":583,"context_line":"            session.add(resource)"},{"line_number":584,"context_line":"            resource.soft_delete(session\u003dsession)"},{"line_number":585,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FRyg%3D","line":582,"updated":"2013-07-05 11:02:43.000000000","message":"I am not quite sure what are you doing here..\n\nYou are adding to session object that is already added. \nAnd then you are deleting it! \n\nBy the way I wrote a manual about this cases, and usage of soft_delete. Model.soft_delete() will produce N queries for each row, and if you use query.soft_delete() it will produce only 1 query. \n\nso this solution has terrible performance. And I think it contains bugs.","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":579,"context_line":""},{"line_number":580,"context_line":"    if prune_resources:"},{"line_number":581,"context_line":"        # prune un-touched old resources"},{"line_number":582,"context_line":"        for resource in resourcemap.values():"},{"line_number":583,"context_line":"            session.add(resource)"},{"line_number":584,"context_line":"            resource.soft_delete(session\u003dsession)"},{"line_number":585,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3q4%3D","line":582,"in_reply_to":"AAAAPn%2F%2FRyg%3D","updated":"2013-07-10 03:57:29.000000000","message":"I learned from _update_stats() in the same api.py file. The purpose is to delete the same row untouched in the table and insert a completely duplicated new row for it. (the timestamps are changed for sure).","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":581,"context_line":"        # prune un-touched old resources"},{"line_number":582,"context_line":"        for resource in resourcemap.values():"},{"line_number":583,"context_line":"            session.add(resource)"},{"line_number":584,"context_line":"            resource.soft_delete(session\u003dsession)"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"    # add new and updated resources"},{"line_number":587,"context_line":"    for resource in resources:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FRzg%3D","line":584,"updated":"2013-07-05 11:02:43.000000000","message":"this won\u0027t work because of bug in migration.","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"f3fd50721c5ef471cf27ea6ebc7592a5c5a6c047","unresolved":false,"context_lines":[{"line_number":482,"context_line":"    results \u003d model_query(context, models.ComputeNode).\\"},{"line_number":483,"context_line":"            options(joinedload(\u0027service\u0027)).\\"},{"line_number":484,"context_line":"            options(joinedload(\u0027stats\u0027)).\\"},{"line_number":485,"context_line":"            options(joinedload(\u0027resources\u0027)).\\"},{"line_number":486,"context_line":"            all()"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    # load values to real types from json"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAP3%2F%2FuOg%3D","line":485,"updated":"2013-07-12 13:01:14.000000000","message":"this will have terrible performance on big clouds..","commit_id":"42282b117aa750ff24fe58de15a91645278f393a"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"f47409d918fcc64d44eaf5f44b8c9eba5e9971d4","unresolved":false,"context_lines":[{"line_number":482,"context_line":"    results \u003d model_query(context, models.ComputeNode).\\"},{"line_number":483,"context_line":"            options(joinedload(\u0027service\u0027)).\\"},{"line_number":484,"context_line":"            options(joinedload(\u0027stats\u0027)).\\"},{"line_number":485,"context_line":"            options(joinedload(\u0027resources\u0027)).\\"},{"line_number":486,"context_line":"            all()"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    # load values to real types from json"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAP3%2F%2FuAE%3D","line":485,"in_reply_to":"AAAAP3%2F%2FuOg%3D","updated":"2013-07-12 14:09:11.000000000","message":"Hi Boris,\n\nThank you for pointing that out. Without join-loading \"resources\", will that have performance issue, or better?\n\nDo you have any good suggestion which I can follow? Here the scheduler will call this function to get the resource data for next scheduling.\n\nThank you in advance.\n\nShane","commit_id":"42282b117aa750ff24fe58de15a91645278f393a"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"040176add7424e23aa73ea6efd38d48c11a6fcc2","unresolved":false,"context_lines":[{"line_number":511,"context_line":"    results \u003d model_query(context, models.ComputeNode).\\"},{"line_number":512,"context_line":"            options(joinedload(\u0027service\u0027)).\\"},{"line_number":513,"context_line":"            options(joinedload(\u0027stats\u0027)).\\"},{"line_number":514,"context_line":"            options(joinedload(\u0027resources\u0027)).\\"},{"line_number":515,"context_line":"            all()"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    # load values to real types from json"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2F5dM%3D","line":514,"updated":"2013-07-19 16:21:10.000000000","message":"As I said before this approach is not scalable. \nAnd I am against. \n\nImho we should remove DB between scheduler and compute nodes.\n\nFor more information take a look at our doc\n\n\nhttps://docs.google.com/a/mirantis.com/document/d/1_DRv7it_mwalEZzLy5WO92TJcummpmWL4NWsWf0UWiQ/edit#heading\u003dh.6ixj0ctv4rwu","commit_id":"6abb77bdc06dcdf5acd4ffe3cf568a90621899cd"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4b2406fdd4e909e0ed62500dda042096c514f9ac","unresolved":false,"context_lines":[{"line_number":511,"context_line":"    results \u003d model_query(context, models.ComputeNode).\\"},{"line_number":512,"context_line":"            options(joinedload(\u0027service\u0027)).\\"},{"line_number":513,"context_line":"            options(joinedload(\u0027stats\u0027)).\\"},{"line_number":514,"context_line":"            options(joinedload(\u0027resources\u0027)).\\"},{"line_number":515,"context_line":"            all()"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    # load values to real types from json"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAQn%2F%2F1tA%3D","line":514,"updated":"2013-07-22 11:24:50.000000000","message":"as I said before it will produce tons of unsolvable scale problems in future. (even now)\n\nhttps://docs.google.com/a/pavlovic.ru/document/d/1_DRv7it_mwalEZzLy5WO92TJcummpmWL4NWsWf0UWiQ/edit#","commit_id":"9837b1d28a069c07b43a9138195558b02ab1b4ff"}],"nova/db/sqlalchemy/migrate_repo/versions/192_add_compute_node_resource.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            Column(\u0027created_at\u0027, DateTime),"},{"line_number":45,"context_line":"            Column(\u0027updated_at\u0027, DateTime),"},{"line_number":46,"context_line":"            Column(\u0027deleted_at\u0027, DateTime),"},{"line_number":47,"context_line":"            Column(\u0027deleted\u0027, Boolean),"},{"line_number":48,"context_line":"            Column(\u0027id\u0027, Integer, primary_key\u003dTrue, nullable\u003dFalse,"},{"line_number":49,"context_line":"                   autoincrement\u003dTrue),"},{"line_number":50,"context_line":"            Column(\u0027name\u0027, String(256)),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FR2k%3D","line":47,"updated":"2013-07-05 11:02:43.000000000","message":"deleted type should be tha same type as \u0027id\u0027 column. Otherwise soft delete won\u0027t work","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            Column(\u0027created_at\u0027, DateTime),"},{"line_number":45,"context_line":"            Column(\u0027updated_at\u0027, DateTime),"},{"line_number":46,"context_line":"            Column(\u0027deleted_at\u0027, DateTime),"},{"line_number":47,"context_line":"            Column(\u0027deleted\u0027, Boolean),"},{"line_number":48,"context_line":"            Column(\u0027id\u0027, Integer, primary_key\u003dTrue, nullable\u003dFalse,"},{"line_number":49,"context_line":"                   autoincrement\u003dTrue),"},{"line_number":50,"context_line":"            Column(\u0027name\u0027, String(256)),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3qw%3D","line":47,"in_reply_to":"AAAAPn%2F%2FR2k%3D","updated":"2013-07-10 03:57:29.000000000","message":"Done","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            Column(\u0027deleted\u0027, Boolean),"},{"line_number":48,"context_line":"            Column(\u0027id\u0027, Integer, primary_key\u003dTrue, nullable\u003dFalse,"},{"line_number":49,"context_line":"                   autoincrement\u003dTrue),"},{"line_number":50,"context_line":"            Column(\u0027name\u0027, String(256)),"},{"line_number":51,"context_line":"            Column(\u0027compute_node_id\u0027, Integer,"},{"line_number":52,"context_line":"                   ForeignKey(\u0027compute_nodes.id\u0027)),"},{"line_number":53,"context_line":"            Column(\u0027value\u0027, Text),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FR2o%3D","line":50,"updated":"2013-07-05 11:02:43.000000000","message":"name shouldn\u0027t be nullable","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            Column(\u0027deleted\u0027, Boolean),"},{"line_number":48,"context_line":"            Column(\u0027id\u0027, Integer, primary_key\u003dTrue, nullable\u003dFalse,"},{"line_number":49,"context_line":"                   autoincrement\u003dTrue),"},{"line_number":50,"context_line":"            Column(\u0027name\u0027, String(256)),"},{"line_number":51,"context_line":"            Column(\u0027compute_node_id\u0027, Integer,"},{"line_number":52,"context_line":"                   ForeignKey(\u0027compute_nodes.id\u0027)),"},{"line_number":53,"context_line":"            Column(\u0027value\u0027, Text),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3qg%3D","line":50,"in_reply_to":"AAAAPn%2F%2FR2o%3D","updated":"2013-07-10 03:57:29.000000000","message":"Done","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            Column(\u0027id\u0027, Integer, primary_key\u003dTrue, nullable\u003dFalse,"},{"line_number":49,"context_line":"                   autoincrement\u003dTrue),"},{"line_number":50,"context_line":"            Column(\u0027name\u0027, String(256)),"},{"line_number":51,"context_line":"            Column(\u0027compute_node_id\u0027, Integer,"},{"line_number":52,"context_line":"                   ForeignKey(\u0027compute_nodes.id\u0027)),"},{"line_number":53,"context_line":"            Column(\u0027value\u0027, Text),"},{"line_number":54,"context_line":"            Column(\u0027timestamp\u0027, DateTime, index\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FR2g%3D","line":51,"updated":"2013-07-05 11:02:43.000000000","message":"compute_node_id should\u0027nt be nullable","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            Column(\u0027id\u0027, Integer, primary_key\u003dTrue, nullable\u003dFalse,"},{"line_number":49,"context_line":"                   autoincrement\u003dTrue),"},{"line_number":50,"context_line":"            Column(\u0027name\u0027, String(256)),"},{"line_number":51,"context_line":"            Column(\u0027compute_node_id\u0027, Integer,"},{"line_number":52,"context_line":"                   ForeignKey(\u0027compute_nodes.id\u0027)),"},{"line_number":53,"context_line":"            Column(\u0027value\u0027, Text),"},{"line_number":54,"context_line":"            Column(\u0027timestamp\u0027, DateTime, index\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3qM%3D","line":51,"in_reply_to":"AAAAPn%2F%2FR2g%3D","updated":"2013-07-10 03:57:29.000000000","message":"Done","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                   autoincrement\u003dTrue),"},{"line_number":50,"context_line":"            Column(\u0027name\u0027, String(256)),"},{"line_number":51,"context_line":"            Column(\u0027compute_node_id\u0027, Integer,"},{"line_number":52,"context_line":"                   ForeignKey(\u0027compute_nodes.id\u0027)),"},{"line_number":53,"context_line":"            Column(\u0027value\u0027, Text),"},{"line_number":54,"context_line":"            Column(\u0027timestamp\u0027, DateTime, index\u003dTrue),"},{"line_number":55,"context_line":"            Column(\u0027source\u0027, String(256)),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FR2Y%3D","line":52,"updated":"2013-07-05 11:02:43.000000000","message":"You should add Unique constraint on (name, compute_node_id, deleted)","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                   autoincrement\u003dTrue),"},{"line_number":50,"context_line":"            Column(\u0027name\u0027, String(256)),"},{"line_number":51,"context_line":"            Column(\u0027compute_node_id\u0027, Integer,"},{"line_number":52,"context_line":"                   ForeignKey(\u0027compute_nodes.id\u0027)),"},{"line_number":53,"context_line":"            Column(\u0027value\u0027, Text),"},{"line_number":54,"context_line":"            Column(\u0027timestamp\u0027, DateTime, index\u003dTrue),"},{"line_number":55,"context_line":"            Column(\u0027source\u0027, String(256)),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3qI%3D","line":52,"in_reply_to":"AAAAPn%2F%2FR2Y%3D","updated":"2013-07-10 03:57:29.000000000","message":"Done","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            Column(\u0027name\u0027, String(256)),"},{"line_number":51,"context_line":"            Column(\u0027compute_node_id\u0027, Integer,"},{"line_number":52,"context_line":"                   ForeignKey(\u0027compute_nodes.id\u0027)),"},{"line_number":53,"context_line":"            Column(\u0027value\u0027, Text),"},{"line_number":54,"context_line":"            Column(\u0027timestamp\u0027, DateTime, index\u003dTrue),"},{"line_number":55,"context_line":"            Column(\u0027source\u0027, String(256)),"},{"line_number":56,"context_line":"            mysql_engine\u003d\u0027InnoDB\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FR1A%3D","line":53,"updated":"2013-07-05 11:02:43.000000000","message":"I would prefer String instead of Text.","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            Column(\u0027name\u0027, String(256)),"},{"line_number":51,"context_line":"            Column(\u0027compute_node_id\u0027, Integer,"},{"line_number":52,"context_line":"                   ForeignKey(\u0027compute_nodes.id\u0027)),"},{"line_number":53,"context_line":"            Column(\u0027value\u0027, Text),"},{"line_number":54,"context_line":"            Column(\u0027timestamp\u0027, DateTime, index\u003dTrue),"},{"line_number":55,"context_line":"            Column(\u0027source\u0027, String(256)),"},{"line_number":56,"context_line":"            mysql_engine\u003d\u0027InnoDB\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3pc%3D","line":53,"in_reply_to":"AAAAPn%2F%2FR1A%3D","updated":"2013-07-10 03:57:29.000000000","message":"I\u0027d like to store json in this field because the real type of the object is not determined at this moment, so I am afraid that the string is not suitable. Agree?","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            Column(\u0027compute_node_id\u0027, Integer,"},{"line_number":52,"context_line":"                   ForeignKey(\u0027compute_nodes.id\u0027)),"},{"line_number":53,"context_line":"            Column(\u0027value\u0027, Text),"},{"line_number":54,"context_line":"            Column(\u0027timestamp\u0027, DateTime, index\u003dTrue),"},{"line_number":55,"context_line":"            Column(\u0027source\u0027, String(256)),"},{"line_number":56,"context_line":"            mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":57,"context_line":"            mysql_charset\u003d\u0027utf8\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FR0c%3D","line":54,"updated":"2013-07-05 11:02:43.000000000","message":"you are creating 2 times the same index, here and in 75. \n\nPls create index only one time, and not in column description, but as a separated thing here: \n\nIndex(\u0027compute_node_resorce_timestamp_idx\u0027)","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            Column(\u0027compute_node_id\u0027, Integer,"},{"line_number":52,"context_line":"                   ForeignKey(\u0027compute_nodes.id\u0027)),"},{"line_number":53,"context_line":"            Column(\u0027value\u0027, Text),"},{"line_number":54,"context_line":"            Column(\u0027timestamp\u0027, DateTime, index\u003dTrue),"},{"line_number":55,"context_line":"            Column(\u0027source\u0027, String(256)),"},{"line_number":56,"context_line":"            mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":57,"context_line":"            mysql_charset\u003d\u0027utf8\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3pE%3D","line":54,"in_reply_to":"AAAAPn%2F%2FR0c%3D","updated":"2013-07-10 03:57:29.000000000","message":"Done","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":77,"context_line":"              compute_node_resources.c.timestamp)"},{"line_number":78,"context_line":"    ]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    if migrate_engine.name \u003d\u003d \u0027mysql\u0027 or migrate_engine.name \u003d\u003d \u0027postgresql\u0027:"},{"line_number":81,"context_line":"        for index in indexes:"},{"line_number":82,"context_line":"            index.create(migrate_engine)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FR2Q%3D","line":80,"updated":"2013-07-05 11:02:43.000000000","message":"We are working for a long time to have the same state in different backends. So it is really bad idea, to create indexes only in mysql and postgrsql.\n\nSo put Index(...) in Table description.","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":77,"context_line":"              compute_node_resources.c.timestamp)"},{"line_number":78,"context_line":"    ]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    if migrate_engine.name \u003d\u003d \u0027mysql\u0027 or migrate_engine.name \u003d\u003d \u0027postgresql\u0027:"},{"line_number":81,"context_line":"        for index in indexes:"},{"line_number":82,"context_line":"            index.create(migrate_engine)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3os%3D","line":80,"in_reply_to":"AAAAPn%2F%2FR2Q%3D","updated":"2013-07-10 03:57:29.000000000","message":"Done","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"}],"nova/db/sqlalchemy/migrate_repo/versions/198_add_compute_node_resource.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"45cfd77c967e182d9ea73aa8dfc18658aac67c56","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from nova.db.sqlalchemy import api as db"},{"line_number":29,"context_line":"from nova.db.sqlalchemy import utils"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from nova.openstack.common import log as logging"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F2Cw%3D","line":30,"updated":"2013-07-10 14:42:50.000000000","message":"minor nit - you do not need the new line here","commit_id":"805d399b78cb113cf881023744c6dcaf2e56efc3"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"b5b9efbabb5d920af732d064436f3dc192ea918a","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from nova.db.sqlalchemy import api as db"},{"line_number":29,"context_line":"from nova.db.sqlalchemy import utils"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from nova.openstack.common import log as logging"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F0DU%3D","line":30,"in_reply_to":"AAAAP3%2F%2F2Cw%3D","updated":"2013-07-11 03:19:20.000000000","message":"Done","commit_id":"805d399b78cb113cf881023744c6dcaf2e56efc3"}],"nova/db/sqlalchemy/models.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":1184,"context_line":"        Index(\u0027compute_node_resources_timestamp_idx\u0027, \u0027timestamp\u0027),"},{"line_number":1185,"context_line":"    )"},{"line_number":1186,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, nullable\u003dFalse, autoincrement\u003dTrue)"},{"line_number":1187,"context_line":"    name \u003d Column(String(256), nullable\u003dFalse)"},{"line_number":1188,"context_line":""},{"line_number":1189,"context_line":"    compute_node_id \u003d Column(Integer, ForeignKey(\u0027compute_nodes.id\u0027))"},{"line_number":1190,"context_line":"    compute_node \u003d relationship(\"ComputeNode\","}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FR1U%3D","line":1187,"updated":"2013-07-05 11:02:43.000000000","message":"your schema has nullable\u003dTrue, and in model nullable\u003dTrue. Pls fix your migration script.","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":1184,"context_line":"        Index(\u0027compute_node_resources_timestamp_idx\u0027, \u0027timestamp\u0027),"},{"line_number":1185,"context_line":"    )"},{"line_number":1186,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, nullable\u003dFalse, autoincrement\u003dTrue)"},{"line_number":1187,"context_line":"    name \u003d Column(String(256), nullable\u003dFalse)"},{"line_number":1188,"context_line":""},{"line_number":1189,"context_line":"    compute_node_id \u003d Column(Integer, ForeignKey(\u0027compute_nodes.id\u0027))"},{"line_number":1190,"context_line":"    compute_node \u003d relationship(\"ComputeNode\","}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3ok%3D","line":1187,"in_reply_to":"AAAAPn%2F%2FR1U%3D","updated":"2013-07-10 03:57:29.000000000","message":"Done","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a560f725c3fb0813a73d831d46f452662bc42ab5","unresolved":false,"context_lines":[{"line_number":1186,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, nullable\u003dFalse, autoincrement\u003dTrue)"},{"line_number":1187,"context_line":"    name \u003d Column(String(256), nullable\u003dFalse)"},{"line_number":1188,"context_line":""},{"line_number":1189,"context_line":"    compute_node_id \u003d Column(Integer, ForeignKey(\u0027compute_nodes.id\u0027))"},{"line_number":1190,"context_line":"    compute_node \u003d relationship(\"ComputeNode\","},{"line_number":1191,"context_line":"                       backref\u003dbackref(\u0027resources\u0027, order_by\u003did),"},{"line_number":1192,"context_line":"                       foreign_keys\u003dcompute_node_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FR1Q%3D","line":1189,"updated":"2013-07-05 11:02:43.000000000","message":"use always explicit nullable for all columns.","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0533cff2c08478aa535dce2c44b3b7f32784fff2","unresolved":false,"context_lines":[{"line_number":1186,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, nullable\u003dFalse, autoincrement\u003dTrue)"},{"line_number":1187,"context_line":"    name \u003d Column(String(256), nullable\u003dFalse)"},{"line_number":1188,"context_line":""},{"line_number":1189,"context_line":"    compute_node_id \u003d Column(Integer, ForeignKey(\u0027compute_nodes.id\u0027))"},{"line_number":1190,"context_line":"    compute_node \u003d relationship(\"ComputeNode\","},{"line_number":1191,"context_line":"                       backref\u003dbackref(\u0027resources\u0027, order_by\u003did),"},{"line_number":1192,"context_line":"                       foreign_keys\u003dcompute_node_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3oY%3D","line":1189,"in_reply_to":"AAAAPn%2F%2FR1Q%3D","updated":"2013-07-10 03:57:29.000000000","message":"Done","commit_id":"5002e750bdccfa74a62d88a20b238c6f4209e3ac"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"bb12173bdd7e0b580c633448b58744fc1cd32dde","unresolved":false,"context_lines":[{"line_number":1202,"context_line":"    __tablename__ \u003d \u0027compute_node_resources\u0027"},{"line_number":1203,"context_line":"    __table_args__ \u003d ("},{"line_number":1204,"context_line":"        Index(\u0027compute_node_resources_timestamp_idx\u0027, \u0027timestamp\u0027),"},{"line_number":1205,"context_line":"        schema.UniqueConstraint(\"name\", \"compute_node_id\", \"deleted\"),"},{"line_number":1206,"context_line":"    )"},{"line_number":1207,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, nullable\u003dFalse, autoincrement\u003dTrue)"},{"line_number":1208,"context_line":"    name \u003d Column(String(128), nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F2qc%3D","line":1205,"updated":"2013-07-10 11:43:52.000000000","message":"Please add name for UC in model\n\n# note(vsergeyev): UniqueConstraint name convention: \"uniq_t0c10c2\"\n where `t` it is table name, `0` it is delimiter and\n columns `c1`, `c2` are in UniqueConstraint.","commit_id":"805d399b78cb113cf881023744c6dcaf2e56efc3"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"b5b9efbabb5d920af732d064436f3dc192ea918a","unresolved":false,"context_lines":[{"line_number":1202,"context_line":"    __tablename__ \u003d \u0027compute_node_resources\u0027"},{"line_number":1203,"context_line":"    __table_args__ \u003d ("},{"line_number":1204,"context_line":"        Index(\u0027compute_node_resources_timestamp_idx\u0027, \u0027timestamp\u0027),"},{"line_number":1205,"context_line":"        schema.UniqueConstraint(\"name\", \"compute_node_id\", \"deleted\"),"},{"line_number":1206,"context_line":"    )"},{"line_number":1207,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, nullable\u003dFalse, autoincrement\u003dTrue)"},{"line_number":1208,"context_line":"    name \u003d Column(String(128), nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F0DI%3D","line":1205,"in_reply_to":"AAAAP3%2F%2F2qc%3D","updated":"2013-07-11 03:19:20.000000000","message":"Done","commit_id":"805d399b78cb113cf881023744c6dcaf2e56efc3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"45cfd77c967e182d9ea73aa8dfc18658aac67c56","unresolved":false,"context_lines":[{"line_number":1205,"context_line":"        schema.UniqueConstraint(\"name\", \"compute_node_id\", \"deleted\"),"},{"line_number":1206,"context_line":"    )"},{"line_number":1207,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, nullable\u003dFalse, autoincrement\u003dTrue)"},{"line_number":1208,"context_line":"    name \u003d Column(String(128), nullable\u003dFalse)"},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"    compute_node_id \u003d Column(Integer, ForeignKey(\u0027compute_nodes.id\u0027),"},{"line_number":1211,"context_line":"                             nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F2Cg%3D","line":1208,"updated":"2013-07-10 14:42:50.000000000","message":"why 128? other examples have 255?","commit_id":"805d399b78cb113cf881023744c6dcaf2e56efc3"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"b5b9efbabb5d920af732d064436f3dc192ea918a","unresolved":false,"context_lines":[{"line_number":1205,"context_line":"        schema.UniqueConstraint(\"name\", \"compute_node_id\", \"deleted\"),"},{"line_number":1206,"context_line":"    )"},{"line_number":1207,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, nullable\u003dFalse, autoincrement\u003dTrue)"},{"line_number":1208,"context_line":"    name \u003d Column(String(128), nullable\u003dFalse)"},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"    compute_node_id \u003d Column(Integer, ForeignKey(\u0027compute_nodes.id\u0027),"},{"line_number":1211,"context_line":"                             nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F0C4%3D","line":1208,"in_reply_to":"AAAAP3%2F%2F2Cg%3D","updated":"2013-07-11 03:19:20.000000000","message":"Because for some db types, like mysql, it says \"OperationalError: (OperationalError) (1071, \u0027Specified key was too long; max key length is 767 bytes\u0027)\". I guess UniqueContraint will create index on these columns.","commit_id":"805d399b78cb113cf881023744c6dcaf2e56efc3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"45cfd77c967e182d9ea73aa8dfc18658aac67c56","unresolved":false,"context_lines":[{"line_number":1219,"context_line":""},{"line_number":1220,"context_line":"    value \u003d Column(Text)"},{"line_number":1221,"context_line":"    timestamp \u003d Column(DateTime, nullable\u003dTrue, default\u003dNone)"},{"line_number":1222,"context_line":"    source \u003d Column(String(256))"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F2Cc%3D","line":1222,"updated":"2013-07-10 14:42:50.000000000","message":"why 256?","commit_id":"805d399b78cb113cf881023744c6dcaf2e56efc3"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"b5b9efbabb5d920af732d064436f3dc192ea918a","unresolved":false,"context_lines":[{"line_number":1219,"context_line":""},{"line_number":1220,"context_line":"    value \u003d Column(Text)"},{"line_number":1221,"context_line":"    timestamp \u003d Column(DateTime, nullable\u003dTrue, default\u003dNone)"},{"line_number":1222,"context_line":"    source \u003d Column(String(256))"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F0Co%3D","line":1222,"in_reply_to":"AAAAP3%2F%2F2Cc%3D","updated":"2013-07-11 03:19:20.000000000","message":"Change it to 255, as others do","commit_id":"805d399b78cb113cf881023744c6dcaf2e56efc3"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"9e3abc213289b10317758c67bd958f9db5d5d047","unresolved":false,"context_lines":[{"line_number":130,"context_line":"              \u0027compute_node_id\u0027, \u0027deleted\u0027)"},{"line_number":131,"context_line":"    )"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":134,"context_line":"    key \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":135,"context_line":"    value \u003d Column(String(255))"},{"line_number":136,"context_line":"    compute_node_id \u003d Column(Integer, ForeignKey(\u0027compute_nodes.id\u0027),"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASn%2F%2FbqY%3D","line":133,"updated":"2013-09-04 20:06:07.000000000","message":"How is metrics different then stats?","commit_id":"b7e03a657323544a86644f589757395ac62b0044"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"9ad9dd667696583a31d35c42cce0227005363616","unresolved":false,"context_lines":[{"line_number":130,"context_line":"              \u0027compute_node_id\u0027, \u0027deleted\u0027)"},{"line_number":131,"context_line":"    )"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":134,"context_line":"    key \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":135,"context_line":"    value \u003d Column(String(255))"},{"line_number":136,"context_line":"    compute_node_id \u003d Column(Integer, ForeignKey(\u0027compute_nodes.id\u0027),"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAASn%2F%2FaMk%3D","line":133,"in_reply_to":"AAAASn%2F%2FbqY%3D","updated":"2013-09-05 02:20:49.000000000","message":"Done","commit_id":"b7e03a657323544a86644f589757395ac62b0044"}],"nova/tests/db/test_db_api.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"13f52c8be637201e4c1e70c5f2e857dbc7c4a014","unresolved":false,"context_lines":[{"line_number":5097,"context_line":"                                 hypervisor_hostname\u003d\u0027abracadabra104\u0027,"},{"line_number":5098,"context_line":"                                 host_ip\u003d\u0027127.0.0.1\u0027,"},{"line_number":5099,"context_line":"                                 supported_instances\u003d\u0027\u0027,"},{"line_number":5100,"context_line":"                                 metrics\u003d\"\")"},{"line_number":5101,"context_line":"        # add some random stats"},{"line_number":5102,"context_line":"        self.stats \u003d dict(num_instances\u003d3, num_proj_12345\u003d2,"},{"line_number":5103,"context_line":"                     num_proj_23456\u003d2, num_vm_building\u003d3)"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAASn%2F%2F%2FAA%3D","line":5100,"updated":"2013-08-27 07:34:13.000000000","message":"Consider:\nmetrics\u003d\u0027\u0027","commit_id":"e4260390f3a34c62ca874c9972d92791dbaebf69"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"449249189140935be7203b25cf711342fc4f706d","unresolved":false,"context_lines":[{"line_number":5097,"context_line":"                                 hypervisor_hostname\u003d\u0027abracadabra104\u0027,"},{"line_number":5098,"context_line":"                                 host_ip\u003d\u0027127.0.0.1\u0027,"},{"line_number":5099,"context_line":"                                 supported_instances\u003d\u0027\u0027,"},{"line_number":5100,"context_line":"                                 metrics\u003d\"\")"},{"line_number":5101,"context_line":"        # add some random stats"},{"line_number":5102,"context_line":"        self.stats \u003d dict(num_instances\u003d3, num_proj_12345\u003d2,"},{"line_number":5103,"context_line":"                     num_proj_23456\u003d2, num_vm_building\u003d3)"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAASn%2F%2F6es%3D","line":5100,"in_reply_to":"AAAASn%2F%2F%2FAA%3D","updated":"2013-08-28 02:20:12.000000000","message":"Done","commit_id":"e4260390f3a34c62ca874c9972d92791dbaebf69"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"1c3a4adeb6d1bcf50432012d2bd4ee5523e6ba89","unresolved":false,"context_lines":[{"line_number":5154,"context_line":"        d \u003d {}"},{"line_number":5155,"context_line":"        for s in stats:"},{"line_number":5156,"context_line":"            key \u003d s[\u0027key\u0027]"},{"line_number":5157,"context_line":"            d[key] \u003d int(s[\u0027value\u0027])"},{"line_number":5158,"context_line":"        return d"},{"line_number":5159,"context_line":""},{"line_number":5160,"context_line":"    def _stats_equal(self, stats, new_stats):"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAASn%2F%2Fjjk%3D","line":5157,"updated":"2013-09-03 15:04:25.000000000","message":"Is this intended?  Looks unrelated.","commit_id":"97f3464b932c154ef64ac426af3a10771a064ded"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"4a1de0deec816097325cf3dadd931d26b171850e","unresolved":false,"context_lines":[{"line_number":5154,"context_line":"        d \u003d {}"},{"line_number":5155,"context_line":"        for s in stats:"},{"line_number":5156,"context_line":"            key \u003d s[\u0027key\u0027]"},{"line_number":5157,"context_line":"            d[key] \u003d int(s[\u0027value\u0027])"},{"line_number":5158,"context_line":"        return d"},{"line_number":5159,"context_line":""},{"line_number":5160,"context_line":"    def _stats_equal(self, stats, new_stats):"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAASn%2F%2FgKY%3D","line":5157,"in_reply_to":"AAAASn%2F%2Fjjk%3D","updated":"2013-09-04 01:26:49.000000000","message":"OK, sorry, that is redundant. I will remove it.","commit_id":"97f3464b932c154ef64ac426af3a10771a064ded"}],"nova/tests/db/test_migrations.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"bb12173bdd7e0b580c633448b58744fc1cd32dde","unresolved":false,"context_lines":[{"line_number":2017,"context_line":"    def _pre_upgrade_198(self, engine):"},{"line_number":2018,"context_line":"        self._check_no_compute_node_resource_tables(engine)"},{"line_number":2019,"context_line":""},{"line_number":2020,"context_line":"    def _check_198(self, engine, data):"},{"line_number":2021,"context_line":"        self._check_compute_node_resource_tables(engine)"},{"line_number":2022,"context_line":"        table \u003d \u0027compute_node_resources\u0027"},{"line_number":2023,"context_line":"        db_utils.get_table(engine, table)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F2pA%3D","line":2020,"updated":"2013-07-10 11:43:52.000000000","message":"Check also IntegrityError for UC violation.","commit_id":"805d399b78cb113cf881023744c6dcaf2e56efc3"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"b5b9efbabb5d920af732d064436f3dc192ea918a","unresolved":false,"context_lines":[{"line_number":2017,"context_line":"    def _pre_upgrade_198(self, engine):"},{"line_number":2018,"context_line":"        self._check_no_compute_node_resource_tables(engine)"},{"line_number":2019,"context_line":""},{"line_number":2020,"context_line":"    def _check_198(self, engine, data):"},{"line_number":2021,"context_line":"        self._check_compute_node_resource_tables(engine)"},{"line_number":2022,"context_line":"        table \u003d \u0027compute_node_resources\u0027"},{"line_number":2023,"context_line":"        db_utils.get_table(engine, table)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F0CY%3D","line":2020,"in_reply_to":"AAAAP3%2F%2F2pA%3D","updated":"2013-07-11 03:19:20.000000000","message":"Done","commit_id":"805d399b78cb113cf881023744c6dcaf2e56efc3"}]}
