)]}'
{"zun/db/api.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":729,"context_line":"    return _get_dbdriver_instance().update_capsule("},{"line_number":730,"context_line":"        context, capsule_id, values)"},{"line_number":731,"context_line":""},{"line_number":732,"context_line":"####################"},{"line_number":733,"context_line":""},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"def pci_device_get_by_addr(context, node_id, dev_addr):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_9a62f5ac","line":732,"range":{"start_line":732,"start_character":0,"end_line":732,"end_character":20},"updated":"2017-09-04 18:08:51.000000000","message":"This module doesn\u0027t have the convention to using \u0027#####\u0027.","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":729,"context_line":"    return _get_dbdriver_instance().update_capsule("},{"line_number":730,"context_line":"        context, capsule_id, values)"},{"line_number":731,"context_line":""},{"line_number":732,"context_line":"####################"},{"line_number":733,"context_line":""},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"def pci_device_get_by_addr(context, node_id, dev_addr):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_90b1b1e4","line":732,"range":{"start_line":732,"start_character":0,"end_line":732,"end_character":20},"in_reply_to":"7f287b81_9a62f5ac","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":732,"context_line":"####################"},{"line_number":733,"context_line":""},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"def pci_device_get_by_addr(context, node_id, dev_addr):"},{"line_number":736,"context_line":"    \"\"\"Get PCI device by address.\"\"\""},{"line_number":737,"context_line":"    return _get_dbdriver_instance().pci_device_get_by_addr(context, node_id,"},{"line_number":738,"context_line":"                                                           dev_addr)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_da719d46","line":735,"range":{"start_line":735,"start_character":4,"end_line":735,"end_character":26},"updated":"2017-09-04 18:08:51.000000000","message":"Nit: according to the naming convention of this module, it is better to rename this to \"get_pci_device_by_addr\". This applies to all below.","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":732,"context_line":"####################"},{"line_number":733,"context_line":""},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"def pci_device_get_by_addr(context, node_id, dev_addr):"},{"line_number":736,"context_line":"    \"\"\"Get PCI device by address.\"\"\""},{"line_number":737,"context_line":"    return _get_dbdriver_instance().pci_device_get_by_addr(context, node_id,"},{"line_number":738,"context_line":"                                                           dev_addr)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_70b405d2","line":735,"range":{"start_line":735,"start_character":4,"end_line":735,"end_character":26},"in_reply_to":"7f287b81_da719d46","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":773,"context_line":"                                                      address, value)"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"###################"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_1a6e0596","line":776,"range":{"start_line":776,"start_character":0,"end_line":776,"end_character":19},"updated":"2017-09-04 18:08:51.000000000","message":"Remove","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":773,"context_line":"                                                      address, value)"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"###################"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_30c67d4b","line":776,"range":{"start_line":776,"start_character":0,"end_line":776,"end_character":19},"in_reply_to":"7f287b81_1a6e0596","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"81424bacfdc9ed1b009ecc4253e37b6be3a6441b","unresolved":false,"context_lines":[{"line_number":810,"context_line":"    return _get_dbdriver_instance().update_capsule("},{"line_number":811,"context_line":"        context, capsule_id, values)"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"def get_pci_device_by_addr(node_id, dev_addr):"},{"line_number":815,"context_line":"    \"\"\"Get PCI device by address.\"\"\""},{"line_number":816,"context_line":"    return _get_dbdriver_instance().get_pci_device_by_addr(node_id, dev_addr)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_9f0b95d3","line":813,"updated":"2017-09-08 07:35:18.000000000","message":"Missing @profiler.trace(\"db\") decorator here and bellow methods.","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"a6736551757b226315758ca7df5c3d58a09bc6f8","unresolved":false,"context_lines":[{"line_number":810,"context_line":"    return _get_dbdriver_instance().update_capsule("},{"line_number":811,"context_line":"        context, capsule_id, values)"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"def get_pci_device_by_addr(node_id, dev_addr):"},{"line_number":815,"context_line":"    \"\"\"Get PCI device by address.\"\"\""},{"line_number":816,"context_line":"    return _get_dbdriver_instance().get_pci_device_by_addr(node_id, dev_addr)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2577a7_78ebfaaf","line":813,"in_reply_to":"7f287b81_9f0b95d3","updated":"2017-09-11 06:13:43.000000000","message":"Done","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"81424bacfdc9ed1b009ecc4253e37b6be3a6441b","unresolved":false,"context_lines":[{"line_number":838,"context_line":"        node_id, parent_addr)"},{"line_number":839,"context_line":""},{"line_number":840,"context_line":""},{"line_number":841,"context_line":"def pci_device_destroy(node_id, address):"},{"line_number":842,"context_line":"    \"\"\"Delete a PCI device record.\"\"\""},{"line_number":843,"context_line":"    return _get_dbdriver_instance().pci_device_destroy(node_id, address)"},{"line_number":844,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_ff4df93a","line":841,"range":{"start_line":841,"start_character":4,"end_line":841,"end_character":41},"updated":"2017-09-08 07:35:18.000000000","message":"Should be `destroy_pci_device` like another method.\n\nI have a question about this, why you don\u0027t use pci_device.id to filter instead? You can re-use add_identity_filter method and don\u0027t need to filter twice with node_id and address.","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"a6736551757b226315758ca7df5c3d58a09bc6f8","unresolved":false,"context_lines":[{"line_number":838,"context_line":"        node_id, parent_addr)"},{"line_number":839,"context_line":""},{"line_number":840,"context_line":""},{"line_number":841,"context_line":"def pci_device_destroy(node_id, address):"},{"line_number":842,"context_line":"    \"\"\"Delete a PCI device record.\"\"\""},{"line_number":843,"context_line":"    return _get_dbdriver_instance().pci_device_destroy(node_id, address)"},{"line_number":844,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2577a7_38cd725d","line":841,"range":{"start_line":841,"start_character":4,"end_line":841,"end_character":41},"in_reply_to":"7f287b81_ff4df93a","updated":"2017-09-11 06:13:43.000000000","message":"Done","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"81424bacfdc9ed1b009ecc4253e37b6be3a6441b","unresolved":false,"context_lines":[{"line_number":843,"context_line":"    return _get_dbdriver_instance().pci_device_destroy(node_id, address)"},{"line_number":844,"context_line":""},{"line_number":845,"context_line":""},{"line_number":846,"context_line":"def pci_device_update(node_id, address, value):"},{"line_number":847,"context_line":"    \"\"\"Update a pci device.\"\"\""},{"line_number":848,"context_line":"    return _get_dbdriver_instance().pci_device_update(node_id, address, value)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_bf6531b7","line":846,"range":{"start_line":846,"start_character":4,"end_line":846,"end_character":21},"updated":"2017-09-08 07:35:18.000000000","message":"Same thing as above.","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"a6736551757b226315758ca7df5c3d58a09bc6f8","unresolved":false,"context_lines":[{"line_number":843,"context_line":"    return _get_dbdriver_instance().pci_device_destroy(node_id, address)"},{"line_number":844,"context_line":""},{"line_number":845,"context_line":""},{"line_number":846,"context_line":"def pci_device_update(node_id, address, value):"},{"line_number":847,"context_line":"    \"\"\"Update a pci device.\"\"\""},{"line_number":848,"context_line":"    return _get_dbdriver_instance().pci_device_update(node_id, address, value)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2577a7_18dab616","line":846,"range":{"start_line":846,"start_character":4,"end_line":846,"end_character":21},"in_reply_to":"7f287b81_bf6531b7","updated":"2017-09-11 06:13:43.000000000","message":"Done","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"}],"zun/db/sqlalchemy/api.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":818,"context_line":""},{"line_number":819,"context_line":"        return query"},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"####################"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"def pci_device_get_by_addr(context, node_id, dev_addr):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_1a9de556","line":821,"range":{"start_line":821,"start_character":0,"end_line":821,"end_character":20},"updated":"2017-09-04 18:08:51.000000000","message":"It looks this module doesn\u0027t use \u0027#####\u0027 as well.","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":818,"context_line":""},{"line_number":819,"context_line":"        return query"},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"####################"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"def pci_device_get_by_addr(context, node_id, dev_addr):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_d005f97b","line":821,"range":{"start_line":821,"start_character":0,"end_line":821,"end_character":20},"in_reply_to":"7f287b81_1a9de556","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":821,"context_line":"####################"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"def pci_device_get_by_addr(context, node_id, dev_addr):"},{"line_number":825,"context_line":"    pci_dev_ref \u003d model_query(context, models.PciDevice).\\"},{"line_number":826,"context_line":"        filter_by(compute_node_uuid\u003dnode_id).\\"},{"line_number":827,"context_line":"        filter_by(address\u003ddev_addr).\\"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_f5346ae0","line":824,"range":{"start_line":824,"start_character":4,"end_line":824,"end_character":26},"updated":"2017-09-04 18:08:51.000000000","message":"All methods should be placed inside the Connection class and have a \u0027self\u0027 parameter.","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":821,"context_line":"####################"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"def pci_device_get_by_addr(context, node_id, dev_addr):"},{"line_number":825,"context_line":"    pci_dev_ref \u003d model_query(context, models.PciDevice).\\"},{"line_number":826,"context_line":"        filter_by(compute_node_uuid\u003dnode_id).\\"},{"line_number":827,"context_line":"        filter_by(address\u003ddev_addr).\\"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_705e4577","line":824,"range":{"start_line":824,"start_character":4,"end_line":824,"end_character":26},"in_reply_to":"7f287b81_f5346ae0","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":822,"context_line":""},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"def pci_device_get_by_addr(context, node_id, dev_addr):"},{"line_number":825,"context_line":"    pci_dev_ref \u003d model_query(context, models.PciDevice).\\"},{"line_number":826,"context_line":"        filter_by(compute_node_uuid\u003dnode_id).\\"},{"line_number":827,"context_line":"        filter_by(address\u003ddev_addr).\\"},{"line_number":828,"context_line":"        first()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_daa51d49","line":825,"range":{"start_line":825,"start_character":30,"end_line":825,"end_character":37},"updated":"2017-09-04 18:08:51.000000000","message":"I think there is a context parameter. The first parameter should be models.PciDevice. This applies to all below.","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":822,"context_line":""},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"def pci_device_get_by_addr(context, node_id, dev_addr):"},{"line_number":825,"context_line":"    pci_dev_ref \u003d model_query(context, models.PciDevice).\\"},{"line_number":826,"context_line":"        filter_by(compute_node_uuid\u003dnode_id).\\"},{"line_number":827,"context_line":"        filter_by(address\u003ddev_addr).\\"},{"line_number":828,"context_line":"        first()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_50034943","line":825,"range":{"start_line":825,"start_character":30,"end_line":825,"end_character":37},"in_reply_to":"7f287b81_daa51d49","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":855,"context_line":""},{"line_number":856,"context_line":"def pci_device_get_all_by_container_uuid(context, container_uuid):"},{"line_number":857,"context_line":"    return model_query(context, models.PciDevice).\\"},{"line_number":858,"context_line":"        filter_by(status\u003d\u0027allocated\u0027).\\"},{"line_number":859,"context_line":"        filter_by(container_uuid\u003dcontainer_uuid).\\"},{"line_number":860,"context_line":"        all()"},{"line_number":861,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_5a5ecd76","line":858,"range":{"start_line":858,"start_character":26,"end_line":858,"end_character":35},"updated":"2017-09-04 18:08:51.000000000","message":"How about using a constants for this.","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":855,"context_line":""},{"line_number":856,"context_line":"def pci_device_get_all_by_container_uuid(context, container_uuid):"},{"line_number":857,"context_line":"    return model_query(context, models.PciDevice).\\"},{"line_number":858,"context_line":"        filter_by(status\u003d\u0027allocated\u0027).\\"},{"line_number":859,"context_line":"        filter_by(container_uuid\u003dcontainer_uuid).\\"},{"line_number":860,"context_line":"        all()"},{"line_number":861,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_30831dac","line":858,"range":{"start_line":858,"start_character":26,"end_line":858,"end_character":35},"in_reply_to":"7f287b81_5a5ecd76","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":860,"context_line":"        all()"},{"line_number":861,"context_line":""},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"def _instance_pcidevs_get_multi(context, container_uuids):"},{"line_number":864,"context_line":"    if not container_uuids:"},{"line_number":865,"context_line":"        return []"},{"line_number":866,"context_line":"    return model_query(context, models.PciDevice).\\"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_5ad36dd6","line":863,"range":{"start_line":863,"start_character":4,"end_line":863,"end_character":31},"updated":"2017-09-04 18:08:51.000000000","message":"It looks this method is unused.","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":860,"context_line":"        all()"},{"line_number":861,"context_line":""},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"def _instance_pcidevs_get_multi(context, container_uuids):"},{"line_number":864,"context_line":"    if not container_uuids:"},{"line_number":865,"context_line":"        return []"},{"line_number":866,"context_line":"    return model_query(context, models.PciDevice).\\"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_70bac56e","line":863,"range":{"start_line":863,"start_character":4,"end_line":863,"end_character":31},"in_reply_to":"7f287b81_5ad36dd6","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":868,"context_line":"        filter(models.PciDevice.container_uuid.in_(container_uuids))"},{"line_number":869,"context_line":""},{"line_number":870,"context_line":""},{"line_number":871,"context_line":"def pci_device_destroy(context, node_id, address):"},{"line_number":872,"context_line":"    result \u003d model_query(context, models.PciDevice).\\"},{"line_number":873,"context_line":"        filter_by(compute_node_uuid\u003dnode_id).\\"},{"line_number":874,"context_line":"        filter_by(address\u003daddress).\\"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_b52702b7","line":871,"range":{"start_line":871,"start_character":4,"end_line":871,"end_character":22},"updated":"2017-09-04 18:08:51.000000000","message":"According to other destroy_* methods, we should put everything into a session:\n\n    def destroy_pci_device(self, context, node_id, address):\n        session \u003d get_session()\n        with session.begin():\n            ....\n            count \u003d query.delete()\n            ...","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":868,"context_line":"        filter(models.PciDevice.container_uuid.in_(container_uuids))"},{"line_number":869,"context_line":""},{"line_number":870,"context_line":""},{"line_number":871,"context_line":"def pci_device_destroy(context, node_id, address):"},{"line_number":872,"context_line":"    result \u003d model_query(context, models.PciDevice).\\"},{"line_number":873,"context_line":"        filter_by(compute_node_uuid\u003dnode_id).\\"},{"line_number":874,"context_line":"        filter_by(address\u003daddress).\\"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_10594159","line":871,"range":{"start_line":871,"start_character":4,"end_line":871,"end_character":22},"in_reply_to":"7f287b81_b52702b7","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":872,"context_line":"    result \u003d model_query(context, models.PciDevice).\\"},{"line_number":873,"context_line":"        filter_by(compute_node_uuid\u003dnode_id).\\"},{"line_number":874,"context_line":"        filter_by(address\u003daddress).\\"},{"line_number":875,"context_line":"        soft_delete()"},{"line_number":876,"context_line":"    if not result:"},{"line_number":877,"context_line":"        raise exception.PciDeviceNotFound(node_id\u003dnode_id, address\u003daddress)"},{"line_number":878,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_baeff185","line":875,"range":{"start_line":875,"start_character":8,"end_line":875,"end_character":19},"updated":"2017-09-04 18:08:51.000000000","message":"There is no soft_delete in Zun.","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":872,"context_line":"    result \u003d model_query(context, models.PciDevice).\\"},{"line_number":873,"context_line":"        filter_by(compute_node_uuid\u003dnode_id).\\"},{"line_number":874,"context_line":"        filter_by(address\u003daddress).\\"},{"line_number":875,"context_line":"        soft_delete()"},{"line_number":876,"context_line":"    if not result:"},{"line_number":877,"context_line":"        raise exception.PciDeviceNotFound(node_id\u003dnode_id, address\u003daddress)"},{"line_number":878,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_f0535538","line":875,"range":{"start_line":875,"start_character":8,"end_line":875,"end_character":19},"in_reply_to":"7f287b81_baeff185","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":877,"context_line":"        raise exception.PciDeviceNotFound(node_id\u003dnode_id, address\u003daddress)"},{"line_number":878,"context_line":""},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"def pci_device_update(context, node_id, address, values):"},{"line_number":881,"context_line":"    query \u003d model_query(context, models.PciDevice, read_deleted\u003d\"no\").\\"},{"line_number":882,"context_line":"        filter_by(compute_node_uuid\u003dnode_id).\\"},{"line_number":883,"context_line":"        filter_by(address\u003daddress)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_156496e4","line":880,"range":{"start_line":880,"start_character":4,"end_line":880,"end_character":21},"updated":"2017-09-04 18:08:51.000000000","message":"According to other update_* methods, we should put everything into a session:\n\n    def update_pci_device(self, context, node_id, address, values):\n        session \u003d get_session()\n        with session.begin():\n            ...\n            try:\n                ref \u003d query.with_lockmode(\u0027update\u0027).one()\n            except NoResultFound:\n                ...\n\n            ref.update(values)\n        ...","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":877,"context_line":"        raise exception.PciDeviceNotFound(node_id\u003dnode_id, address\u003daddress)"},{"line_number":878,"context_line":""},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"def pci_device_update(context, node_id, address, values):"},{"line_number":881,"context_line":"    query \u003d model_query(context, models.PciDevice, read_deleted\u003d\"no\").\\"},{"line_number":882,"context_line":"        filter_by(compute_node_uuid\u003dnode_id).\\"},{"line_number":883,"context_line":"        filter_by(address\u003daddress)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_e35dcd15","line":880,"range":{"start_line":880,"start_character":4,"end_line":880,"end_character":21},"in_reply_to":"7f287b81_156496e4","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":878,"context_line":""},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"def pci_device_update(context, node_id, address, values):"},{"line_number":881,"context_line":"    query \u003d model_query(context, models.PciDevice, read_deleted\u003d\"no\").\\"},{"line_number":882,"context_line":"        filter_by(compute_node_uuid\u003dnode_id).\\"},{"line_number":883,"context_line":"        filter_by(address\u003daddress)"},{"line_number":884,"context_line":"    if query.update(values) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_3a88a1c4","line":881,"range":{"start_line":881,"start_character":51,"end_line":881,"end_character":63},"updated":"2017-09-04 18:08:51.000000000","message":"I don\u0027t think there is a read_deleted keyword in Zun.","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":878,"context_line":""},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"def pci_device_update(context, node_id, address, values):"},{"line_number":881,"context_line":"    query \u003d model_query(context, models.PciDevice, read_deleted\u003d\"no\").\\"},{"line_number":882,"context_line":"        filter_by(compute_node_uuid\u003dnode_id).\\"},{"line_number":883,"context_line":"        filter_by(address\u003daddress)"},{"line_number":884,"context_line":"    if query.update(values) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_3008bd2b","line":881,"range":{"start_line":881,"start_character":51,"end_line":881,"end_character":63},"in_reply_to":"7f287b81_3a88a1c4","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":884,"context_line":"    if query.update(values) \u003d\u003d 0:"},{"line_number":885,"context_line":"        device \u003d models.PciDevice()"},{"line_number":886,"context_line":"        device.update(values)"},{"line_number":887,"context_line":"        context.session.add(device)"},{"line_number":888,"context_line":"    return query.one()"},{"line_number":889,"context_line":""},{"line_number":890,"context_line":"####################"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_9a331514","line":887,"range":{"start_line":887,"start_character":8,"end_line":887,"end_character":23},"updated":"2017-09-04 18:08:51.000000000","message":"I don\u0027t think \u0027session\u0027 is in \u0027context\u0027 in Zun.","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":884,"context_line":"    if query.update(values) \u003d\u003d 0:"},{"line_number":885,"context_line":"        device \u003d models.PciDevice()"},{"line_number":886,"context_line":"        device.update(values)"},{"line_number":887,"context_line":"        context.session.add(device)"},{"line_number":888,"context_line":"    return query.one()"},{"line_number":889,"context_line":""},{"line_number":890,"context_line":"####################"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_a39d85bc","line":887,"range":{"start_line":887,"start_character":8,"end_line":887,"end_character":23},"in_reply_to":"7f287b81_9a331514","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":887,"context_line":"        context.session.add(device)"},{"line_number":888,"context_line":"    return query.one()"},{"line_number":889,"context_line":""},{"line_number":890,"context_line":"####################"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_9a4e7594","line":890,"range":{"start_line":890,"start_character":0,"end_line":890,"end_character":20},"updated":"2017-09-04 18:08:51.000000000","message":"Remove this","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":887,"context_line":"        context.session.add(device)"},{"line_number":888,"context_line":"    return query.one()"},{"line_number":889,"context_line":""},{"line_number":890,"context_line":"####################"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_63a79d0d","line":890,"range":{"start_line":890,"start_character":0,"end_line":890,"end_character":20},"in_reply_to":"7f287b81_9a4e7594","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"81424bacfdc9ed1b009ecc4253e37b6be3a6441b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"CONF \u003d zun.conf.CONF"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"_FACADE \u003d None"},{"line_number":40,"context_line":"ALLOCATED \u003d \"allocated\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def _create_facade_lazily():"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_bfe2d1d3","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":23},"updated":"2017-09-08 07:35:18.000000000","message":"As my comment in zun/objects/fields.py, if you define status in zun/common/consts.py, you can re-use here.","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"a6736551757b226315758ca7df5c3d58a09bc6f8","unresolved":false,"context_lines":[{"line_number":37,"context_line":"CONF \u003d zun.conf.CONF"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"_FACADE \u003d None"},{"line_number":40,"context_line":"ALLOCATED \u003d \"allocated\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def _create_facade_lazily():"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2577a7_f84b6aad","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":23},"in_reply_to":"7f287b81_bfe2d1d3","updated":"2017-09-11 06:13:43.000000000","message":"Done","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"}],"zun/objects/base.py":[{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"81424bacfdc9ed1b009ecc4253e37b6be3a6441b","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"remotable_classmethod \u003d ovoo_base.remotable_classmethod"},{"line_number":25,"context_line":"remotable \u003d ovoo_base.remotable"},{"line_number":26,"context_line":"obj_make_list \u003d ovoo_base.obj_make_list"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class ZunObjectRegistry(ovoo_base.VersionedObjectRegistry):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_1fa9e57a","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":39},"updated":"2017-09-08 07:35:18.000000000","message":"I think this variable is redundant, which code will use this?","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"a6736551757b226315758ca7df5c3d58a09bc6f8","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"remotable_classmethod \u003d ovoo_base.remotable_classmethod"},{"line_number":25,"context_line":"remotable \u003d ovoo_base.remotable"},{"line_number":26,"context_line":"obj_make_list \u003d ovoo_base.obj_make_list"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class ZunObjectRegistry(ovoo_base.VersionedObjectRegistry):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2577a7_98ffc666","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":39},"in_reply_to":"7f287b81_1fa9e57a","updated":"2017-09-11 06:13:43.000000000","message":"Done","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"}],"zun/objects/container.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    # Version 1.0: Initial version"},{"line_number":23,"context_line":"    # Version 1.1: Add container_id column"},{"line_number":24,"context_line":"    # Version 1.2: Add memory column"},{"line_number":25,"context_line":"    # Version 1.3: Add task_state column"},{"line_number":26,"context_line":"    # Version 1.4: Add cpu, workdir, ports, hostname and labels columns"},{"line_number":27,"context_line":"    # Version 1.5: Add meta column"},{"line_number":28,"context_line":"    # Version 1.6: Add addresses column"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_15a936dc","side":"PARENT","line":25,"range":{"start_line":25,"start_character":34,"end_line":25,"end_character":40},"updated":"2017-09-04 18:08:51.000000000","message":"Why this is deleted?","commit_id":"058bf99d85c14c6adb41e2196f79a7eeeebc9040"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    # Version 1.0: Initial version"},{"line_number":23,"context_line":"    # Version 1.1: Add container_id column"},{"line_number":24,"context_line":"    # Version 1.2: Add memory column"},{"line_number":25,"context_line":"    # Version 1.3: Add task_state column"},{"line_number":26,"context_line":"    # Version 1.4: Add cpu, workdir, ports, hostname and labels columns"},{"line_number":27,"context_line":"    # Version 1.5: Add meta column"},{"line_number":28,"context_line":"    # Version 1.6: Add addresses column"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_03b8d927","side":"PARENT","line":25,"range":{"start_line":25,"start_character":34,"end_line":25,"end_character":40},"in_reply_to":"7f287b81_15a936dc","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"058bf99d85c14c6adb41e2196f79a7eeeebc9040"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"81424bacfdc9ed1b009ecc4253e37b6be3a6441b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_config import cfg"},{"line_number":14,"context_line":"from oslo_log import log as logging"},{"line_number":15,"context_line":"from oslo_versionedobjects import fields"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_df8a3d19","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":27},"updated":"2017-09-08 07:35:18.000000000","message":"Unused import.","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"a6736551757b226315758ca7df5c3d58a09bc6f8","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_config import cfg"},{"line_number":14,"context_line":"from oslo_log import log as logging"},{"line_number":15,"context_line":"from oslo_versionedobjects import fields"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2577a7_f8efeaad","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":27},"in_reply_to":"7f287b81_df8a3d19","updated":"2017-09-11 06:13:43.000000000","message":"Done","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"81424bacfdc9ed1b009ecc4253e37b6be3a6441b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from zun.objects import pci_device"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_ff973944","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":15},"updated":"2017-09-08 07:35:18.000000000","message":"Unused variable.","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"a6736551757b226315758ca7df5c3d58a09bc6f8","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from zun.objects import pci_device"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2577a7_18f3d6a0","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":15},"in_reply_to":"7f287b81_ff973944","updated":"2017-09-11 06:13:43.000000000","message":"Done","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"d8a13c1389a9d1054b78546a427c90e6a72f2b07","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    # Version 1.18: Add auto_remove"},{"line_number":50,"context_line":"    # Version 1.19: Add runtime column"},{"line_number":51,"context_line":"    # Version 1.20: Change runtime to String type"},{"line_number":52,"context_line":"    # Version 1.21: Add pci_device attribute"},{"line_number":53,"context_line":"    VERSION \u003d \u00271.21\u0027"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf57530f_435e15e7","line":52,"range":{"start_line":52,"start_character":35,"end_line":52,"end_character":44},"updated":"2017-09-20 08:29:06.000000000","message":"This is not an attribute rather a new object. Please correct this.","commit_id":"e36896fdce180b0a5a96691b6f6550520620f148"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"498d4519aa693287723a1b4437f7f8d29bec5f6e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    # Version 1.18: Add auto_remove"},{"line_number":50,"context_line":"    # Version 1.19: Add runtime column"},{"line_number":51,"context_line":"    # Version 1.20: Change runtime to String type"},{"line_number":52,"context_line":"    # Version 1.21: Add pci_device attribute"},{"line_number":53,"context_line":"    VERSION \u003d \u00271.21\u0027"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f515b1d_ac24750e","line":52,"range":{"start_line":52,"start_character":35,"end_line":52,"end_character":44},"in_reply_to":"bf57530f_435e15e7","updated":"2017-09-25 00:55:09.000000000","message":"Done","commit_id":"e36896fdce180b0a5a96691b6f6550520620f148"}],"zun/objects/fields.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"class PciDeviceType(BaseZunEnum):"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    # NOTE(jaypipes): It\u0027s silly that the word \"type-\" is in these constants,"},{"line_number":115,"context_line":"    # but alas, these were the original constant strings used..."},{"line_number":116,"context_line":"    STANDARD \u003d \"type-PCI\""},{"line_number":117,"context_line":"    SRIOV_PF \u003d \"type-PF\""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_15d7f651","line":114,"range":{"start_line":114,"start_character":6,"end_line":114,"end_character":10},"updated":"2017-09-04 18:08:51.000000000","message":"According to this note, Nova uses the word \"type-\" for historical reason. I think we don\u0027t have to follow this. We can start without using the word \"type-\"","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"class PciDeviceType(BaseZunEnum):"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    # NOTE(jaypipes): It\u0027s silly that the word \"type-\" is in these constants,"},{"line_number":115,"context_line":"    # but alas, these were the original constant strings used..."},{"line_number":116,"context_line":"    STANDARD \u003d \"type-PCI\""},{"line_number":117,"context_line":"    SRIOV_PF \u003d \"type-PF\""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_6380bd47","line":114,"range":{"start_line":114,"start_character":6,"end_line":114,"end_character":10},"in_reply_to":"7f287b81_15d7f651","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"81424bacfdc9ed1b009ecc4253e37b6be3a6441b","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class PciDeviceStatus(BaseZunEnum):"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    AVAILABLE \u003d \"available\""},{"line_number":101,"context_line":"    CLAIMED \u003d \"claimed\""},{"line_number":102,"context_line":"    ALLOCATED \u003d \"allocated\""},{"line_number":103,"context_line":"    REMOVED \u003d \"removed\"  # The device has been hot-removed and not yet deleted"},{"line_number":104,"context_line":"    DELETED \u003d \"deleted\"  # The device is marked not available/deleted."},{"line_number":105,"context_line":"    UNCLAIMABLE \u003d \"unclaimable\""},{"line_number":106,"context_line":"    UNAVAILABLE \u003d \"unavailable\""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    ALL \u003d (AVAILABLE, CLAIMED, ALLOCATED, REMOVED, DELETED, UNAVAILABLE,"},{"line_number":109,"context_line":"           UNCLAIMABLE)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_ffc29952","line":106,"range":{"start_line":100,"start_character":3,"end_line":106,"end_character":31},"updated":"2017-09-08 07:35:18.000000000","message":"Define these consts in zun/common/consts so we can re-use when needed.","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"cf221b08d3f654d8575c55840e1af5ceebb2d41e","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class PciDeviceStatus(BaseZunEnum):"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    AVAILABLE \u003d \"available\""},{"line_number":101,"context_line":"    CLAIMED \u003d \"claimed\""},{"line_number":102,"context_line":"    ALLOCATED \u003d \"allocated\""},{"line_number":103,"context_line":"    REMOVED \u003d \"removed\"  # The device has been hot-removed and not yet deleted"},{"line_number":104,"context_line":"    DELETED \u003d \"deleted\"  # The device is marked not available/deleted."},{"line_number":105,"context_line":"    UNCLAIMABLE \u003d \"unclaimable\""},{"line_number":106,"context_line":"    UNAVAILABLE \u003d \"unavailable\""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    ALL \u003d (AVAILABLE, CLAIMED, ALLOCATED, REMOVED, DELETED, UNAVAILABLE,"},{"line_number":109,"context_line":"           UNCLAIMABLE)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2577a7_130e028d","line":106,"range":{"start_line":100,"start_character":3,"end_line":106,"end_character":31},"in_reply_to":"5f2577a7_d878aef9","updated":"2017-09-12 01:57:28.000000000","message":"Got it :) Thanks for explanation :D","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"a6736551757b226315758ca7df5c3d58a09bc6f8","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class PciDeviceStatus(BaseZunEnum):"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    AVAILABLE \u003d \"available\""},{"line_number":101,"context_line":"    CLAIMED \u003d \"claimed\""},{"line_number":102,"context_line":"    ALLOCATED \u003d \"allocated\""},{"line_number":103,"context_line":"    REMOVED \u003d \"removed\"  # The device has been hot-removed and not yet deleted"},{"line_number":104,"context_line":"    DELETED \u003d \"deleted\"  # The device is marked not available/deleted."},{"line_number":105,"context_line":"    UNCLAIMABLE \u003d \"unclaimable\""},{"line_number":106,"context_line":"    UNAVAILABLE \u003d \"unavailable\""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    ALL \u003d (AVAILABLE, CLAIMED, ALLOCATED, REMOVED, DELETED, UNAVAILABLE,"},{"line_number":109,"context_line":"           UNCLAIMABLE)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2577a7_d878aef9","line":106,"range":{"start_line":100,"start_character":3,"end_line":106,"end_character":31},"in_reply_to":"7f287b81_ffc29952","updated":"2017-09-11 06:13:43.000000000","message":"Please check the zun/objects/pci_device, there are lots of code to use these Enum as class variable. Retrieve to zun/common/consts.py will need to change code in pci_device to something like \"consts.SRIOV_PF\". I think it\u0027s not readable than the class variable. So i prefer define the constant in it\u0027s own module, it\u0027s more clear and restricted the scope.","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"81424bacfdc9ed1b009ecc4253e37b6be3a6441b","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"class PciDeviceType(BaseZunEnum):"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    STANDARD \u003d \"PCI\""},{"line_number":115,"context_line":"    SRIOV_PF \u003d \"PF\""},{"line_number":116,"context_line":"    SRIOV_VF \u003d \"VF\""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    ALL \u003d (STANDARD, SRIOV_PF, SRIOV_VF)"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_7fac699e","line":116,"range":{"start_line":114,"start_character":4,"end_line":116,"end_character":19},"updated":"2017-09-08 07:35:18.000000000","message":"ditto","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"a6736551757b226315758ca7df5c3d58a09bc6f8","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"class PciDeviceType(BaseZunEnum):"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    STANDARD \u003d \"PCI\""},{"line_number":115,"context_line":"    SRIOV_PF \u003d \"PF\""},{"line_number":116,"context_line":"    SRIOV_VF \u003d \"VF\""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    ALL \u003d (STANDARD, SRIOV_PF, SRIOV_VF)"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2577a7_f81daabd","line":116,"range":{"start_line":114,"start_character":4,"end_line":116,"end_character":19},"in_reply_to":"7f287b81_7fac699e","updated":"2017-09-11 06:13:43.000000000","message":"ditto","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"}],"zun/objects/pci_device.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    The PCI device information is permanently maintained in a database."},{"line_number":60,"context_line":"    This makes it convenient to get PCI device information, like physical"},{"line_number":61,"context_line":"    function for a VF device, adjacent switch IP address for a NIC,"},{"line_number":62,"context_line":"    hypervisor identification for a PCI device, etc. It also provides a"},{"line_number":63,"context_line":"    convenient way to check device allocation information for administrator"},{"line_number":64,"context_line":"    purposes."},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_d5b96e15","line":62,"range":{"start_line":62,"start_character":4,"end_line":62,"end_character":14},"updated":"2017-09-04 18:08:51.000000000","message":"There is no hypervisor in Zun.","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    The PCI device information is permanently maintained in a database."},{"line_number":60,"context_line":"    This makes it convenient to get PCI device information, like physical"},{"line_number":61,"context_line":"    function for a VF device, adjacent switch IP address for a NIC,"},{"line_number":62,"context_line":"    hypervisor identification for a PCI device, etc. It also provides a"},{"line_number":63,"context_line":"    convenient way to check device allocation information for administrator"},{"line_number":64,"context_line":"    purposes."},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_a3d46548","line":62,"range":{"start_line":62,"start_character":4,"end_line":62,"end_character":14},"in_reply_to":"7f287b81_d5b96e15","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    A device becomes removed when hot removed from a node (i.e. not found in"},{"line_number":74,"context_line":"    the next auto-discover) but not yet synced with the DB. A removed device"},{"line_number":75,"context_line":"    should not be allocated to any instance."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    Filed notes::"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_555c5eec","line":75,"range":{"start_line":75,"start_character":35,"end_line":75,"end_character":43},"updated":"2017-09-04 18:08:51.000000000","message":"container","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    A device becomes removed when hot removed from a node (i.e. not found in"},{"line_number":74,"context_line":"    the next auto-discover) but not yet synced with the DB. A removed device"},{"line_number":75,"context_line":"    should not be allocated to any instance."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    Filed notes::"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_03bfb9fb","line":75,"range":{"start_line":75,"start_character":35,"end_line":75,"end_character":43},"in_reply_to":"7f287b81_555c5eec","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    Filed notes::"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        | \u0027dev_id\u0027:"},{"line_number":80,"context_line":"        |   Hypervisor\u0027s identification for the device, the string format"},{"line_number":81,"context_line":"        |   is hypervisor specific"},{"line_number":82,"context_line":"        | \u0027extra_info\u0027:"},{"line_number":83,"context_line":"        |   Device-specific properties like PF address, switch ip address etc."}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_f56c6a9d","line":80,"range":{"start_line":80,"start_character":12,"end_line":80,"end_character":22},"updated":"2017-09-04 18:08:51.000000000","message":"There is no hypervisor","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    Filed notes::"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        | \u0027dev_id\u0027:"},{"line_number":80,"context_line":"        |   Hypervisor\u0027s identification for the device, the string format"},{"line_number":81,"context_line":"        |   is hypervisor specific"},{"line_number":82,"context_line":"        | \u0027extra_info\u0027:"},{"line_number":83,"context_line":"        |   Device-specific properties like PF address, switch ip address etc."}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_e3b94d15","line":80,"range":{"start_line":80,"start_character":12,"end_line":80,"end_character":22},"in_reply_to":"7f287b81_f56c6a9d","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        \u0027parent_addr\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":108,"context_line":"    }"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":111,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":112,"context_line":"        if target_version \u003c (1, 2) and \u0027request_id\u0027 in primitive:"},{"line_number":113,"context_line":"            del primitive[\u0027request_id\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_953086a0","line":110,"range":{"start_line":110,"start_character":8,"end_line":110,"end_character":27},"updated":"2017-09-04 18:08:51.000000000","message":"It seems this method is used by Indirection API [1], but Zun doesn\u0027t have Indirection API implemented. I think this method should be removed.\n\n[1] https://github.com/openstack/magnum/commit/2ed6b128d43cb88e5a450442c26be281321aa1d5","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        \u0027parent_addr\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":108,"context_line":"    }"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":111,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":112,"context_line":"        if target_version \u003c (1, 2) and \u0027request_id\u0027 in primitive:"},{"line_number":113,"context_line":"            del primitive[\u0027request_id\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_e34eed36","line":110,"range":{"start_line":110,"start_character":8,"end_line":110,"end_character":27},"in_reply_to":"7f287b81_953086a0","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        # Note(yjiang5): status/instance_uuid should only be updated by"},{"line_number":140,"context_line":"        # functions like claim/allocate etc. The id is allocated by"},{"line_number":141,"context_line":"        # database. The extra_info is created by the object."},{"line_number":142,"context_line":"        no_changes \u003d (\u0027status\u0027, \u0027instance_uuid\u0027, \u0027id\u0027, \u0027extra_info\u0027)"},{"line_number":143,"context_line":"        for key in no_changes:"},{"line_number":144,"context_line":"            dev_dict.pop(key, None)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_35cf9280","line":142,"range":{"start_line":142,"start_character":33,"end_line":142,"end_character":46},"updated":"2017-09-04 18:08:51.000000000","message":"container_uuid?","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        # Note(yjiang5): status/instance_uuid should only be updated by"},{"line_number":140,"context_line":"        # functions like claim/allocate etc. The id is allocated by"},{"line_number":141,"context_line":"        # database. The extra_info is created by the object."},{"line_number":142,"context_line":"        no_changes \u003d (\u0027status\u0027, \u0027instance_uuid\u0027, \u0027id\u0027, \u0027extra_info\u0027)"},{"line_number":143,"context_line":"        for key in no_changes:"},{"line_number":144,"context_line":"            dev_dict.pop(key, None)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_635c3ded","line":142,"range":{"start_line":142,"start_character":33,"end_line":142,"end_character":46},"in_reply_to":"7f287b81_35cf9280","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        pci_device._context \u003d context"},{"line_number":189,"context_line":"        pci_device.obj_reset_changes()"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        # TODO(jaypipes): Remove in 2.0 version of object. This does an inline"},{"line_number":192,"context_line":"        # migration to populate the uuid field. A similar inline migration is"},{"line_number":193,"context_line":"        # performed in the save() method."},{"line_number":194,"context_line":"        if db_dev[\u0027uuid\u0027] is None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_958c0636","line":191,"range":{"start_line":191,"start_character":10,"end_line":191,"end_character":14},"updated":"2017-09-04 18:08:51.000000000","message":"It looks Zun doesn\u0027t need this inline migration?","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        pci_device._context \u003d context"},{"line_number":189,"context_line":"        pci_device.obj_reset_changes()"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        # TODO(jaypipes): Remove in 2.0 version of object. This does an inline"},{"line_number":192,"context_line":"        # migration to populate the uuid field. A similar inline migration is"},{"line_number":193,"context_line":"        # performed in the save() method."},{"line_number":194,"context_line":"        if db_dev[\u0027uuid\u0027] is None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_23f3d5e9","line":191,"range":{"start_line":191,"start_character":10,"end_line":191,"end_character":14},"in_reply_to":"7f287b81_958c0636","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    @classmethod"},{"line_number":212,"context_line":"    def create(cls, context, dev_dict):"},{"line_number":213,"context_line":"        \"\"\"Create a PCI device based on hypervisor information."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        As the device object is just created and is not synced with db yet"},{"line_number":216,"context_line":"        thus we should not reset changes here for fields from dict."}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_356c3235","line":213,"range":{"start_line":213,"start_character":40,"end_line":213,"end_character":50},"updated":"2017-09-04 18:08:51.000000000","message":"There is no hypervisor.","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    @classmethod"},{"line_number":212,"context_line":"    def create(cls, context, dev_dict):"},{"line_number":213,"context_line":"        \"\"\"Create a PCI device based on hypervisor information."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        As the device object is just created and is not synced with db yet"},{"line_number":216,"context_line":"        thus we should not reset changes here for fields from dict."}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_632afd2c","line":213,"range":{"start_line":213,"start_character":40,"end_line":213,"end_character":50},"in_reply_to":"7f287b81_356c3235","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        As the device object is just created and is not synced with db yet"},{"line_number":216,"context_line":"        thus we should not reset changes here for fields from dict."},{"line_number":217,"context_line":"        \"\"\""},{"line_number":218,"context_line":"        pci_device \u003d cls()"},{"line_number":219,"context_line":"        pci_device.update_device(dev_dict)"},{"line_number":220,"context_line":"        pci_device.status \u003d fields.PciDeviceStatus.AVAILABLE"},{"line_number":221,"context_line":"        pci_device.uuid \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_75e99a7e","line":218,"range":{"start_line":218,"start_character":21,"end_line":218,"end_character":26},"updated":"2017-09-04 18:08:51.000000000","message":"Nit: you can use cls(context) in here and remove line #222","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        As the device object is just created and is not synced with db yet"},{"line_number":216,"context_line":"        thus we should not reset changes here for fields from dict."},{"line_number":217,"context_line":"        \"\"\""},{"line_number":218,"context_line":"        pci_device \u003d cls()"},{"line_number":219,"context_line":"        pci_device.update_device(dev_dict)"},{"line_number":220,"context_line":"        pci_device.status \u003d fields.PciDeviceStatus.AVAILABLE"},{"line_number":221,"context_line":"        pci_device.uuid \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_231cf511","line":218,"range":{"start_line":218,"start_character":21,"end_line":218,"end_character":26},"in_reply_to":"7f287b81_75e99a7e","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            dbapi.pci_device_destroy(self.compute_node_uuid,"},{"line_number":230,"context_line":"                                     self.address)"},{"line_number":231,"context_line":"        elif self.status !\u003d fields.PciDeviceStatus.DELETED:"},{"line_number":232,"context_line":"            # TODO(jaypipes): Remove in 2.0 version of object. This does an"},{"line_number":233,"context_line":"            # inline migration to populate the uuid field. A similar migration"},{"line_number":234,"context_line":"            # is done in the _from_db_object() method to migrate objects as"},{"line_number":235,"context_line":"            # they are read from the DB."}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_f57fcaa8","line":232,"range":{"start_line":232,"start_character":14,"end_line":232,"end_character":18},"updated":"2017-09-04 18:08:51.000000000","message":"It seems Zun doesn\u0027t need this inline migration.","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            dbapi.pci_device_destroy(self.compute_node_uuid,"},{"line_number":230,"context_line":"                                     self.address)"},{"line_number":231,"context_line":"        elif self.status !\u003d fields.PciDeviceStatus.DELETED:"},{"line_number":232,"context_line":"            # TODO(jaypipes): Remove in 2.0 version of object. This does an"},{"line_number":233,"context_line":"            # inline migration to populate the uuid field. A similar migration"},{"line_number":234,"context_line":"            # is done in the _from_db_object() method to migrate objects as"},{"line_number":235,"context_line":"            # they are read from the DB."}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_c3d2d134","line":232,"range":{"start_line":232,"start_character":14,"end_line":232,"end_character":18},"in_reply_to":"7f287b81_f57fcaa8","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            updates \u003d self.obj_get_changes()"},{"line_number":239,"context_line":"            updates[\u0027extra_info\u0027] \u003d self.extra_info"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"            if \u0027extra_info\u0027 in updates:"},{"line_number":242,"context_line":"                updates[\u0027extra_info\u0027] \u003d jsonutils.dumps(updates[\u0027extra_info\u0027])"},{"line_number":243,"context_line":"            if updates:"},{"line_number":244,"context_line":"                db_pci \u003d dbapi.pci_device_update(self.compute_node_uuid,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_355f9242","line":241,"range":{"start_line":241,"start_character":15,"end_line":241,"end_character":38},"updated":"2017-09-04 18:08:51.000000000","message":"This is always True because of line #239","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            updates \u003d self.obj_get_changes()"},{"line_number":239,"context_line":"            updates[\u0027extra_info\u0027] \u003d self.extra_info"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"            if \u0027extra_info\u0027 in updates:"},{"line_number":242,"context_line":"                updates[\u0027extra_info\u0027] \u003d jsonutils.dumps(updates[\u0027extra_info\u0027])"},{"line_number":243,"context_line":"            if updates:"},{"line_number":244,"context_line":"                db_pci \u003d dbapi.pci_device_update(self.compute_node_uuid,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_63b8bde4","line":241,"range":{"start_line":241,"start_character":15,"end_line":241,"end_character":38},"in_reply_to":"7f287b81_355f9242","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":348,"context_line":"        self.status \u003d fields.PciDeviceStatus.ALLOCATED"},{"line_number":349,"context_line":"        self.container_uuid \u003d container[\u0027uuid\u0027]"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        # Notes(yjiang5): remove this check when instance object for"},{"line_number":352,"context_line":"        # compute manager is finished"},{"line_number":353,"context_line":"        if isinstance(container, dict):"},{"line_number":354,"context_line":"            if \u0027pci_devices\u0027 not in container:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_c0752a9a","line":351,"range":{"start_line":351,"start_character":10,"end_line":351,"end_character":15},"updated":"2017-09-04 18:08:51.000000000","message":"Could we remove this check?","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":348,"context_line":"        self.status \u003d fields.PciDeviceStatus.ALLOCATED"},{"line_number":349,"context_line":"        self.container_uuid \u003d container[\u0027uuid\u0027]"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        # Notes(yjiang5): remove this check when instance object for"},{"line_number":352,"context_line":"        # compute manager is finished"},{"line_number":353,"context_line":"        if isinstance(container, dict):"},{"line_number":354,"context_line":"            if \u0027pci_devices\u0027 not in container:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_43038143","line":351,"range":{"start_line":351,"start_character":10,"end_line":351,"end_character":15},"in_reply_to":"7f287b81_c0752a9a","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":407,"context_line":"        self.container_uuid \u003d None"},{"line_number":408,"context_line":"        self.request_id \u003d None"},{"line_number":409,"context_line":"        if old_status \u003d\u003d fields.PciDeviceStatus.ALLOCATED and container:"},{"line_number":410,"context_line":"            # Notes(yjiang5): remove this check when instance object for"},{"line_number":411,"context_line":"            # compute manager is finished"},{"line_number":412,"context_line":"            existed \u003d next((dev for dev in container[\u0027pci_devices\u0027]"},{"line_number":413,"context_line":"                            if dev.id \u003d\u003d self.id))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_c083ea55","line":410,"range":{"start_line":410,"start_character":14,"end_line":410,"end_character":19},"updated":"2017-09-04 18:08:51.000000000","message":"Can we remove this check?","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":407,"context_line":"        self.container_uuid \u003d None"},{"line_number":408,"context_line":"        self.request_id \u003d None"},{"line_number":409,"context_line":"        if old_status \u003d\u003d fields.PciDeviceStatus.ALLOCATED and container:"},{"line_number":410,"context_line":"            # Notes(yjiang5): remove this check when instance object for"},{"line_number":411,"context_line":"            # compute manager is finished"},{"line_number":412,"context_line":"            existed \u003d next((dev for dev in container[\u0027pci_devices\u0027]"},{"line_number":413,"context_line":"                            if dev.id \u003d\u003d self.id))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_03fd7939","line":410,"range":{"start_line":410,"start_character":14,"end_line":410,"end_character":19},"in_reply_to":"7f287b81_c083ea55","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"51b7b2b1368c1193b670aff6b11dd6408a2a701f","unresolved":false,"context_lines":[{"line_number":422,"context_line":""},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"@base.ZunObjectRegistry.register"},{"line_number":425,"context_line":"class PciDeviceList(base.ObjectListBase, base.ZunObject):"},{"line_number":426,"context_line":"    # Version 1.0: Initial version"},{"line_number":427,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":428,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_20c06e7c","line":425,"range":{"start_line":425,"start_character":6,"end_line":425,"end_character":19},"updated":"2017-09-04 18:08:51.000000000","message":"For consistency with other objects, could we remove this object and convert all the methods below to the PciDevice class? If yes, consider rename the methods as:\n\n* list_by_compute_node\n* list_by_container_uuid\n* list_by_parent_address","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"728b9e84b1b10a8c2deacbcfb5276a54ede0f7e1","unresolved":false,"context_lines":[{"line_number":422,"context_line":""},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"@base.ZunObjectRegistry.register"},{"line_number":425,"context_line":"class PciDeviceList(base.ObjectListBase, base.ZunObject):"},{"line_number":426,"context_line":"    # Version 1.0: Initial version"},{"line_number":427,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":428,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_5cf802c3","line":425,"range":{"start_line":425,"start_character":6,"end_line":425,"end_character":19},"in_reply_to":"7f287b81_20c06e7c","updated":"2017-09-07 08:30:37.000000000","message":"Done","commit_id":"e0d3fa8f180382ca6cfc27687bd3366ecf2263c6"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"81424bacfdc9ed1b009ecc4253e37b6be3a6441b","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    @base.remotable_classmethod"},{"line_number":171,"context_line":"    def get_by_dev_addr(cls, context, compute_node_uuid, dev_addr):"},{"line_number":172,"context_line":"        db_dev \u003d dbapi.pci_device_get_by_addr("},{"line_number":173,"context_line":"            compute_node_uuid, dev_addr)"},{"line_number":174,"context_line":"        return cls._from_db_object(context, cls(), db_dev)"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_df06bd86","line":172,"range":{"start_line":172,"start_character":23,"end_line":172,"end_character":45},"updated":"2017-09-08 07:35:18.000000000","message":"It must be `get_pci_device_by_addr` as you defined in zun/db/api","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"a6736551757b226315758ca7df5c3d58a09bc6f8","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    @base.remotable_classmethod"},{"line_number":171,"context_line":"    def get_by_dev_addr(cls, context, compute_node_uuid, dev_addr):"},{"line_number":172,"context_line":"        db_dev \u003d dbapi.pci_device_get_by_addr("},{"line_number":173,"context_line":"            compute_node_uuid, dev_addr)"},{"line_number":174,"context_line":"        return cls._from_db_object(context, cls(), db_dev)"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2577a7_18763608","line":172,"range":{"start_line":172,"start_character":23,"end_line":172,"end_character":45},"in_reply_to":"7f287b81_df06bd86","updated":"2017-09-11 06:13:43.000000000","message":"Done","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"81424bacfdc9ed1b009ecc4253e37b6be3a6441b","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    @base.remotable_classmethod"},{"line_number":177,"context_line":"    def get_by_dev_id(cls, context, id):"},{"line_number":178,"context_line":"        db_dev \u003d dbapi.pci_device_get_by_id(id)"},{"line_number":179,"context_line":"        return cls._from_db_object(context, cls(), db_dev)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_3ff7018e","line":178,"range":{"start_line":178,"start_character":23,"end_line":178,"end_character":43},"updated":"2017-09-08 07:35:18.000000000","message":"ditto. get_pci_device_by_id","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"a6736551757b226315758ca7df5c3d58a09bc6f8","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    @base.remotable_classmethod"},{"line_number":177,"context_line":"    def get_by_dev_id(cls, context, id):"},{"line_number":178,"context_line":"        db_dev \u003d dbapi.pci_device_get_by_id(id)"},{"line_number":179,"context_line":"        return cls._from_db_object(context, cls(), db_dev)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2577a7_f8724a11","line":178,"range":{"start_line":178,"start_character":23,"end_line":178,"end_character":43},"in_reply_to":"7f287b81_3ff7018e","updated":"2017-09-11 06:13:43.000000000","message":"Done","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"81424bacfdc9ed1b009ecc4253e37b6be3a6441b","unresolved":false,"context_lines":[{"line_number":378,"context_line":""},{"line_number":379,"context_line":"    @base.remotable_classmethod"},{"line_number":380,"context_line":"    def list_by_compute_node(cls, context, node_id):"},{"line_number":381,"context_line":"        db_dev_list \u003d dbapi.pci_device_get_all_by_node(context, node_id)"},{"line_number":382,"context_line":"        return PciDevice._from_db_object_list(db_dev_list, cls, context)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    @base.remotable_classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_5f3f6d24","line":381,"range":{"start_line":381,"start_character":28,"end_line":381,"end_character":54},"updated":"2017-09-08 07:35:18.000000000","message":"get_all_pci_device_by_node","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"a6736551757b226315758ca7df5c3d58a09bc6f8","unresolved":false,"context_lines":[{"line_number":378,"context_line":""},{"line_number":379,"context_line":"    @base.remotable_classmethod"},{"line_number":380,"context_line":"    def list_by_compute_node(cls, context, node_id):"},{"line_number":381,"context_line":"        db_dev_list \u003d dbapi.pci_device_get_all_by_node(context, node_id)"},{"line_number":382,"context_line":"        return PciDevice._from_db_object_list(db_dev_list, cls, context)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    @base.remotable_classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2577a7_b8660251","line":381,"range":{"start_line":381,"start_character":28,"end_line":381,"end_character":54},"in_reply_to":"7f287b81_5f3f6d24","updated":"2017-09-11 06:13:43.000000000","message":"Done","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"81424bacfdc9ed1b009ecc4253e37b6be3a6441b","unresolved":false,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    @base.remotable_classmethod"},{"line_number":385,"context_line":"    def list_by_container_uuid(cls, context, uuid):"},{"line_number":386,"context_line":"        db_dev_list \u003d dbapi.pci_device_get_all_by_container_uuid(context, uuid)"},{"line_number":387,"context_line":"        return PciDevice._from_db_object_list(db_dev_list, cls, context)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    @base.remotable_classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_bf309157","line":386,"range":{"start_line":386,"start_character":28,"end_line":386,"end_character":64},"updated":"2017-09-08 07:35:18.000000000","message":"get_all_pci_device_by_container_uuid","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"a6736551757b226315758ca7df5c3d58a09bc6f8","unresolved":false,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    @base.remotable_classmethod"},{"line_number":385,"context_line":"    def list_by_container_uuid(cls, context, uuid):"},{"line_number":386,"context_line":"        db_dev_list \u003d dbapi.pci_device_get_all_by_container_uuid(context, uuid)"},{"line_number":387,"context_line":"        return PciDevice._from_db_object_list(db_dev_list, cls, context)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    @base.remotable_classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2577a7_985b4686","line":386,"range":{"start_line":386,"start_character":28,"end_line":386,"end_character":64},"in_reply_to":"7f287b81_bf309157","updated":"2017-09-11 06:13:43.000000000","message":"Done","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"81424bacfdc9ed1b009ecc4253e37b6be3a6441b","unresolved":false,"context_lines":[{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    @base.remotable_classmethod"},{"line_number":390,"context_line":"    def list_by_parent_address(cls, context, node_id, parent_addr):"},{"line_number":391,"context_line":"        db_dev_list \u003d dbapi.pci_device_get_all_by_parent_addr(context,"},{"line_number":392,"context_line":"                                                              node_id,"},{"line_number":393,"context_line":"                                                              parent_addr)"},{"line_number":394,"context_line":"        return PciDevice._from_db_object_list(db_dev_list, cls, context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_df2b5de8","line":391,"range":{"start_line":391,"start_character":28,"end_line":391,"end_character":61},"updated":"2017-09-08 07:35:18.000000000","message":"get_all_pci_device_by_parent_addr","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"a6736551757b226315758ca7df5c3d58a09bc6f8","unresolved":false,"context_lines":[{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    @base.remotable_classmethod"},{"line_number":390,"context_line":"    def list_by_parent_address(cls, context, node_id, parent_addr):"},{"line_number":391,"context_line":"        db_dev_list \u003d dbapi.pci_device_get_all_by_parent_addr(context,"},{"line_number":392,"context_line":"                                                              node_id,"},{"line_number":393,"context_line":"                                                              parent_addr)"},{"line_number":394,"context_line":"        return PciDevice._from_db_object_list(db_dev_list, cls, context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2577a7_78609a33","line":391,"range":{"start_line":391,"start_character":28,"end_line":391,"end_character":61},"in_reply_to":"7f287b81_df2b5de8","updated":"2017-09-11 06:13:43.000000000","message":"Done","commit_id":"8d259ea0fa7edc4eed4460079d5dd78b4527739b"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"dc80845107bf4cfaa63b45e82da40264b1b64da0","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @base.remotable"},{"line_number":195,"context_line":"    def save(self, context):"},{"line_number":196,"context_line":"        if self.status \u003d\u003d fields.PciDeviceStatus.REMOVED:"},{"line_number":197,"context_line":"            self.status \u003d fields.PciDeviceStatus.DELETED"},{"line_number":198,"context_line":"            dbapi.destroy_pci_device(self.compute_node_uuid,"},{"line_number":199,"context_line":"                                     self.address)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f2577a7_9321d2fe","line":196,"range":{"start_line":196,"start_character":26,"end_line":196,"end_character":32},"updated":"2017-09-12 02:00:32.000000000","message":"It should be `z_fields`.","commit_id":"9965791cf968452ae6c5917067a196869fc703d0"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"3dce1a38c6b069ebd6ecee8e837c59efd61ec9e4","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @base.remotable"},{"line_number":195,"context_line":"    def save(self, context):"},{"line_number":196,"context_line":"        if self.status \u003d\u003d fields.PciDeviceStatus.REMOVED:"},{"line_number":197,"context_line":"            self.status \u003d fields.PciDeviceStatus.DELETED"},{"line_number":198,"context_line":"            dbapi.destroy_pci_device(self.compute_node_uuid,"},{"line_number":199,"context_line":"                                     self.address)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f2577a7_881cf86a","line":196,"range":{"start_line":196,"start_character":26,"end_line":196,"end_character":32},"in_reply_to":"5f2577a7_9321d2fe","updated":"2017-09-12 07:02:41.000000000","message":"Done","commit_id":"9965791cf968452ae6c5917067a196869fc703d0"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"dc80845107bf4cfaa63b45e82da40264b1b64da0","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    @base.remotable"},{"line_number":195,"context_line":"    def save(self, context):"},{"line_number":196,"context_line":"        if self.status \u003d\u003d fields.PciDeviceStatus.REMOVED:"},{"line_number":197,"context_line":"            self.status \u003d fields.PciDeviceStatus.DELETED"},{"line_number":198,"context_line":"            dbapi.destroy_pci_device(self.compute_node_uuid,"},{"line_number":199,"context_line":"                                     self.address)"},{"line_number":200,"context_line":"        elif self.status !\u003d fields.PciDeviceStatus.DELETED:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f2577a7_53792afa","line":197,"range":{"start_line":197,"start_character":26,"end_line":197,"end_character":32},"updated":"2017-09-12 02:00:32.000000000","message":"ditto","commit_id":"9965791cf968452ae6c5917067a196869fc703d0"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"3dce1a38c6b069ebd6ecee8e837c59efd61ec9e4","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    @base.remotable"},{"line_number":195,"context_line":"    def save(self, context):"},{"line_number":196,"context_line":"        if self.status \u003d\u003d fields.PciDeviceStatus.REMOVED:"},{"line_number":197,"context_line":"            self.status \u003d fields.PciDeviceStatus.DELETED"},{"line_number":198,"context_line":"            dbapi.destroy_pci_device(self.compute_node_uuid,"},{"line_number":199,"context_line":"                                     self.address)"},{"line_number":200,"context_line":"        elif self.status !\u003d fields.PciDeviceStatus.DELETED:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f2577a7_6819cc77","line":197,"range":{"start_line":197,"start_character":26,"end_line":197,"end_character":32},"in_reply_to":"5f2577a7_53792afa","updated":"2017-09-12 07:02:41.000000000","message":"Done","commit_id":"9965791cf968452ae6c5917067a196869fc703d0"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"dc80845107bf4cfaa63b45e82da40264b1b64da0","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            self.status \u003d fields.PciDeviceStatus.DELETED"},{"line_number":198,"context_line":"            dbapi.destroy_pci_device(self.compute_node_uuid,"},{"line_number":199,"context_line":"                                     self.address)"},{"line_number":200,"context_line":"        elif self.status !\u003d fields.PciDeviceStatus.DELETED:"},{"line_number":201,"context_line":"            updates \u003d self.obj_get_changes()"},{"line_number":202,"context_line":"            updates[\u0027extra_info\u0027] \u003d self.extra_info"},{"line_number":203,"context_line":"            updates[\u0027extra_info\u0027] \u003d jsonutils.dumps(updates[\u0027extra_info\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f2577a7_337e9ee4","line":200,"range":{"start_line":200,"start_character":28,"end_line":200,"end_character":34},"updated":"2017-09-12 02:00:32.000000000","message":"ditto","commit_id":"9965791cf968452ae6c5917067a196869fc703d0"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"3dce1a38c6b069ebd6ecee8e837c59efd61ec9e4","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            self.status \u003d fields.PciDeviceStatus.DELETED"},{"line_number":198,"context_line":"            dbapi.destroy_pci_device(self.compute_node_uuid,"},{"line_number":199,"context_line":"                                     self.address)"},{"line_number":200,"context_line":"        elif self.status !\u003d fields.PciDeviceStatus.DELETED:"},{"line_number":201,"context_line":"            updates \u003d self.obj_get_changes()"},{"line_number":202,"context_line":"            updates[\u0027extra_info\u0027] \u003d self.extra_info"},{"line_number":203,"context_line":"            updates[\u0027extra_info\u0027] \u003d jsonutils.dumps(updates[\u0027extra_info\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f2577a7_282d0495","line":200,"range":{"start_line":200,"start_character":28,"end_line":200,"end_character":34},"in_reply_to":"5f2577a7_337e9ee4","updated":"2017-09-12 07:02:41.000000000","message":"Done","commit_id":"9965791cf968452ae6c5917067a196869fc703d0"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"dc80845107bf4cfaa63b45e82da40264b1b64da0","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            dev.status \u003d status"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def claim(self, container_uuid):"},{"line_number":216,"context_line":"        if self.status !\u003d fields.PciDeviceStatus.AVAILABLE:"},{"line_number":217,"context_line":"            raise exception.PciDeviceInvalidStatus("},{"line_number":218,"context_line":"                compute_node_uuid\u003dself.compute_node_uuid,"},{"line_number":219,"context_line":"                address\u003dself.address, status\u003dself.status,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f2577a7_135cc27c","line":216,"range":{"start_line":216,"start_character":26,"end_line":216,"end_character":32},"updated":"2017-09-12 02:00:32.000000000","message":"ditto","commit_id":"9965791cf968452ae6c5917067a196869fc703d0"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"3dce1a38c6b069ebd6ecee8e837c59efd61ec9e4","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            dev.status \u003d status"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def claim(self, container_uuid):"},{"line_number":216,"context_line":"        if self.status !\u003d fields.PciDeviceStatus.AVAILABLE:"},{"line_number":217,"context_line":"            raise exception.PciDeviceInvalidStatus("},{"line_number":218,"context_line":"                compute_node_uuid\u003dself.compute_node_uuid,"},{"line_number":219,"context_line":"                address\u003dself.address, status\u003dself.status,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f2577a7_48285085","line":216,"range":{"start_line":216,"start_character":26,"end_line":216,"end_character":32},"in_reply_to":"5f2577a7_135cc27c","updated":"2017-09-12 07:02:41.000000000","message":"Done","commit_id":"9965791cf968452ae6c5917067a196869fc703d0"}],"zun/tests/uuidsentinel.py":[{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"d8a13c1389a9d1054b78546a427c90e6a72f2b07","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf57530f_8332cda6","line":1,"updated":"2017-09-20 08:29:06.000000000","message":"Why is this file included here? I don\u0027t see any relevant module from Zun tested here.\nCan you please remove this?","commit_id":"e36896fdce180b0a5a96691b6f6550520620f148"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"32d8587cac66378c477365ad08e724d55151fcce","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f515b1d_8899936f","line":1,"in_reply_to":"7f515b1d_f2cb8d6f","updated":"2017-09-25 15:08:45.000000000","message":"For me, the tests look optional. I lean to take the path of least resistant to move forward.","commit_id":"e36896fdce180b0a5a96691b6f6550520620f148"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"498d4519aa693287723a1b4437f7f8d29bec5f6e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f515b1d_6c1e7dbb","line":1,"in_reply_to":"7f515b1d_f2cb8d6f","updated":"2017-09-25 00:55:09.000000000","message":"Hi Madhuri Kumari, this module is an utils of the unit test. All it have is private function, so no need to do unit test, also no need to function test a test module.","commit_id":"e36896fdce180b0a5a96691b6f6550520620f148"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"359fc352ea8fa64def0b710bfe7e004e2917353f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f515b1d_f2cb8d6f","line":1,"in_reply_to":"bf57530f_0db835c6","updated":"2017-09-22 06:05:20.000000000","message":"Ok thanks for the information.\nShunli can you copy the test for this module also.","commit_id":"e36896fdce180b0a5a96691b6f6550520620f148"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"077fc3ae31983285ecc1338dbe38be3ae675fb70","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf57530f_0db835c6","line":1,"in_reply_to":"bf57530f_8332cda6","updated":"2017-09-20 18:41:09.000000000","message":"I guess this module is required as explained by this commit: https://review.openstack.org/#/c/255321/","commit_id":"e36896fdce180b0a5a96691b6f6550520620f148"}]}
