)]}'
{"cyborg/db/api.py":[{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"4efa7bcc4349e8c07cc7b5347f886260f63338c5","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    def __init__(self):"},{"line_number":42,"context_line":"        \"\"\"Constructor.\"\"\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    # accelerator"},{"line_number":45,"context_line":"    @abc.abstractmethod"},{"line_number":46,"context_line":"    def device_create(self, context, values):"},{"line_number":47,"context_line":"        \"\"\"Create a new device when device is inserted into the host.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_af0ed9e2","line":44,"updated":"2019-01-12 08:22:27.000000000","message":"device","commit_id":"49d97763d962487c09a3a0f90eeb6265262dafbb"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"ccf155975e370bad3e83132605c30182b65e8744","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    def __init__(self):"},{"line_number":42,"context_line":"        \"\"\"Constructor.\"\"\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    # accelerator"},{"line_number":45,"context_line":"    @abc.abstractmethod"},{"line_number":46,"context_line":"    def device_create(self, context, values):"},{"line_number":47,"context_line":"        \"\"\"Create a new device when device is inserted into the host.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_6a69c823","line":44,"in_reply_to":"bfdaf3ff_af0ed9e2","updated":"2019-01-21 14:40:17.000000000","message":"Done","commit_id":"49d97763d962487c09a3a0f90eeb6265262dafbb"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"4efa7bcc4349e8c07cc7b5347f886260f63338c5","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        \"\"\"Get requested device.\"\"\""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @abc.abstractmethod"},{"line_number":54,"context_line":"    def device_list(self, context, limit, marker, sort_key, sort_dir,"},{"line_number":55,"context_line":"                    project_only):"},{"line_number":56,"context_line":"        \"\"\"Get requested list of devices.\"\"\""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_ef2dc146","line":54,"updated":"2019-01-12 08:22:27.000000000","message":"I think we don\u0027t have project related attr on device now, we can add \"project_only\" after we have a design.","commit_id":"49d97763d962487c09a3a0f90eeb6265262dafbb"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"ccf155975e370bad3e83132605c30182b65e8744","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        \"\"\"Get requested device.\"\"\""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @abc.abstractmethod"},{"line_number":54,"context_line":"    def device_list(self, context, limit, marker, sort_key, sort_dir,"},{"line_number":55,"context_line":"                    project_only):"},{"line_number":56,"context_line":"        \"\"\"Get requested list of devices.\"\"\""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_d6498060","line":54,"in_reply_to":"bfdaf3ff_ef2dc146","updated":"2019-01-21 14:40:17.000000000","message":"Done","commit_id":"49d97763d962487c09a3a0f90eeb6265262dafbb"}],"cyborg/db/sqlalchemy/alembic/versions/ede4e3f1a232_new_db_schema.py":[{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"cf939bf49f3d6b2bb77c25190e2455f7d42e233b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        sa.Column(\u0027name\u0027, sa.String(length\u003d32), nullable\u003dFalse),"},{"line_number":52,"context_line":"        sa.column(\u0027num_accelerators\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":53,"context_line":"        sa.Column(\u0027device_id\u0027, sa.Integer(),"},{"line_number":54,"context_line":"                  sa.ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":55,"context_line":"                  nullable\u003dFalse),"},{"line_number":56,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":57,"context_line":"        sa.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_deployables0uuid\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffd0ebdf_bbfe3bac","line":54,"range":{"start_line":54,"start_character":56,"end_line":54,"end_character":63},"updated":"2019-01-03 04:14:28.000000000","message":"Should be RESTRICT according Sundar\u0027s comments","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"8a5697d07c0db200978463ed1af7f5e884f1f182","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        sa.Column(\u0027name\u0027, sa.String(length\u003d32), nullable\u003dFalse),"},{"line_number":52,"context_line":"        sa.column(\u0027num_accelerators\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":53,"context_line":"        sa.Column(\u0027device_id\u0027, sa.Integer(),"},{"line_number":54,"context_line":"                  sa.ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":55,"context_line":"                  nullable\u003dFalse),"},{"line_number":56,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":57,"context_line":"        sa.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_deployables0uuid\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_e05fde3e","line":54,"range":{"start_line":54,"start_character":56,"end_line":54,"end_character":63},"in_reply_to":"ffd0ebdf_bbfe3bac","updated":"2019-01-10 03:28:20.000000000","message":"Done","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"cf939bf49f3d6b2bb77c25190e2455f7d42e233b","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        sa.Column(\u0027id\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":70,"context_line":"        sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":71,"context_line":"        sa.Column(\u0027deployable_id\u0027, sa.Integer(),"},{"line_number":72,"context_line":"                  sa.ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":73,"context_line":"                  nullable\u003dFalse),"},{"line_number":74,"context_line":"        sa.Column(\u0027key\u0027, sa.Text(), nullable\u003dFalse),"},{"line_number":75,"context_line":"        sa.Column(\u0027value\u0027, sa.Text(), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffd0ebdf_3bafab95","line":72,"range":{"start_line":72,"start_character":60,"end_line":72,"end_character":67},"updated":"2019-01-03 04:14:28.000000000","message":"Should be RESTRICT according Sundar\u0027s comments","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"8a5697d07c0db200978463ed1af7f5e884f1f182","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        sa.Column(\u0027id\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":70,"context_line":"        sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":71,"context_line":"        sa.Column(\u0027deployable_id\u0027, sa.Integer(),"},{"line_number":72,"context_line":"                  sa.ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":73,"context_line":"                  nullable\u003dFalse),"},{"line_number":74,"context_line":"        sa.Column(\u0027key\u0027, sa.Text(), nullable\u003dFalse),"},{"line_number":75,"context_line":"        sa.Column(\u0027value\u0027, sa.Text(), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_2046467e","line":72,"range":{"start_line":72,"start_character":60,"end_line":72,"end_character":67},"in_reply_to":"ffd0ebdf_3bafab95","updated":"2019-01-10 03:28:20.000000000","message":"Done","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"cf939bf49f3d6b2bb77c25190e2455f7d42e233b","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        sa.Column(\u0027id\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":88,"context_line":"        sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":89,"context_line":"        sa.Column(\u0027device_id\u0027, sa.Integer(),"},{"line_number":90,"context_line":"                  sa.ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":91,"context_line":"                  nullable\u003dFalse),"},{"line_number":92,"context_line":"        sa.Column(\u0027control_type\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":93,"context_line":"        sa.Column(\u0027control_info\u0027, sa.Text(), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffd0ebdf_db7c5f22","line":90,"range":{"start_line":90,"start_character":56,"end_line":90,"end_character":63},"updated":"2019-01-03 04:14:28.000000000","message":"Should be RESTRICT according Sundar\u0027s comments","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"8a5697d07c0db200978463ed1af7f5e884f1f182","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        sa.Column(\u0027id\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":88,"context_line":"        sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":89,"context_line":"        sa.Column(\u0027device_id\u0027, sa.Integer(),"},{"line_number":90,"context_line":"                  sa.ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":91,"context_line":"                  nullable\u003dFalse),"},{"line_number":92,"context_line":"        sa.Column(\u0027control_type\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":93,"context_line":"        sa.Column(\u0027control_info\u0027, sa.Text(), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_a080f68c","line":90,"range":{"start_line":90,"start_character":56,"end_line":90,"end_character":63},"in_reply_to":"ffd0ebdf_db7c5f22","updated":"2019-01-10 03:28:20.000000000","message":"Done","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"cf939bf49f3d6b2bb77c25190e2455f7d42e233b","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        sa.Column(\u0027device_id\u0027, sa.Integer(),"},{"line_number":90,"context_line":"                  sa.ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":91,"context_line":"                  nullable\u003dFalse),"},{"line_number":92,"context_line":"        sa.Column(\u0027control_type\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":93,"context_line":"        sa.Column(\u0027control_info\u0027, sa.Text(), nullable\u003dFalse),"},{"line_number":94,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":95,"context_line":"        sa.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_controlpath_ids0uuid\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffd0ebdf_5b894f24","line":92,"range":{"start_line":92,"start_character":19,"end_line":92,"end_character":31},"updated":"2019-01-03 04:14:28.000000000","message":"In the spec, we made it 255 bytes varchar","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"8a5697d07c0db200978463ed1af7f5e884f1f182","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        sa.Column(\u0027device_id\u0027, sa.Integer(),"},{"line_number":90,"context_line":"                  sa.ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":91,"context_line":"                  nullable\u003dFalse),"},{"line_number":92,"context_line":"        sa.Column(\u0027control_type\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":93,"context_line":"        sa.Column(\u0027control_info\u0027, sa.Text(), nullable\u003dFalse),"},{"line_number":94,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":95,"context_line":"        sa.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_controlpath_ids0uuid\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_c07bbabb","line":92,"range":{"start_line":92,"start_character":19,"end_line":92,"end_character":31},"in_reply_to":"ffd0ebdf_5b894f24","updated":"2019-01-10 03:28:20.000000000","message":"Done","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"cf939bf49f3d6b2bb77c25190e2455f7d42e233b","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        sa.Column(\u0027id\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":106,"context_line":"        sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":107,"context_line":"        sa.Column(\u0027device_id\u0027, sa.Integer(),"},{"line_number":108,"context_line":"                  sa.ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":109,"context_line":"                  nullable\u003dFalse),"},{"line_number":110,"context_line":"        sa.Column(\u0027handle_type\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":111,"context_line":"        sa.Column(\u0027attach_info\u0027, sa.Text(), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffd0ebdf_fb79232f","line":108,"range":{"start_line":108,"start_character":56,"end_line":108,"end_character":63},"updated":"2019-01-03 04:14:28.000000000","message":"Should be RESTRICT according Sundar\u0027s comments","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"8a5697d07c0db200978463ed1af7f5e884f1f182","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        sa.Column(\u0027id\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":106,"context_line":"        sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":107,"context_line":"        sa.Column(\u0027device_id\u0027, sa.Integer(),"},{"line_number":108,"context_line":"                  sa.ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":109,"context_line":"                  nullable\u003dFalse),"},{"line_number":110,"context_line":"        sa.Column(\u0027handle_type\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":111,"context_line":"        sa.Column(\u0027attach_info\u0027, sa.Text(), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_604c4e9e","line":108,"range":{"start_line":108,"start_character":56,"end_line":108,"end_character":63},"in_reply_to":"ffd0ebdf_fb79232f","updated":"2019-01-10 03:28:20.000000000","message":"Done","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"cf939bf49f3d6b2bb77c25190e2455f7d42e233b","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        sa.Column(\u0027device_instance_uuid\u0027, sa.String(length\u003d36),"},{"line_number":146,"context_line":"                  nullable\u003dTrue),"},{"line_number":147,"context_line":"        sa.Column(\u0027attach_handle_id\u0027, sa.Integer(),"},{"line_number":148,"context_line":"                  sa.ForeignKey(\u0027attach_handles.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":149,"context_line":"                  nullable\u003dTrue),"},{"line_number":150,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":151,"context_line":"        sa.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_ext_arqs0uuid\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffd0ebdf_9b76d73e","line":148,"range":{"start_line":148,"start_character":63,"end_line":148,"end_character":70},"updated":"2019-01-03 04:14:28.000000000","message":"Should be RESTRICT according Sundar\u0027s comments","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"8a5697d07c0db200978463ed1af7f5e884f1f182","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        sa.Column(\u0027device_instance_uuid\u0027, sa.String(length\u003d36),"},{"line_number":146,"context_line":"                  nullable\u003dTrue),"},{"line_number":147,"context_line":"        sa.Column(\u0027attach_handle_id\u0027, sa.Integer(),"},{"line_number":148,"context_line":"                  sa.ForeignKey(\u0027attach_handles.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":149,"context_line":"                  nullable\u003dTrue),"},{"line_number":150,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":151,"context_line":"        sa.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_ext_arqs0uuid\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_a059d65a","line":148,"range":{"start_line":148,"start_character":63,"end_line":148,"end_character":70},"in_reply_to":"ffd0ebdf_9b76d73e","updated":"2019-01-10 03:28:20.000000000","message":"Done","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"4b440578a03d61fb3219297fae499760c716a884","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    op.create_table("},{"line_number":136,"context_line":"        \u0027ext_arqs\u0027,"},{"line_number":137,"context_line":"        sa.Column(\u0027created_at\u0027, sa.DateTime(), nullable\u003dTrue),"},{"line_number":138,"context_line":"        sa.Column(\u0027updated_at\u0027, sa.DateTime(), nullable\u003dTrue),"},{"line_number":139,"context_line":"        sa.Column(\u0027id\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":140,"context_line":"        sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":141,"context_line":"        sa.Column(\u0027state\u0027, sa.String(length\u003d32), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfdaf3ff_d14f1ebb","line":138,"updated":"2019-01-15 02:05:47.000000000","message":"I think we should have project_id in this table.","commit_id":"1bece043175e1929b1b2c1fdaa5ef290bede5d0a"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"ccf155975e370bad3e83132605c30182b65e8744","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    op.create_table("},{"line_number":136,"context_line":"        \u0027ext_arqs\u0027,"},{"line_number":137,"context_line":"        sa.Column(\u0027created_at\u0027, sa.DateTime(), nullable\u003dTrue),"},{"line_number":138,"context_line":"        sa.Column(\u0027updated_at\u0027, sa.DateTime(), nullable\u003dTrue),"},{"line_number":139,"context_line":"        sa.Column(\u0027id\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":140,"context_line":"        sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":141,"context_line":"        sa.Column(\u0027state\u0027, sa.String(length\u003d32), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_2ac66069","line":138,"in_reply_to":"bfdaf3ff_d14f1ebb","updated":"2019-01-21 14:40:17.000000000","message":"Done","commit_id":"1bece043175e1929b1b2c1fdaa5ef290bede5d0a"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"e3ff86cd30c5a0608683abd4422ebcf6dd193ece","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        sa.Column(\u0027device_rp_uuid\u0027, sa.String(length\u003d36), nullable\u003dTrue),"},{"line_number":148,"context_line":"        sa.Column(\u0027device_instance_uuid\u0027, sa.String(length\u003d36),"},{"line_number":149,"context_line":"                  nullable\u003dTrue),"},{"line_number":150,"context_line":"        sa.Column(\u0027attach_handle_id\u0027, sa.Integer(),"},{"line_number":151,"context_line":"                  sa.ForeignKey(\u0027attach_handles.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":152,"context_line":"                  nullable\u003dTrue),"},{"line_number":153,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_9d6a1d7e","line":150,"updated":"2019-01-22 15:20:43.000000000","message":"We need a substate as Sundar\u0027s patch.\nhttps://review.openstack.org/#/c/625285/3/cyborg/db/sqlalchemy/alembic/versions/migrate_to_stein_schema.py","commit_id":"06ffe38ba0e8de8601e404420137e3400e6e10ec"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"51545497bb52b0baa6e5b261b8bfa72813e69e4a","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        sa.Column(\u0027device_rp_uuid\u0027, sa.String(length\u003d36), nullable\u003dTrue),"},{"line_number":148,"context_line":"        sa.Column(\u0027device_instance_uuid\u0027, sa.String(length\u003d36),"},{"line_number":149,"context_line":"                  nullable\u003dTrue),"},{"line_number":150,"context_line":"        sa.Column(\u0027attach_handle_id\u0027, sa.Integer(),"},{"line_number":151,"context_line":"                  sa.ForeignKey(\u0027attach_handles.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":152,"context_line":"                  nullable\u003dTrue),"},{"line_number":153,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_584fa333","line":150,"in_reply_to":"9fdfeff1_9d6a1d7e","updated":"2019-02-12 05:00:57.000000000","message":"Done","commit_id":"06ffe38ba0e8de8601e404420137e3400e6e10ec"},{"author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"change_message_id":"e3bfee220e4afb1ba545876ecb250776f8a5d306","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                  sa.ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":52,"context_line":"                  nullable\u003dTrue),"},{"line_number":53,"context_line":"        sa.Column(\u0027name\u0027, sa.String(length\u003d32), nullable\u003dFalse),"},{"line_number":54,"context_line":"        sa.column(\u0027num_accelerators\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":55,"context_line":"        sa.Column(\u0027device_id\u0027, sa.Integer(),"},{"line_number":56,"context_line":"                  sa.ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":57,"context_line":"                  nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_6d2e87fb","line":54,"range":{"start_line":54,"start_character":11,"end_line":54,"end_character":17},"updated":"2019-01-24 03:04:09.000000000","message":"this should be \"Column\", this caused the devstack db upgrade error.","commit_id":"1a89b23878fae2ef7f13bed5e4cd0fd70be6a56e"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"51545497bb52b0baa6e5b261b8bfa72813e69e4a","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                  sa.ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":52,"context_line":"                  nullable\u003dTrue),"},{"line_number":53,"context_line":"        sa.Column(\u0027name\u0027, sa.String(length\u003d32), nullable\u003dFalse),"},{"line_number":54,"context_line":"        sa.column(\u0027num_accelerators\u0027, sa.Integer(), nullable\u003dFalse),"},{"line_number":55,"context_line":"        sa.Column(\u0027device_id\u0027, sa.Integer(),"},{"line_number":56,"context_line":"                  sa.ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":57,"context_line":"                  nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_78738781","line":54,"range":{"start_line":54,"start_character":11,"end_line":54,"end_character":17},"in_reply_to":"9fdfeff1_6d2e87fb","updated":"2019-02-12 05:00:57.000000000","message":"Thanks very much, Done!","commit_id":"1a89b23878fae2ef7f13bed5e4cd0fd70be6a56e"}],"cyborg/db/sqlalchemy/models.py":[{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"258889a9ab3a555e73767ddd0cb4fd51873ec55d","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":80,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":81,"context_line":"    type \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":82,"context_line":"    vendor \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":83,"context_line":"    model \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":84,"context_line":"    std_board_info \u003d Column(Text, nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffd0ebdf_412cfc46","line":81,"range":{"start_line":81,"start_character":25,"end_line":81,"end_character":28},"updated":"2019-01-03 12:54:59.000000000","message":"30","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"258889a9ab3a555e73767ddd0cb4fd51873ec55d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    root_id \u003d Column(Integer, ForeignKey(\u0027deployables.id\u0027), nullable\u003dTrue)"},{"line_number":105,"context_line":"    name \u003d Column(String(32), nullable\u003dFalse)"},{"line_number":106,"context_line":"    num_accelerators \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":107,"context_line":"    device_id \u003d Column(Integer, ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":108,"context_line":"                       nullable\u003dFalse)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ffd0ebdf_fc96f694","line":107,"range":{"start_line":107,"start_character":4,"end_line":107,"end_character":13},"updated":"2019-01-03 12:54:59.000000000","message":"Hi Coco, I am not sure if I missed anything, but where can we find \u0027pcie_address\u0027? Or Why \"pcie_address\" is removed?","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"cf939bf49f3d6b2bb77c25190e2455f7d42e233b","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    root_id \u003d Column(Integer, ForeignKey(\u0027deployables.id\u0027), nullable\u003dTrue)"},{"line_number":105,"context_line":"    name \u003d Column(String(32), nullable\u003dFalse)"},{"line_number":106,"context_line":"    num_accelerators \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":107,"context_line":"    device_id \u003d Column(Integer, ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":108,"context_line":"                       nullable\u003dFalse)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ffd0ebdf_7b93f350","line":107,"range":{"start_line":107,"start_character":67,"end_line":107,"end_character":74},"updated":"2019-01-03 04:14:28.000000000","message":"Should be RESTRICT according Sundar\u0027s comments","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"8a5697d07c0db200978463ed1af7f5e884f1f182","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    root_id \u003d Column(Integer, ForeignKey(\u0027deployables.id\u0027), nullable\u003dTrue)"},{"line_number":105,"context_line":"    name \u003d Column(String(32), nullable\u003dFalse)"},{"line_number":106,"context_line":"    num_accelerators \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":107,"context_line":"    device_id \u003d Column(Integer, ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":108,"context_line":"                       nullable\u003dFalse)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_8098521b","line":107,"range":{"start_line":107,"start_character":67,"end_line":107,"end_character":74},"in_reply_to":"ffd0ebdf_7b93f350","updated":"2019-01-10 03:28:20.000000000","message":"done.","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"cf939bf49f3d6b2bb77c25190e2455f7d42e233b","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":120,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":121,"context_line":"    deployable_id \u003d Column(Integer,"},{"line_number":122,"context_line":"                           ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":123,"context_line":"                           nullable\u003dFalse)"},{"line_number":124,"context_line":"    key \u003d Column(Text, nullable\u003dFalse)"},{"line_number":125,"context_line":"    value \u003d Column(Text, nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffd0ebdf_1b98a768","line":122,"range":{"start_line":122,"start_character":66,"end_line":122,"end_character":73},"updated":"2019-01-03 04:14:28.000000000","message":"Should be RESTRICT according Sundar\u0027s comments","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"8a5697d07c0db200978463ed1af7f5e884f1f182","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":120,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":121,"context_line":"    deployable_id \u003d Column(Integer,"},{"line_number":122,"context_line":"                           ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":123,"context_line":"                           nullable\u003dFalse)"},{"line_number":124,"context_line":"    key \u003d Column(Text, nullable\u003dFalse)"},{"line_number":125,"context_line":"    value \u003d Column(Text, nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_0b09e32a","line":122,"range":{"start_line":122,"start_character":66,"end_line":122,"end_character":73},"in_reply_to":"ffd0ebdf_1b98a768","updated":"2019-01-10 03:28:20.000000000","message":"Done","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"cf939bf49f3d6b2bb77c25190e2455f7d42e233b","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":140,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":141,"context_line":"    device_id \u003d Column(Integer, ForeignKey(\u0027devices.id\u0027,"},{"line_number":142,"context_line":"                                           ondelete\u003d\"CASCADE\"), nullable\u003dFalse)"},{"line_number":143,"context_line":"    control_type \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":144,"context_line":"    control_info \u003d Column(Text, nullable\u003dFalse)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ffd0ebdf_3b9d6b59","line":142,"range":{"start_line":142,"start_character":53,"end_line":142,"end_character":60},"updated":"2019-01-03 04:14:28.000000000","message":"Should be RESTRICT according Sundar\u0027s comments","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"8a5697d07c0db200978463ed1af7f5e884f1f182","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":140,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":141,"context_line":"    device_id \u003d Column(Integer, ForeignKey(\u0027devices.id\u0027,"},{"line_number":142,"context_line":"                                           ondelete\u003d\"CASCADE\"), nullable\u003dFalse)"},{"line_number":143,"context_line":"    control_type \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":144,"context_line":"    control_info \u003d Column(Text, nullable\u003dFalse)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_4bffeb00","line":142,"range":{"start_line":142,"start_character":53,"end_line":142,"end_character":60},"in_reply_to":"ffd0ebdf_3b9d6b59","updated":"2019-01-10 03:28:20.000000000","message":"Done","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"258889a9ab3a555e73767ddd0cb4fd51873ec55d","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":158,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":159,"context_line":"    device_id \u003d Column(Integer, ForeignKey(\u0027devices.id\u0027,"},{"line_number":160,"context_line":"                                           ondelete\u003d\"CASCADE\"), nullable\u003dFalse)"},{"line_number":161,"context_line":"    attach_type \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":162,"context_line":"    attach_info \u003d Column(Text, nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffd0ebdf_1ccc1a88","line":159,"range":{"start_line":159,"start_character":4,"end_line":159,"end_character":13},"updated":"2019-01-03 12:54:59.000000000","message":"Coco, I was not very clear why do we need device_id here?  One device may have too many AttachHandles while less AttachHandles are derived from one \"deployable_id\". If we keep device_id, we may have lots of attach handles sharing one same device_id.\n\nIMHO, we should keep \"deployable_id\" here just like that in the Attribute Table.","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"8a5697d07c0db200978463ed1af7f5e884f1f182","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":158,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":159,"context_line":"    device_id \u003d Column(Integer, ForeignKey(\u0027devices.id\u0027,"},{"line_number":160,"context_line":"                                           ondelete\u003d\"CASCADE\"), nullable\u003dFalse)"},{"line_number":161,"context_line":"    attach_type \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":162,"context_line":"    attach_info \u003d Column(Text, nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_8b35d3dc","line":159,"range":{"start_line":159,"start_character":4,"end_line":159,"end_character":13},"in_reply_to":"ffd0ebdf_1ccc1a88","updated":"2019-01-10 03:28:20.000000000","message":"According to Sundar\u0027s Design and Li\u0027s spec, attach-handles is used for VM, we don\u0027t care which deployable it belongs to, but we do care which device it belongs to, we need \"type, hostname, vendor\" these kinds of information when attaching to a VM.","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":27458,"name":"Li Liu","email":"liliueecg@gmail.com","username":"liliu"},"change_message_id":"cf939bf49f3d6b2bb77c25190e2455f7d42e233b","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":158,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":159,"context_line":"    device_id \u003d Column(Integer, ForeignKey(\u0027devices.id\u0027,"},{"line_number":160,"context_line":"                                           ondelete\u003d\"CASCADE\"), nullable\u003dFalse)"},{"line_number":161,"context_line":"    attach_type \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":162,"context_line":"    attach_info \u003d Column(Text, nullable\u003dFalse)"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ffd0ebdf_dba1bf97","line":160,"range":{"start_line":160,"start_character":53,"end_line":160,"end_character":60},"updated":"2019-01-03 04:14:28.000000000","message":"Should be RESTRICT according Sundar\u0027s comments","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"8a5697d07c0db200978463ed1af7f5e884f1f182","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":158,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":159,"context_line":"    device_id \u003d Column(Integer, ForeignKey(\u0027devices.id\u0027,"},{"line_number":160,"context_line":"                                           ondelete\u003d\"CASCADE\"), nullable\u003dFalse)"},{"line_number":161,"context_line":"    attach_type \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":162,"context_line":"    attach_info \u003d Column(Text, nullable\u003dFalse)"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd5e7cf_ab30d7e9","line":160,"range":{"start_line":160,"start_character":53,"end_line":160,"end_character":60},"in_reply_to":"ffd0ebdf_dba1bf97","updated":"2019-01-10 03:28:20.000000000","message":"Done","commit_id":"3642912325eaa6f4b223d8877ba2d738f3ade430"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"4efa7bcc4349e8c07cc7b5347f886260f63338c5","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":196,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":197,"context_line":"    state \u003d Column(String(32), nullable\u003dFalse)"},{"line_number":198,"context_line":"    profile_json \u003d Column(Text, nullable\u003dFalse)"},{"line_number":199,"context_line":"    device_profile_id \u003d Column(Integer, ForeignKey(\u0027device_profiles.id\u0027,"},{"line_number":200,"context_line":"                                                   ondelete\u003d\"RESTRICT\"),"},{"line_number":201,"context_line":"                               nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_0f0a85d1","line":198,"updated":"2019-01-12 08:22:27.000000000","message":"Do we need profile_json in ExtArq? I don\u0027t find this column in db schema.","commit_id":"49d97763d962487c09a3a0f90eeb6265262dafbb"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"ccf155975e370bad3e83132605c30182b65e8744","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":196,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":197,"context_line":"    state \u003d Column(String(32), nullable\u003dFalse)"},{"line_number":198,"context_line":"    profile_json \u003d Column(Text, nullable\u003dFalse)"},{"line_number":199,"context_line":"    device_profile_id \u003d Column(Integer, ForeignKey(\u0027device_profiles.id\u0027,"},{"line_number":200,"context_line":"                                                   ondelete\u003d\"RESTRICT\"),"},{"line_number":201,"context_line":"                               nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_35f2c871","line":198,"in_reply_to":"bfdaf3ff_0f0a85d1","updated":"2019-01-21 14:40:17.000000000","message":"I think we don\u0027t need. \nRemove it, done.","commit_id":"49d97763d962487c09a3a0f90eeb6265262dafbb"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"b34e39b84f7f087c69a34889b119d14259c72ff2","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":140,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":141,"context_line":"    device_id \u003d Column(Integer,"},{"line_number":142,"context_line":"                       ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":143,"context_line":"                       nullable\u003dFalse)"},{"line_number":144,"context_line":"    control_type \u003d Column(Integer, nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_61b578ee","line":141,"range":{"start_line":141,"start_character":4,"end_line":141,"end_character":13},"updated":"2019-01-21 03:24:22.000000000","message":"same as line 160","commit_id":"1bece043175e1929b1b2c1fdaa5ef290bede5d0a"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"ccf155975e370bad3e83132605c30182b65e8744","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":140,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":141,"context_line":"    device_id \u003d Column(Integer,"},{"line_number":142,"context_line":"                       ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":143,"context_line":"                       nullable\u003dFalse)"},{"line_number":144,"context_line":"    control_type \u003d Column(Integer, nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_0a803c8b","line":141,"range":{"start_line":141,"start_character":4,"end_line":141,"end_character":13},"in_reply_to":"9fdfeff1_61b578ee","updated":"2019-01-21 14:40:17.000000000","message":"Done","commit_id":"1bece043175e1929b1b2c1fdaa5ef290bede5d0a"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"a11432c544526f88b4ef51805079bc5f8e333475","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    device_id \u003d Column(Integer,"},{"line_number":142,"context_line":"                       ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":143,"context_line":"                       nullable\u003dFalse)"},{"line_number":144,"context_line":"    control_type \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":145,"context_line":"    control_info \u003d Column(Text, nullable\u003dFalse)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_f60df1e7","line":144,"range":{"start_line":144,"start_character":4,"end_line":144,"end_character":50},"updated":"2019-01-31 06:32:03.000000000","message":"just one comment: please remember to change this to Enum, and maybe need to rename it to cpid_type/cpid_info according to Sundar\u0027s comment here https://review.openstack.org/#/c/630579/9/cyborg/objects/control_path.py\n\nsame for attach_handle. :)","commit_id":"1bece043175e1929b1b2c1fdaa5ef290bede5d0a"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"51545497bb52b0baa6e5b261b8bfa72813e69e4a","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    device_id \u003d Column(Integer,"},{"line_number":142,"context_line":"                       ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":143,"context_line":"                       nullable\u003dFalse)"},{"line_number":144,"context_line":"    control_type \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":145,"context_line":"    control_info \u003d Column(Text, nullable\u003dFalse)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_cede5b3d","line":144,"range":{"start_line":144,"start_character":4,"end_line":144,"end_character":50},"in_reply_to":"9fdfeff1_f60df1e7","updated":"2019-02-12 05:00:57.000000000","message":"Done","commit_id":"1bece043175e1929b1b2c1fdaa5ef290bede5d0a"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"b34e39b84f7f087c69a34889b119d14259c72ff2","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":159,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":160,"context_line":"    device_id \u003d Column(Integer,"},{"line_number":161,"context_line":"                       ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":162,"context_line":"                       nullable\u003dFalse)"},{"line_number":163,"context_line":"    attach_type \u003d Column(Integer, nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_21e69018","line":160,"range":{"start_line":160,"start_character":4,"end_line":160,"end_character":13},"updated":"2019-01-21 03:24:22.000000000","message":"replace it by deployable_id according to last weekly meeting. \nhttp://eavesdrop.openstack.org/meetings/openstack_cyborg/2019/openstack_cyborg.2019-01-16-03.04.log.html","commit_id":"1bece043175e1929b1b2c1fdaa5ef290bede5d0a"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"ccf155975e370bad3e83132605c30182b65e8744","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":159,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":160,"context_line":"    device_id \u003d Column(Integer,"},{"line_number":161,"context_line":"                       ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":162,"context_line":"                       nullable\u003dFalse)"},{"line_number":163,"context_line":"    attach_type \u003d Column(Integer, nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_2a7d00b1","line":160,"range":{"start_line":160,"start_character":4,"end_line":160,"end_character":13},"in_reply_to":"9fdfeff1_21e69018","updated":"2019-01-21 14:40:17.000000000","message":"Done","commit_id":"1bece043175e1929b1b2c1fdaa5ef290bede5d0a"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"b34e39b84f7f087c69a34889b119d14259c72ff2","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    name \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":179,"context_line":"    profile_json \u003d Column(Text, nullable\u003dFalse)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"class ExtArq(Base):"},{"line_number":183,"context_line":"    \"\"\"Reprensents external nova request for attach related operations.\"\"\""},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_e1ef28e7","line":181,"updated":"2019-01-21 03:24:22.000000000","message":"missing a new model \"ARQ\" here?","commit_id":"1bece043175e1929b1b2c1fdaa5ef290bede5d0a"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"ccf155975e370bad3e83132605c30182b65e8744","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    name \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":179,"context_line":"    profile_json \u003d Column(Text, nullable\u003dFalse)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"class ExtArq(Base):"},{"line_number":183,"context_line":"    \"\"\"Reprensents external nova request for attach related operations.\"\"\""},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_6a5c684b","line":181,"in_reply_to":"9fdfeff1_e1ef28e7","updated":"2019-01-21 14:40:17.000000000","message":"ARQ information is stored in the ExtArq table, it can be implemented in the Object Level, not the model level.","commit_id":"1bece043175e1929b1b2c1fdaa5ef290bede5d0a"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fc5007c8f54ea1c8fd9fe0125a9945deb6943216","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":140,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":141,"context_line":"    deployable_id \u003d Column(Integer,"},{"line_number":142,"context_line":"                           ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":143,"context_line":"                           nullable\u003dFalse)"},{"line_number":144,"context_line":"    control_type \u003d Column(Integer, nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_0bba10c0","line":141,"updated":"2019-01-28 04:41:37.000000000","message":"CP ID points to device ID in the spec, as well as in the pilot code. This is another area where both types of scenarios are possible but we wouldn\u0027t know now because we have only one deployable per device ID.","commit_id":"1a89b23878fae2ef7f13bed5e4cd0fd70be6a56e"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"51545497bb52b0baa6e5b261b8bfa72813e69e4a","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":140,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":141,"context_line":"    deployable_id \u003d Column(Integer,"},{"line_number":142,"context_line":"                           ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":143,"context_line":"                           nullable\u003dFalse)"},{"line_number":144,"context_line":"    control_type \u003d Column(Integer, nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_5349b4b4","line":141,"in_reply_to":"9fdfeff1_0bba10c0","updated":"2019-02-12 05:00:57.000000000","message":"Done","commit_id":"1a89b23878fae2ef7f13bed5e4cd0fd70be6a56e"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"fc5007c8f54ea1c8fd9fe0125a9945deb6943216","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":160,"context_line":"    deployable_id \u003d Column(Integer,"},{"line_number":161,"context_line":"                           ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":162,"context_line":"                           nullable\u003dFalse)"},{"line_number":163,"context_line":"    attach_type \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":164,"context_line":"    attach_info \u003d Column(Text, nullable\u003dFalse)"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_2b96f440","line":162,"updated":"2019-01-28 04:41:37.000000000","message":"Add a foreign key reference to a Control Path ID.","commit_id":"1a89b23878fae2ef7f13bed5e4cd0fd70be6a56e"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"51545497bb52b0baa6e5b261b8bfa72813e69e4a","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":160,"context_line":"    deployable_id \u003d Column(Integer,"},{"line_number":161,"context_line":"                           ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":162,"context_line":"                           nullable\u003dFalse)"},{"line_number":163,"context_line":"    attach_type \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":164,"context_line":"    attach_info \u003d Column(Text, nullable\u003dFalse)"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_33faf042","line":162,"in_reply_to":"9fdfeff1_2b96f440","updated":"2019-02-12 05:00:57.000000000","message":"Done","commit_id":"1a89b23878fae2ef7f13bed5e4cd0fd70be6a56e"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"1fdb53d3eaf3bc51de0b65dbfd5154a49c43296a","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    deployable_id \u003d Column(Integer,"},{"line_number":161,"context_line":"                           ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":162,"context_line":"                           nullable\u003dFalse)"},{"line_number":163,"context_line":"    attach_type \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":164,"context_line":"    attach_info \u003d Column(Text, nullable\u003dFalse)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_ac9228f5","line":163,"updated":"2019-01-24 14:47:21.000000000","message":"Why is attach_type an integer? It represents whether the handle is of type PCI, mediated device, etc. It could be a string or a enum. The string may be simpler.","commit_id":"1a89b23878fae2ef7f13bed5e4cd0fd70be6a56e"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"51545497bb52b0baa6e5b261b8bfa72813e69e4a","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    deployable_id \u003d Column(Integer,"},{"line_number":161,"context_line":"                           ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":162,"context_line":"                           nullable\u003dFalse)"},{"line_number":163,"context_line":"    attach_type \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":164,"context_line":"    attach_info \u003d Column(Text, nullable\u003dFalse)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_13c48cf4","line":163,"in_reply_to":"9fdfeff1_ac9228f5","updated":"2019-02-12 05:00:57.000000000","message":"change to Enum(PCI, MDEV) right now.","commit_id":"1a89b23878fae2ef7f13bed5e4cd0fd70be6a56e"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3ace72cbf2b3274fd1281005115ed5c9f8d91582","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"class DeviceProfile(Base):"},{"line_number":168,"context_line":"    \"\"\"Reprensents users\u0027 specific requirements.\"\"\""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    __tablename__ \u003d \u0027device_profiles\u0027"},{"line_number":171,"context_line":"    __table_args__ \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_607cdb82","line":168,"range":{"start_line":168,"start_character":7,"end_line":168,"end_character":18},"updated":"2019-01-31 02:41:23.000000000","message":"Represents","commit_id":"1a89b23878fae2ef7f13bed5e4cd0fd70be6a56e"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"2c671f0c1369029bf0d83c81566bf189af16052e","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    profile_json \u003d Column(Text, nullable\u003dFalse)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"class ExtArq(Base):"},{"line_number":183,"context_line":"    \"\"\"Reprensents external nova request for attach related operations.\"\"\""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    __tablename__ \u003d \u0027ext_arqs\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_b4e0c127","line":182,"updated":"2019-01-31 08:35:02.000000000","message":"I have some different idea on this name and model design, it would be good if we could take a look before we make it merged.\n\n[1] https://review.openstack.org/#/c/630427/4/cyborg/objects/arq.py@30","commit_id":"1a89b23878fae2ef7f13bed5e4cd0fd70be6a56e"},{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"3ace72cbf2b3274fd1281005115ed5c9f8d91582","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"class ExtArq(Base):"},{"line_number":183,"context_line":"    \"\"\"Reprensents external nova request for attach related operations.\"\"\""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    __tablename__ \u003d \u0027ext_arqs\u0027"},{"line_number":186,"context_line":"    __table_args__ \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_40799791","line":183,"range":{"start_line":183,"start_character":7,"end_line":183,"end_character":18},"updated":"2019-01-31 02:41:23.000000000","message":"Represents","commit_id":"1a89b23878fae2ef7f13bed5e4cd0fd70be6a56e"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"42f6d0173c72fd30b3c9369b21fc5cf405b55fe0","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    \"\"\"Represents the devices.\"\"\""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    __tablename__ \u003d \u0027devices\u0027"},{"line_number":74,"context_line":"    __table_args__ \u003d ("},{"line_number":75,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_devices0uuid\u0027),"},{"line_number":76,"context_line":"        table_args()"},{"line_number":77,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_6bfaaf43","line":74,"updated":"2019-02-12 21:33:03.000000000","message":"IMHO, this way of expressing uniqueness is verbose. It is shorter, and easier to read, to put this in the uuid Column field, as in next comment.","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"4eb8bf452167aefb276f6685a801c0a6bd0dec11","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    \"\"\"Represents the devices.\"\"\""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    __tablename__ \u003d \u0027devices\u0027"},{"line_number":74,"context_line":"    __table_args__ \u003d ("},{"line_number":75,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_devices0uuid\u0027),"},{"line_number":76,"context_line":"        table_args()"},{"line_number":77,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_f5e98ce2","line":74,"in_reply_to":"9fdfeff1_6bfaaf43","updated":"2019-02-14 09:43:14.000000000","message":"Done.\nPls check new patch:\nhttps://review.openstack.org/#/c/636858/","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"42f6d0173c72fd30b3c9369b21fc5cf405b55fe0","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    )"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":80,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":81,"context_line":"    type \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":82,"context_line":"    vendor \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":83,"context_line":"    model \u003d Column(String(255), nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_0ba1a346","line":80,"updated":"2019-02-12 21:33:03.000000000","message":"uuid \u003d Column(..., unique\u003dTrue)","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"4eb8bf452167aefb276f6685a801c0a6bd0dec11","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    )"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":80,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":81,"context_line":"    type \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":82,"context_line":"    vendor \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":83,"context_line":"    model \u003d Column(String(255), nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_95bcc0dc","line":80,"in_reply_to":"9fdfeff1_0ba1a346","updated":"2019-02-14 09:43:14.000000000","message":"Done","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"42f6d0173c72fd30b3c9369b21fc5cf405b55fe0","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_deployables0uuid\u0027),"},{"line_number":95,"context_line":"        Index(\u0027deployables_parent_id_idx\u0027, \u0027parent_id\u0027),"},{"line_number":96,"context_line":"        Index(\u0027deployables_root_id_idx\u0027, \u0027root_id\u0027),"},{"line_number":97,"context_line":"        Index(\u0027deployables_device_id_idx\u0027, \u0027device_id\u0027),"},{"line_number":98,"context_line":"        table_args()"},{"line_number":99,"context_line":"    )"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_0602fa6f","line":97,"updated":"2019-02-12 21:33:03.000000000","message":"It is shorter/easier to say Column(..., index\u003dTrue)","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"4eb8bf452167aefb276f6685a801c0a6bd0dec11","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_deployables0uuid\u0027),"},{"line_number":95,"context_line":"        Index(\u0027deployables_parent_id_idx\u0027, \u0027parent_id\u0027),"},{"line_number":96,"context_line":"        Index(\u0027deployables_root_id_idx\u0027, \u0027root_id\u0027),"},{"line_number":97,"context_line":"        Index(\u0027deployables_device_id_idx\u0027, \u0027device_id\u0027),"},{"line_number":98,"context_line":"        table_args()"},{"line_number":99,"context_line":"    )"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_f56f4c25","line":97,"in_reply_to":"9fdfeff1_0602fa6f","updated":"2019-02-14 09:43:14.000000000","message":"This is what I got from schema.py:\nColumn::param index: When ``True``, indicates that the column is indexed. This is a shortcut for using a :class:`.Index` construct on the table. To specify indexes with explicit names or indexes that contain multiple columns, use the :class:`.Index`construct instead.\nBecause we have multiple indexes, so we must use the .Index construct instead of Column(..., index\u003dTrue)","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"42f6d0173c72fd30b3c9369b21fc5cf405b55fe0","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":103,"context_line":"    parent_id \u003d Column(Integer, ForeignKey(\u0027deployables.id\u0027), nullable\u003dTrue)"},{"line_number":104,"context_line":"    root_id \u003d Column(Integer, ForeignKey(\u0027deployables.id\u0027), nullable\u003dTrue)"},{"line_number":105,"context_line":"    name \u003d Column(String(32), nullable\u003dFalse)"},{"line_number":106,"context_line":"    num_accelerators \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":107,"context_line":"    device_id \u003d Column(Integer, ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":108,"context_line":"                       nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_c692b257","line":105,"updated":"2019-02-12 21:33:03.000000000","message":"Why exactly 32 chars? Based on some Nova discussion, this could be of the form:\n\u003cComputeNodeName\u003e_\u003cNumaNodeName\u003e_\u003cCyborgName\u003e_\u003cNumInHost\u003e\nThe exact format need not be determined, but this could be longer, say 100 chars for now.\n\nAlso, it must be unique, as it is used as a RP name:\n   name \u003d Column(String(100), ..., unique\u003dTrue)","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"4eb8bf452167aefb276f6685a801c0a6bd0dec11","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":103,"context_line":"    parent_id \u003d Column(Integer, ForeignKey(\u0027deployables.id\u0027), nullable\u003dTrue)"},{"line_number":104,"context_line":"    root_id \u003d Column(Integer, ForeignKey(\u0027deployables.id\u0027), nullable\u003dTrue)"},{"line_number":105,"context_line":"    name \u003d Column(String(32), nullable\u003dFalse)"},{"line_number":106,"context_line":"    num_accelerators \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":107,"context_line":"    device_id \u003d Column(Integer, ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":108,"context_line":"                       nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_7937c4ff","line":105,"in_reply_to":"9fdfeff1_c692b257","updated":"2019-02-14 09:43:14.000000000","message":"Done, set to 255 just in case 100 is not enough.","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"42f6d0173c72fd30b3c9369b21fc5cf405b55fe0","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    )"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":140,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":141,"context_line":"    device_id \u003d Column(Integer,"},{"line_number":142,"context_line":"                       ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":143,"context_line":"                       nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_26bffe61","line":140,"updated":"2019-02-12 21:33:03.000000000","message":"Why do we need a uuid for this?","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"4eb8bf452167aefb276f6685a801c0a6bd0dec11","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    )"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":140,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":141,"context_line":"    device_id \u003d Column(Integer,"},{"line_number":142,"context_line":"                       ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":143,"context_line":"                       nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_ef69a68b","line":140,"in_reply_to":"9fdfeff1_26bffe61","updated":"2019-02-14 09:43:14.000000000","message":"remove it.","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"42f6d0173c72fd30b3c9369b21fc5cf405b55fe0","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                       ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":143,"context_line":"                       nullable\u003dFalse)"},{"line_number":144,"context_line":"    cpid_type \u003d Column(Enum(\u0027PCI\u0027, name\u003d\u0027control_type\u0027), nullable\u003dFalse)"},{"line_number":145,"context_line":"    cpid_info \u003d Column(Text, nullable\u003dFalse)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"class AttachHandle(Base):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_e69b3614","line":145,"updated":"2019-02-12 21:33:03.000000000","message":"Minor: Text can go till 64K, and has some storage overhead. String(255) should be enough to store a PCI address.","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"4eb8bf452167aefb276f6685a801c0a6bd0dec11","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                       ForeignKey(\u0027devices.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":143,"context_line":"                       nullable\u003dFalse)"},{"line_number":144,"context_line":"    cpid_type \u003d Column(Enum(\u0027PCI\u0027, name\u003d\u0027control_type\u0027), nullable\u003dFalse)"},{"line_number":145,"context_line":"    cpid_info \u003d Column(Text, nullable\u003dFalse)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"class AttachHandle(Base):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_0f150ae5","line":145,"in_reply_to":"9fdfeff1_e69b3614","updated":"2019-02-14 09:43:14.000000000","message":"Done","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"42f6d0173c72fd30b3c9369b21fc5cf405b55fe0","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    )"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":159,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":160,"context_line":"    deployable_id \u003d Column(Integer,"},{"line_number":161,"context_line":"                           ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":162,"context_line":"                           nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_e6b49684","line":159,"updated":"2019-02-12 21:33:03.000000000","message":"Why do we need a UUID for this?","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"4eb8bf452167aefb276f6685a801c0a6bd0dec11","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    )"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":159,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":160,"context_line":"    deployable_id \u003d Column(Integer,"},{"line_number":161,"context_line":"                           ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":162,"context_line":"                           nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_4fe4720d","line":159,"in_reply_to":"9fdfeff1_e6b49684","updated":"2019-02-14 09:43:14.000000000","message":"remove it","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"42f6d0173c72fd30b3c9369b21fc5cf405b55fe0","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":160,"context_line":"    deployable_id \u003d Column(Integer,"},{"line_number":161,"context_line":"                           ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":162,"context_line":"                           nullable\u003dFalse)"},{"line_number":163,"context_line":"    cpid_id \u003d Column(Integer,"},{"line_number":164,"context_line":"                     ForeignKey(\u0027controlpath_ids.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":165,"context_line":"                     nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_e6425668","line":162,"updated":"2019-02-12 21:33:03.000000000","message":"Please add a column to track usage:\nin_use \u003d Column(Boolean, default\u003dFalse)","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"4eb8bf452167aefb276f6685a801c0a6bd0dec11","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":160,"context_line":"    deployable_id \u003d Column(Integer,"},{"line_number":161,"context_line":"                           ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":162,"context_line":"                           nullable\u003dFalse)"},{"line_number":163,"context_line":"    cpid_id \u003d Column(Integer,"},{"line_number":164,"context_line":"                     ForeignKey(\u0027controlpath_ids.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":165,"context_line":"                     nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_cfa622c2","line":162,"in_reply_to":"9fdfeff1_e6425668","updated":"2019-02-14 09:43:14.000000000","message":"Done","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"42f6d0173c72fd30b3c9369b21fc5cf405b55fe0","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    deployable_id \u003d Column(Integer,"},{"line_number":161,"context_line":"                           ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":162,"context_line":"                           nullable\u003dFalse)"},{"line_number":163,"context_line":"    cpid_id \u003d Column(Integer,"},{"line_number":164,"context_line":"                     ForeignKey(\u0027controlpath_ids.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":165,"context_line":"                     nullable\u003dFalse)"},{"line_number":166,"context_line":"    attach_type \u003d Column(Enum(\u0027PCI\u0027, \u0027MDEV\u0027, name\u003d\u0027attach_type\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_066f5afc","line":163,"updated":"2019-02-12 21:33:03.000000000","message":"Please add a column to track usage:\nin_use \u003d Column(Boolean, default\u003dFalse)","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"4eb8bf452167aefb276f6685a801c0a6bd0dec11","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    deployable_id \u003d Column(Integer,"},{"line_number":161,"context_line":"                           ForeignKey(\u0027deployables.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":162,"context_line":"                           nullable\u003dFalse)"},{"line_number":163,"context_line":"    cpid_id \u003d Column(Integer,"},{"line_number":164,"context_line":"                     ForeignKey(\u0027controlpath_ids.id\u0027, ondelete\u003d\"RESTRICT\"),"},{"line_number":165,"context_line":"                     nullable\u003dFalse)"},{"line_number":166,"context_line":"    attach_type \u003d Column(Enum(\u0027PCI\u0027, \u0027MDEV\u0027, name\u003d\u0027attach_type\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_6fa7f6bd","line":163,"in_reply_to":"9fdfeff1_066f5afc","updated":"2019-02-14 09:43:14.000000000","message":"Done","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"42f6d0173c72fd30b3c9369b21fc5cf405b55fe0","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                     nullable\u003dFalse)"},{"line_number":166,"context_line":"    attach_type \u003d Column(Enum(\u0027PCI\u0027, \u0027MDEV\u0027, name\u003d\u0027attach_type\u0027),"},{"line_number":167,"context_line":"                         nullable\u003dFalse)"},{"line_number":168,"context_line":"    attach_info \u003d Column(Text, nullable\u003dFalse)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"class DeviceProfile(Base):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_a6252ec4","line":168,"updated":"2019-02-12 21:33:03.000000000","message":"Minor: Can be String(255). Tect is 64 KB, which is overkill.","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"4eb8bf452167aefb276f6685a801c0a6bd0dec11","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                     nullable\u003dFalse)"},{"line_number":166,"context_line":"    attach_type \u003d Column(Enum(\u0027PCI\u0027, \u0027MDEV\u0027, name\u003d\u0027attach_type\u0027),"},{"line_number":167,"context_line":"                         nullable\u003dFalse)"},{"line_number":168,"context_line":"    attach_info \u003d Column(Text, nullable\u003dFalse)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"class DeviceProfile(Base):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_8f9a5a5f","line":168,"in_reply_to":"9fdfeff1_a6252ec4","updated":"2019-02-14 09:43:14.000000000","message":"Done","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"42f6d0173c72fd30b3c9369b21fc5cf405b55fe0","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":181,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":182,"context_line":"    name \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":183,"context_line":"    profile_json \u003d Column(Text, nullable\u003dFalse)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_1a548afd","line":182,"updated":"2019-02-12 21:33:03.000000000","message":"Name must be unique too, because callers identify a dev prof by name.","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"4eb8bf452167aefb276f6685a801c0a6bd0dec11","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":181,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":182,"context_line":"    name \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":183,"context_line":"    profile_json \u003d Column(Text, nullable\u003dFalse)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_efa8c678","line":182,"in_reply_to":"9fdfeff1_1a548afd","updated":"2019-02-14 09:43:14.000000000","message":"Done","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"42f6d0173c72fd30b3c9369b21fc5cf405b55fe0","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    profile_json \u003d Column(Text, nullable\u003dFalse)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class ExternalAcceleratorRequest(Base):"},{"line_number":187,"context_line":"    \"\"\"Represents external nova requests for attach related operations.\"\"\""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    __tablename__ \u003d \u0027external_accelerator_requests\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_2615be9c","line":186,"updated":"2019-02-12 21:33:03.000000000","message":"Extended AcceleratorRequest","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"4eb8bf452167aefb276f6685a801c0a6bd0dec11","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    profile_json \u003d Column(Text, nullable\u003dFalse)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class ExternalAcceleratorRequest(Base):"},{"line_number":187,"context_line":"    \"\"\"Represents external nova requests for attach related operations.\"\"\""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    __tablename__ \u003d \u0027external_accelerator_requests\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_4fc9d256","line":186,"in_reply_to":"9fdfeff1_2615be9c","updated":"2019-02-14 09:43:14.000000000","message":"Done","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"42f6d0173c72fd30b3c9369b21fc5cf405b55fe0","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    project_id \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":207,"context_line":"    state \u003d Column(Enum(\u0027Initial\u0027, \u0027Bound\u0027, \u0027BindFailed\u0027, name\u003d\u0027state\u0027),"},{"line_number":208,"context_line":"                   nullable\u003dFalse)"},{"line_number":209,"context_line":"    substate \u003d Column(Enum(\u0027Initial\u0027, name\u003d\u0027substate\u0027), nullable\u003dFalse),"},{"line_number":210,"context_line":"    device_profile_id \u003d Column(Integer, ForeignKey(\u0027device_profiles.id\u0027,"},{"line_number":211,"context_line":"                                                   ondelete\u003d\"RESTRICT\"),"},{"line_number":212,"context_line":"                               nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_baea1ed5","line":209,"updated":"2019-02-12 21:33:03.000000000","message":"Minor: Would be good to list ARQ fields followed by extARQ fields.","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"4eb8bf452167aefb276f6685a801c0a6bd0dec11","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    project_id \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":207,"context_line":"    state \u003d Column(Enum(\u0027Initial\u0027, \u0027Bound\u0027, \u0027BindFailed\u0027, name\u003d\u0027state\u0027),"},{"line_number":208,"context_line":"                   nullable\u003dFalse)"},{"line_number":209,"context_line":"    substate \u003d Column(Enum(\u0027Initial\u0027, name\u003d\u0027substate\u0027), nullable\u003dFalse),"},{"line_number":210,"context_line":"    device_profile_id \u003d Column(Integer, ForeignKey(\u0027device_profiles.id\u0027,"},{"line_number":211,"context_line":"                                                   ondelete\u003d\"RESTRICT\"),"},{"line_number":212,"context_line":"                               nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_aff07e68","line":209,"in_reply_to":"9fdfeff1_baea1ed5","updated":"2019-02-14 09:43:14.000000000","message":"Done.","commit_id":"13a3d5a4be9f7d9f60463cf9357cd214ed760654"}]}
