)]}'
{"cyborg/common/constants.py":[{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"1b4a91e7da3661d311c7f9e4d25b0118a981f2b9","unresolved":false,"context_lines":[{"line_number":20,"context_line":"DEVICE_FPGA \u003d \u0027FPGA\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"ARQ_STATES \u003d (ARQINITIAL, ARQBOUND, ARQUNBOUND, ARQBINDFAILED) \u003d \\"},{"line_number":24,"context_line":"    (\u0027Initial\u0027, \u0027Bound\u0027, \u0027Unbound\u0027, \u0027BindFailed\u0027)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# Device type"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_a9d5e8e7","line":23,"updated":"2019-02-27 03:41:28.000000000","message":"Nit: please use underscores between words, and use the word \u0027state. E.g. ARQ_STATE_INITIAL.","commit_id":"f860d90dbe158ac3f3b681d10a6790b47c8eaaf2"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"c7ff485be37faa325826f0a8143175fd3f8c9bb2","unresolved":false,"context_lines":[{"line_number":20,"context_line":"DEVICE_FPGA \u003d \u0027FPGA\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"ARQ_STATES \u003d (ARQINITIAL, ARQBOUND, ARQUNBOUND, ARQBINDFAILED) \u003d \\"},{"line_number":24,"context_line":"    (\u0027Initial\u0027, \u0027Bound\u0027, \u0027Unbound\u0027, \u0027BindFailed\u0027)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# Device type"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_8dfb4f79","line":23,"in_reply_to":"9fdfeff1_a9d5e8e7","updated":"2019-02-27 05:03:12.000000000","message":"I think that\u0027s zhenghao\u0027s patch.","commit_id":"f860d90dbe158ac3f3b681d10a6790b47c8eaaf2"}],"cyborg/objects/driver_objects/driver_deployable.py":[{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"9fb3f8f467f84379eb78e107b18708364ec314b5","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    # Version 1.0: Initial version"},{"line_number":31,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    fields \u003d {"},{"line_number":34,"context_line":"        \u0027num_accelerators\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":35,"context_line":"        \u0027attribute_list\u0027: object_fields.ListOfObjectsField("},{"line_number":36,"context_line":"            \u0027DriverAttribute\u0027, default\u003d[], nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_e85dede4","line":33,"range":{"start_line":33,"start_character":3,"end_line":33,"end_character":14},"updated":"2018-12-11 09:11:29.000000000","message":"Should we add another field like parent_provider which is nullable here ?","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"d3e46039c3fdaf74372258314b62f972dcae3e55","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    # Version 1.0: Initial version"},{"line_number":31,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    fields \u003d {"},{"line_number":34,"context_line":"        \u0027num_accelerators\u0027: object_fields.IntegerField(nullable\u003dFalse),"},{"line_number":35,"context_line":"        \u0027attribute_list\u0027: object_fields.ListOfObjectsField("},{"line_number":36,"context_line":"            \u0027DriverAttribute\u0027, default\u003d[], nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_2ec7be9a","line":33,"range":{"start_line":33,"start_character":3,"end_line":33,"end_character":14},"in_reply_to":"3f79a3b5_e85dede4","updated":"2019-02-27 02:41:48.000000000","message":"We don\u0027t need that","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"79822f95a5a877ef72f2d5331aa580c9e6f06916","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            \u0027DriverAttribute\u0027, default\u003d[], nullable\u003dTrue),"},{"line_number":37,"context_line":"        # TODO: add field related to local_memory or just store in the"},{"line_number":38,"context_line":"        # attribute list?"},{"line_number":39,"context_line":"        \u0027attach_handle\u0027: object_fields.ListOfObjectsField(\u0027DriverAttachHandle\u0027,"},{"line_number":40,"context_line":"                                                          default\u003d[],"},{"line_number":41,"context_line":"                                                          nullable\u003dTrue)"},{"line_number":42,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_4bd8181d","line":39,"updated":"2019-01-28 04:46:18.000000000","message":"Thus needs to be an array of lists, because there is one list per VF. I am now thinking whether it makes sense to associate this with a deployable. Maybe it should go with the CP ID (PF). Even if this were a mediated device, I think this will go with the CP ID.","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d852c60536d7da9db406984c4b12dd26dd65153b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            \u0027DriverAttribute\u0027, default\u003d[], nullable\u003dTrue),"},{"line_number":37,"context_line":"        # TODO: add field related to local_memory or just store in the"},{"line_number":38,"context_line":"        # attribute list?"},{"line_number":39,"context_line":"        \u0027attach_handle\u0027: object_fields.ListOfObjectsField(\u0027DriverAttachHandle\u0027,"},{"line_number":40,"context_line":"                                                          default\u003d[],"},{"line_number":41,"context_line":"                                                          nullable\u003dTrue)"},{"line_number":42,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_808b3266","line":39,"in_reply_to":"9fdfeff1_4bd8181d","updated":"2019-02-12 18:28:37.000000000","message":"Along with the note that CP ID in Device struct need not be an array for now, we can say that the attach_handle field here can be left as is, for now. We can generalize both later.","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"d3e46039c3fdaf74372258314b62f972dcae3e55","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            \u0027DriverAttribute\u0027, default\u003d[], nullable\u003dTrue),"},{"line_number":37,"context_line":"        # TODO: add field related to local_memory or just store in the"},{"line_number":38,"context_line":"        # attribute list?"},{"line_number":39,"context_line":"        \u0027attach_handle\u0027: object_fields.ListOfObjectsField(\u0027DriverAttachHandle\u0027,"},{"line_number":40,"context_line":"                                                          default\u003d[],"},{"line_number":41,"context_line":"                                                          nullable\u003dTrue)"},{"line_number":42,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_0e70ba71","line":39,"in_reply_to":"9fdfeff1_808b3266","updated":"2019-02-27 02:41:48.000000000","message":"Done","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"}],"cyborg/objects/driver_objects/driver_device.py":[{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"3829d843cc7fb145ea5c2880fe31a986ef6efa7e","unresolved":false,"context_lines":[{"line_number":20,"context_line":"\r"},{"line_number":21,"context_line":"\r"},{"line_number":22,"context_line":"@base.CyborgObjectRegistry.register\r"},{"line_number":23,"context_line":"class DriverDevice(base.DriverObjectBase,\r"},{"line_number":24,"context_line":"                   object_base.VersionedObjectDictCompat):\r"},{"line_number":25,"context_line":"    # Version 1.0: Initial version\r"},{"line_number":26,"context_line":"    VERSION \u003d \u00271.0\u0027\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_0b386339","line":23,"range":{"start_line":23,"start_character":6,"end_line":23,"end_character":18},"updated":"2018-12-11 10:00:32.000000000","message":"what is the primary key of this object?","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"d3e46039c3fdaf74372258314b62f972dcae3e55","unresolved":false,"context_lines":[{"line_number":20,"context_line":"\r"},{"line_number":21,"context_line":"\r"},{"line_number":22,"context_line":"@base.CyborgObjectRegistry.register\r"},{"line_number":23,"context_line":"class DriverDevice(base.DriverObjectBase,\r"},{"line_number":24,"context_line":"                   object_base.VersionedObjectDictCompat):\r"},{"line_number":25,"context_line":"    # Version 1.0: Initial version\r"},{"line_number":26,"context_line":"    VERSION \u003d \u00271.0\u0027\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_f070c774","line":23,"range":{"start_line":23,"start_character":6,"end_line":23,"end_character":18},"in_reply_to":"3f79a3b5_0b386339","updated":"2019-02-27 02:41:48.000000000","message":"I think is controlpath_id","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"53d4431dd880c28eb2dd021b9db30cb5d52cc0de","unresolved":false,"context_lines":[{"line_number":20,"context_line":"\r"},{"line_number":21,"context_line":"\r"},{"line_number":22,"context_line":"@base.CyborgObjectRegistry.register\r"},{"line_number":23,"context_line":"class DriverDevice(base.DriverObjectBase,\r"},{"line_number":24,"context_line":"                   object_base.VersionedObjectDictCompat):\r"},{"line_number":25,"context_line":"    # Version 1.0: Initial version\r"},{"line_number":26,"context_line":"    VERSION \u003d \u00271.0\u0027\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_574a0927","line":23,"range":{"start_line":23,"start_character":6,"end_line":23,"end_character":18},"in_reply_to":"3f79a3b5_0b386339","updated":"2019-02-11 18:50:31.000000000","message":"The notion of a primary key applies to database tables, rather than to objects. Are you asking what is the unique id of this object?","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"9467730fea6af169c76a18235d12749da5c63dd6","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        # standard borad info: vendor_id, product_id, remotable?\r"},{"line_number":30,"context_line":"        \u0027vendor\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":31,"context_line":"        \u0027model\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":32,"context_line":"        \u0027type\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":33,"context_line":"        # whether this device can be used in a remote way.\r"},{"line_number":34,"context_line":"        \u0027remotable\u0027: object_fields.IntegerField(nullable\u003dFalse),\r"},{"line_number":35,"context_line":"        \u0027std_board_info\u0027: object_fields.StringField(nullable\u003dTrue),\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_2d4a1ead","line":32,"range":{"start_line":32,"start_character":9,"end_line":32,"end_character":13},"updated":"2018-12-11 01:24:16.000000000","message":"Do we want to make this an enum? Like \u0027GPU\u0027, \"FPGA\", etc.?","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"d3e46039c3fdaf74372258314b62f972dcae3e55","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        # standard borad info: vendor_id, product_id, remotable?\r"},{"line_number":30,"context_line":"        \u0027vendor\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":31,"context_line":"        \u0027model\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":32,"context_line":"        \u0027type\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":33,"context_line":"        # whether this device can be used in a remote way.\r"},{"line_number":34,"context_line":"        \u0027remotable\u0027: object_fields.IntegerField(nullable\u003dFalse),\r"},{"line_number":35,"context_line":"        \u0027std_board_info\u0027: object_fields.StringField(nullable\u003dTrue),\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_90693b8d","line":32,"range":{"start_line":32,"start_character":9,"end_line":32,"end_character":13},"in_reply_to":"3f79a3b5_2d4a1ead","updated":"2019-02-27 02:41:48.000000000","message":"Done","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"9467730fea6af169c76a18235d12749da5c63dd6","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \u0027model\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":32,"context_line":"        \u0027type\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":33,"context_line":"        # whether this device can be used in a remote way.\r"},{"line_number":34,"context_line":"        \u0027remotable\u0027: object_fields.IntegerField(nullable\u003dFalse),\r"},{"line_number":35,"context_line":"        \u0027std_board_info\u0027: object_fields.StringField(nullable\u003dTrue),\r"},{"line_number":36,"context_line":"        # vendor board info should be a dict: like acc_topology which is used\r"},{"line_number":37,"context_line":"        # for driver-specific resource provider.\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_8d5b3287","line":34,"range":{"start_line":34,"start_character":9,"end_line":34,"end_character":18},"updated":"2018-12-11 01:24:16.000000000","message":"What does this mean?","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"d3e46039c3fdaf74372258314b62f972dcae3e55","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \u0027model\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":32,"context_line":"        \u0027type\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":33,"context_line":"        # whether this device can be used in a remote way.\r"},{"line_number":34,"context_line":"        \u0027remotable\u0027: object_fields.IntegerField(nullable\u003dFalse),\r"},{"line_number":35,"context_line":"        \u0027std_board_info\u0027: object_fields.StringField(nullable\u003dTrue),\r"},{"line_number":36,"context_line":"        # vendor board info should be a dict: like acc_topology which is used\r"},{"line_number":37,"context_line":"        # for driver-specific resource provider.\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_508f5322","line":34,"range":{"start_line":34,"start_character":9,"end_line":34,"end_character":18},"in_reply_to":"3f79a3b5_8d5b3287","updated":"2019-02-27 02:41:48.000000000","message":"remove it. It used to identify whether this device can be attached remotely.","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"9467730fea6af169c76a18235d12749da5c63dd6","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        # vendor board info should be a dict: like acc_topology which is used\r"},{"line_number":37,"context_line":"        # for driver-specific resource provider.\r"},{"line_number":38,"context_line":"        \u0027vendor_board_info\u0027: object_fields.StringField(nullable\u003dTrue),\r"},{"line_number":39,"context_line":"        \u0027hostname\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":40,"context_line":"        # similar with former PF address, but every device only have one\r"},{"line_number":41,"context_line":"        # control_path_id but may have one more PFs, in this case, different\r"},{"line_number":42,"context_line":"        # drivers should decide which one is the control_path_id.\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_cd44caa2","line":39,"range":{"start_line":39,"start_character":9,"end_line":39,"end_character":17},"updated":"2018-12-11 01:24:16.000000000","message":"For a disaggregated server, this may be null.","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"9467730fea6af169c76a18235d12749da5c63dd6","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        # similar with former PF address, but every device only have one\r"},{"line_number":41,"context_line":"        # control_path_id but may have one more PFs, in this case, different\r"},{"line_number":42,"context_line":"        # drivers should decide which one is the control_path_id.\r"},{"line_number":43,"context_line":"        \u0027control_path_id\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":44,"context_line":"        \u0027depolyable_list\u0027: object_fields.ListOfObjectsField(\u0027DriverDeployable\u0027,\r"},{"line_number":45,"context_line":"                                                            default\u003d[],\r"},{"line_number":46,"context_line":"                                                            nullable\u003dFalse)\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_4d519a64","line":43,"updated":"2018-12-11 01:24:16.000000000","message":"This should point to a Control Path ID object.","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"79822f95a5a877ef72f2d5331aa580c9e6f06916","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        # similar with former PF address, but every device only have one\r"},{"line_number":41,"context_line":"        # control_path_id but may have one more PFs, in this case, different\r"},{"line_number":42,"context_line":"        # drivers should decide which one is the control_path_id.\r"},{"line_number":43,"context_line":"        \u0027control_path_id\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":44,"context_line":"        \u0027depolyable_list\u0027: object_fields.ListOfObjectsField(\u0027DriverDeployable\u0027,\r"},{"line_number":45,"context_line":"                                                            default\u003d[],\r"},{"line_number":46,"context_line":"                                                            nullable\u003dFalse)\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_cbe408e3","line":43,"in_reply_to":"3f79a3b5_4d519a64","updated":"2019-01-28 04:46:18.000000000","message":"Also, this needs to be an array of ControlPath IDs, to handle devices with multiple PFs.","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"d3e46039c3fdaf74372258314b62f972dcae3e55","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        # similar with former PF address, but every device only have one\r"},{"line_number":41,"context_line":"        # control_path_id but may have one more PFs, in this case, different\r"},{"line_number":42,"context_line":"        # drivers should decide which one is the control_path_id.\r"},{"line_number":43,"context_line":"        \u0027control_path_id\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":44,"context_line":"        \u0027depolyable_list\u0027: object_fields.ListOfObjectsField(\u0027DriverDeployable\u0027,\r"},{"line_number":45,"context_line":"                                                            default\u003d[],\r"},{"line_number":46,"context_line":"                                                            nullable\u003dFalse)\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_53be7d65","line":43,"in_reply_to":"9fdfeff1_c03e1ab7","updated":"2019-02-27 02:41:48.000000000","message":"Done. Keep one at this time.","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d852c60536d7da9db406984c4b12dd26dd65153b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        # similar with former PF address, but every device only have one\r"},{"line_number":41,"context_line":"        # control_path_id but may have one more PFs, in this case, different\r"},{"line_number":42,"context_line":"        # drivers should decide which one is the control_path_id.\r"},{"line_number":43,"context_line":"        \u0027control_path_id\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":44,"context_line":"        \u0027depolyable_list\u0027: object_fields.ListOfObjectsField(\u0027DriverDeployable\u0027,\r"},{"line_number":45,"context_line":"                                                            default\u003d[],\r"},{"line_number":46,"context_line":"                                                            nullable\u003dFalse)\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_c03e1ab7","line":43,"in_reply_to":"9fdfeff1_cbe408e3","updated":"2019-02-12 18:28:37.000000000","message":"The comment about an array of CP IDs can be suspended for now, in the interest of getting this merged.","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"9467730fea6af169c76a18235d12749da5c63dd6","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        # control_path_id but may have one more PFs, in this case, different\r"},{"line_number":42,"context_line":"        # drivers should decide which one is the control_path_id.\r"},{"line_number":43,"context_line":"        \u0027control_path_id\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":44,"context_line":"        \u0027depolyable_list\u0027: object_fields.ListOfObjectsField(\u0027DriverDeployable\u0027,\r"},{"line_number":45,"context_line":"                                                            default\u003d[],\r"},{"line_number":46,"context_line":"                                                            nullable\u003dFalse)\r"},{"line_number":47,"context_line":"    }\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_ed3f4607","line":44,"range":{"start_line":44,"start_character":9,"end_line":44,"end_character":19},"updated":"2018-12-11 01:24:16.000000000","message":"Typo","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"d3e46039c3fdaf74372258314b62f972dcae3e55","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        # control_path_id but may have one more PFs, in this case, different\r"},{"line_number":42,"context_line":"        # drivers should decide which one is the control_path_id.\r"},{"line_number":43,"context_line":"        \u0027control_path_id\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":44,"context_line":"        \u0027depolyable_list\u0027: object_fields.ListOfObjectsField(\u0027DriverDeployable\u0027,\r"},{"line_number":45,"context_line":"                                                            default\u003d[],\r"},{"line_number":46,"context_line":"                                                            nullable\u003dFalse)\r"},{"line_number":47,"context_line":"    }\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_f30a1124","line":44,"range":{"start_line":44,"start_character":9,"end_line":44,"end_character":19},"in_reply_to":"3f79a3b5_ed3f4607","updated":"2019-02-27 02:41:48.000000000","message":"Done","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"1b4a91e7da3661d311c7f9e4d25b0118a981f2b9","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        \u0027vendor_board_info\u0027: object_fields.StringField(nullable\u003dTrue),\r"},{"line_number":39,"context_line":"        \u0027hostname\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":40,"context_line":"        # Used to identify the device, similar with what we called PF address.\r"},{"line_number":41,"context_line":"        # Every device only have one control_path_id but may have one\r"},{"line_number":42,"context_line":"        # more PFs, in this case, different drivers should decide which one\r"},{"line_number":43,"context_line":"        # is the control_path_id.\r"},{"line_number":44,"context_line":"        \u0027controlpath_id\u0027: object_fields.ObjectField(\u0027DriverControlPathID\u0027,\r"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_c9a38c42","line":41,"updated":"2019-02-27 03:41:28.000000000","message":"Each control path id corresponds to a different PF. For now, we are sticking with a single cpid. Please update this comment.","commit_id":"f860d90dbe158ac3f3b681d10a6790b47c8eaaf2"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"c7ff485be37faa325826f0a8143175fd3f8c9bb2","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        \u0027vendor_board_info\u0027: object_fields.StringField(nullable\u003dTrue),\r"},{"line_number":39,"context_line":"        \u0027hostname\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":40,"context_line":"        # Used to identify the device, similar with what we called PF address.\r"},{"line_number":41,"context_line":"        # Every device only have one control_path_id but may have one\r"},{"line_number":42,"context_line":"        # more PFs, in this case, different drivers should decide which one\r"},{"line_number":43,"context_line":"        # is the control_path_id.\r"},{"line_number":44,"context_line":"        \u0027controlpath_id\u0027: object_fields.ObjectField(\u0027DriverControlPathID\u0027,\r"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_0def5fb1","line":41,"in_reply_to":"9fdfeff1_c9a38c42","updated":"2019-02-27 05:03:12.000000000","message":"Done","commit_id":"f860d90dbe158ac3f3b681d10a6790b47c8eaaf2"},{"author":{"_account_id":28221,"name":"Rodrigo Rojo","email":"rodrigo.rojo@intel.com","username":"rrojo"},"change_message_id":"e47c232c0a654ed0bdd25af070e6e8ab07e6af32","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    # Version 1.0: Initial version\r"},{"line_number":28,"context_line":"    VERSION \u003d \u00271.0\u0027\r"},{"line_number":29,"context_line":"\r"},{"line_number":30,"context_line":"    fields \u003d {\r"},{"line_number":31,"context_line":"        # standard borad info: vendor_id, product_id, remotable?\r"},{"line_number":32,"context_line":"        \u0027vendor\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":33,"context_line":"        \u0027model\u0027: object_fields.StringField(nullable\u003dFalse),\r"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_aab31ee9","line":30,"updated":"2019-03-05 01:39:03.000000000","message":"Do we need a field for device id?","commit_id":"620bf0ca317f73cbdd5e6d2604e00e6a05a8ad9f"},{"author":{"_account_id":28221,"name":"Rodrigo Rojo","email":"rodrigo.rojo@intel.com","username":"rrojo"},"change_message_id":"e47c232c0a654ed0bdd25af070e6e8ab07e6af32","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    VERSION \u003d \u00271.0\u0027\r"},{"line_number":29,"context_line":"\r"},{"line_number":30,"context_line":"    fields \u003d {\r"},{"line_number":31,"context_line":"        # standard borad info: vendor_id, product_id, remotable?\r"},{"line_number":32,"context_line":"        \u0027vendor\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":33,"context_line":"        \u0027model\u0027: object_fields.StringField(nullable\u003dFalse),\r"},{"line_number":34,"context_line":"        \u0027type\u0027: object_fields.DeviceTypeField(nullable\u003dFalse),\r"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_cacf8289","line":31,"range":{"start_line":31,"start_character":19,"end_line":31,"end_character":24},"updated":"2019-03-05 01:39:03.000000000","message":"typo: should be \u0027board\u0027","commit_id":"620bf0ca317f73cbdd5e6d2604e00e6a05a8ad9f"}],"cyborg/objects/driver_objects/driver_handle.py":[{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"47c92fa2fb8678e7e753bfb39b106fdf20b45805","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_versionedobjects import base as object_base"},{"line_number":17,"context_line":"from oslo_utils import uuidutils"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dfd5e7cf_90abf6d4","line":15,"updated":"2019-01-08 03:05:49.000000000","message":"This file should be called attach_handle.py.","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"d3e46039c3fdaf74372258314b62f972dcae3e55","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_versionedobjects import base as object_base"},{"line_number":17,"context_line":"from oslo_utils import uuidutils"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_6e04e6c6","line":15,"in_reply_to":"dfd5e7cf_90abf6d4","updated":"2019-02-27 02:41:48.000000000","message":"Done","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"47c92fa2fb8678e7e753bfb39b106fdf20b45805","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    fields \u003d {"},{"line_number":34,"context_line":"        \u0027attach-type\u0027: object_fields.StringField(nullable\u003dFalse),"},{"line_number":35,"context_line":"        # PCI BDF or mediated device ID..."},{"line_number":36,"context_line":"        \u0027attach-id\u0027: object_fields.StringField(nullable\u003dFalse),"},{"line_number":37,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfd5e7cf_b0a4fa09","line":34,"updated":"2019-01-08 03:05:49.000000000","message":"Please use underscores in names.","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"},{"author":{"_account_id":22899,"name":"coco-Gao","email":"419546439@qq.com","username":"Coco"},"change_message_id":"d3e46039c3fdaf74372258314b62f972dcae3e55","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    fields \u003d {"},{"line_number":34,"context_line":"        \u0027attach-type\u0027: object_fields.StringField(nullable\u003dFalse),"},{"line_number":35,"context_line":"        # PCI BDF or mediated device ID..."},{"line_number":36,"context_line":"        \u0027attach-id\u0027: object_fields.StringField(nullable\u003dFalse),"},{"line_number":37,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_ce65d2b0","line":34,"in_reply_to":"dfd5e7cf_b0a4fa09","updated":"2019-02-27 02:41:48.000000000","message":"Done","commit_id":"24a4fea303f00398ce59df8030ad22189492c985"}]}
