)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"780416a8604f4395c1512f324934b4908c461637","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sean Mooney \u003cwork@seanmooney.info\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-12-19 19:53:29 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"PCI: do not force remove allcoated devices"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This change alter the _set_hvdevs function"},{"line_number":10,"context_line":"  to not force remove allocated or claimed"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_57208a4a","line":7,"range":{"start_line":7,"start_character":25,"end_line":7,"end_character":34},"updated":"2018-12-19 20:09:04.000000000","message":"allocated","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a4544a44dc03ef60bbe855281cb0211871b0f249","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sean Mooney \u003cwork@seanmooney.info\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-12-19 19:53:29 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"PCI: do not force remove allcoated devices"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This change alter the _set_hvdevs function"},{"line_number":10,"context_line":"  to not force remove allocated or claimed"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9fdfeff1_0b3cb991","line":7,"range":{"start_line":7,"start_character":25,"end_line":7,"end_character":34},"in_reply_to":"3f79a3b5_57208a4a","updated":"2019-01-21 21:00:47.000000000","message":"Done","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"780416a8604f4395c1512f324934b4908c461637","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"PCI: do not force remove allcoated devices"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This change alter the _set_hvdevs function"},{"line_number":10,"context_line":"  to not force remove allocated or claimed"},{"line_number":11,"context_line":"  devices."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_d70b3ac5","line":9,"range":{"start_line":9,"start_character":14,"end_line":9,"end_character":19},"updated":"2018-12-19 20:09:04.000000000","message":"alters","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"780416a8604f4395c1512f324934b4908c461637","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"PCI: do not force remove allcoated devices"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This change alter the _set_hvdevs function"},{"line_number":10,"context_line":"  to not force remove allocated or claimed"},{"line_number":11,"context_line":"  devices."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_b70ebed6","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":1},"updated":"2018-12-19 20:09:04.000000000","message":"nit: don\u0027t need the bullet list formatting unless you are writing a list...","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a4544a44dc03ef60bbe855281cb0211871b0f249","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"PCI: do not force remove allcoated devices"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This change alter the _set_hvdevs function"},{"line_number":10,"context_line":"  to not force remove allocated or claimed"},{"line_number":11,"context_line":"  devices."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9fdfeff1_cb455119","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":1},"in_reply_to":"3f79a3b5_b70ebed6","updated":"2019-01-21 21:00:47.000000000","message":"Done","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a4544a44dc03ef60bbe855281cb0211871b0f249","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"PCI: do not force remove allcoated devices"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This change alter the _set_hvdevs function"},{"line_number":10,"context_line":"  to not force remove allocated or claimed"},{"line_number":11,"context_line":"  devices."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9fdfeff1_ab400d09","line":9,"range":{"start_line":9,"start_character":14,"end_line":9,"end_character":19},"in_reply_to":"3f79a3b5_d70b3ac5","updated":"2019-01-21 21:00:47.000000000","message":"Done","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"780416a8604f4395c1512f324934b4908c461637","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This change alter the _set_hvdevs function"},{"line_number":10,"context_line":"  to not force remove allocated or claimed"},{"line_number":11,"context_line":"  devices."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"closes-bug: #1633120"},{"line_number":14,"context_line":"Change-Id: I6e871311a0fa10beaf601ca6912b4a33ba4094e0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_77b3460d","line":11,"updated":"2018-12-19 20:09:04.000000000","message":"Would be good to explain how people are hitting this (changing the PCI whitelist, maybe by mistake, and that force removes the allocated devices [deletes them in the DB] which then causes issues later like an instance with an allocated pci device is rebooted and loses the passthrough device to the guest, or the scheduler things a compute node has available pci devices and tries to schedule to them which fails because they are actually already allocated in the hypervisor).","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a4544a44dc03ef60bbe855281cb0211871b0f249","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This change alter the _set_hvdevs function"},{"line_number":10,"context_line":"  to not force remove allocated or claimed"},{"line_number":11,"context_line":"  devices."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"closes-bug: #1633120"},{"line_number":14,"context_line":"Change-Id: I6e871311a0fa10beaf601ca6912b4a33ba4094e0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9fdfeff1_6b4a2528","line":11,"in_reply_to":"3f79a3b5_77b3460d","updated":"2019-01-21 21:00:47.000000000","message":"Done","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b169ffe94724845d23f2df319eec4a915a8fafc","unresolved":false,"context_lines":[{"line_number":7,"context_line":"PCI: do not force remove allocated devices"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the ocata release the pci_passthrough_whitelist"},{"line_number":10,"context_line":"was moved form the DEFAULT section of the nova.conf"},{"line_number":11,"context_line":"to the PCI section and renamed to passthrough_whitelist."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"On upgrading if the operator chooses to migrate the config"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fdfeff1_e8ebc074","line":10,"range":{"start_line":10,"start_character":10,"end_line":10,"end_character":14},"updated":"2019-01-31 19:40:39.000000000","message":"from","commit_id":"96524e18fd2d0a11aa0c3c078a401b72839009d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b169ffe94724845d23f2df319eec4a915a8fafc","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the ocata release the pci_passthrough_whitelist"},{"line_number":10,"context_line":"was moved form the DEFAULT section of the nova.conf"},{"line_number":11,"context_line":"to the PCI section and renamed to passthrough_whitelist."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"On upgrading if the operator chooses to migrate the config"},{"line_number":14,"context_line":"value to the new section it is not uncommon"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fdfeff1_a801383a","line":11,"range":{"start_line":11,"start_character":7,"end_line":11,"end_character":10},"updated":"2019-01-31 19:40:39.000000000","message":"[pci]","commit_id":"96524e18fd2d0a11aa0c3c078a401b72839009d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b169ffe94724845d23f2df319eec4a915a8fafc","unresolved":false,"context_lines":[{"line_number":14,"context_line":"value to the new section it is not uncommon"},{"line_number":15,"context_line":"to forget to rename the config value."},{"line_number":16,"context_line":"Similarly if an operator is updateing the whitelist and"},{"line_number":17,"context_line":"miss type the value it can also lead to the whitelist"},{"line_number":18,"context_line":"being ignored."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"As a result of either error the nova compute agent"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fdfeff1_48fc4c3d","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":9},"updated":"2019-01-31 19:40:39.000000000","message":"mistypes","commit_id":"96524e18fd2d0a11aa0c3c078a401b72839009d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b169ffe94724845d23f2df319eec4a915a8fafc","unresolved":false,"context_lines":[{"line_number":18,"context_line":"being ignored."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"As a result of either error the nova compute agent"},{"line_number":21,"context_line":"would delete all database entries for a host regarless of"},{"line_number":22,"context_line":"if the pci device was in use by an instance. If this occurs"},{"line_number":23,"context_line":"the only recorse for an operator is to delete and recreate"},{"line_number":24,"context_line":"the guest on that host after correcting the error or manually"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fdfeff1_08988419","line":21,"range":{"start_line":21,"start_character":45,"end_line":21,"end_character":54},"updated":"2019-01-31 19:40:39.000000000","message":"regardless","commit_id":"96524e18fd2d0a11aa0c3c078a401b72839009d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ddb42e42f91946ff3223dbc5e6293889912e907","unresolved":false,"context_lines":[{"line_number":14,"context_line":"value to the new section it is not uncommon"},{"line_number":15,"context_line":"to forget to rename the config value."},{"line_number":16,"context_line":"Similarly if an operator is updateing the whitelist and"},{"line_number":17,"context_line":"misstypes the value it can also lead to the whitelist"},{"line_number":18,"context_line":"being ignored."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"As a result of either error the nova compute agent"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9fdfeff1_f2439d3d","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":9},"updated":"2019-02-01 15:34:15.000000000","message":"nit: mistypes (one s)","commit_id":"77726e30792ea101c9ca3eb78beed8fd4d64f13e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a28a19fba769ec253d775f1582e2a50716732071","unresolved":false,"context_lines":[{"line_number":14,"context_line":"value to the new section it is not uncommon"},{"line_number":15,"context_line":"to forget to rename the config value."},{"line_number":16,"context_line":"Similarly if an operator is updateing the whitelist and"},{"line_number":17,"context_line":"misstypes the value it can also lead to the whitelist"},{"line_number":18,"context_line":"being ignored."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"As a result of either error the nova compute agent"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9fdfeff1_12fbc1c0","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":9},"in_reply_to":"9fdfeff1_f2439d3d","updated":"2019-02-01 16:56:56.000000000","message":"see its so easy to do :)","commit_id":"77726e30792ea101c9ca3eb78beed8fd4d64f13e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"33eb6fe20f16675d7789e74dbbd456533705847d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"On upgrading if the operator chooses to migrate the config"},{"line_number":14,"context_line":"value to the new section it is not uncommon"},{"line_number":15,"context_line":"to forget to rename the config value."},{"line_number":16,"context_line":"Similarly if an operator is updateing the whitelist and"},{"line_number":17,"context_line":"mistypes the value it can also lead to the whitelist"},{"line_number":18,"context_line":"being ignored."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9fdfeff1_9e748100","line":16,"range":{"start_line":16,"start_character":28,"end_line":16,"end_character":37},"updated":"2019-02-04 16:46:59.000000000","message":"updating","commit_id":"26c41eccade6412f61f9a8721d853b545061adcc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"33eb6fe20f16675d7789e74dbbd456533705847d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"As a result of either error the nova compute agent"},{"line_number":21,"context_line":"would delete all database entries for a host regardless of"},{"line_number":22,"context_line":"if the pci device was in use by an instance. If this occurs"},{"line_number":23,"context_line":"the only recorse for an operator is to delete and recreate"},{"line_number":24,"context_line":"the guest on that host after correcting the error or manually"},{"line_number":25,"context_line":"restore the database to backup or otherwise consistent state."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9fdfeff1_7e651d45","line":23,"range":{"start_line":23,"start_character":9,"end_line":23,"end_character":16},"updated":"2019-02-04 16:46:59.000000000","message":"recourse","commit_id":"26c41eccade6412f61f9a8721d853b545061adcc"}],"nova/pci/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"780416a8604f4395c1512f324934b4908c461637","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        for existed in self.pci_devs:"},{"line_number":165,"context_line":"            if existed.address in exist_addrs - new_addrs:"},{"line_number":166,"context_line":"                # deleted devices"},{"line_number":167,"context_line":"                try:"},{"line_number":168,"context_line":"                    existed.remove()"},{"line_number":169,"context_line":"                except exception.PciDeviceInvalidStatus as e:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_772ee65b","line":166,"range":{"start_line":166,"start_character":16,"end_line":166,"end_character":33},"updated":"2018-12-19 20:09:04.000000000","message":"This is confusing. A better comment would be useful here. I think the gist is, this block is removing tracked PCI devices from the manager if (a) the hypervisor is no longer reporting those devices or (b) the PCI passthrough whitelist is no longer matching the devices reported by the hypervisor.","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a4544a44dc03ef60bbe855281cb0211871b0f249","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        for existed in self.pci_devs:"},{"line_number":165,"context_line":"            if existed.address in exist_addrs - new_addrs:"},{"line_number":166,"context_line":"                # deleted devices"},{"line_number":167,"context_line":"                try:"},{"line_number":168,"context_line":"                    existed.remove()"},{"line_number":169,"context_line":"                except exception.PciDeviceInvalidStatus as e:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_4bbc0105","line":166,"range":{"start_line":166,"start_character":16,"end_line":166,"end_character":33},"in_reply_to":"3f79a3b5_772ee65b","updated":"2019-01-21 21:00:47.000000000","message":"yes that was a self note but ill update as you suggest.","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"780416a8604f4395c1512f324934b4908c461637","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                                {\u0027status\u0027: existed.status,"},{"line_number":174,"context_line":"                                 \u0027instance_uuid\u0027: existed.instance_uuid,"},{"line_number":175,"context_line":"                                 \u0027pci_exception\u0027: e.format_message()})"},{"line_number":176,"context_line":"                    # Note(sean-k-mooney): the device may not exists for"},{"line_number":177,"context_line":"                    # two reasons. first the device could have been been"},{"line_number":178,"context_line":"                    # removed form the host or second the whitelist could"},{"line_number":179,"context_line":"                    # have been updated. While force removing may seam"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_7757c6cd","line":176,"range":{"start_line":176,"start_character":62,"end_line":176,"end_character":68},"updated":"2018-12-19 20:09:04.000000000","message":"exist?\n\nAlthough \"be tracked\" might be better - the device could exist but it might not be part of the whitelist.","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"780416a8604f4395c1512f324934b4908c461637","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                                 \u0027instance_uuid\u0027: existed.instance_uuid,"},{"line_number":175,"context_line":"                                 \u0027pci_exception\u0027: e.format_message()})"},{"line_number":176,"context_line":"                    # Note(sean-k-mooney): the device may not exists for"},{"line_number":177,"context_line":"                    # two reasons. first the device could have been been"},{"line_number":178,"context_line":"                    # removed form the host or second the whitelist could"},{"line_number":179,"context_line":"                    # have been updated. While force removing may seam"},{"line_number":180,"context_line":"                    # resonable if the device is inuse by a vm this"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_975ce2ef","line":177,"range":{"start_line":177,"start_character":33,"end_line":177,"end_character":34},"updated":"2018-12-19 20:09:04.000000000","message":":","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"780416a8604f4395c1512f324934b4908c461637","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                                 \u0027pci_exception\u0027: e.format_message()})"},{"line_number":176,"context_line":"                    # Note(sean-k-mooney): the device may not exists for"},{"line_number":177,"context_line":"                    # two reasons. first the device could have been been"},{"line_number":178,"context_line":"                    # removed form the host or second the whitelist could"},{"line_number":179,"context_line":"                    # have been updated. While force removing may seam"},{"line_number":180,"context_line":"                    # resonable if the device is inuse by a vm this"},{"line_number":181,"context_line":"                    # will lead to https://bugs.launchpad.net/nova/+bug/163312."}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_374dce37","line":178,"range":{"start_line":178,"start_character":30,"end_line":178,"end_character":34},"updated":"2018-12-19 20:09:04.000000000","message":"from","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"780416a8604f4395c1512f324934b4908c461637","unresolved":false,"context_lines":[{"line_number":177,"context_line":"                    # two reasons. first the device could have been been"},{"line_number":178,"context_line":"                    # removed form the host or second the whitelist could"},{"line_number":179,"context_line":"                    # have been updated. While force removing may seam"},{"line_number":180,"context_line":"                    # resonable if the device is inuse by a vm this"},{"line_number":181,"context_line":"                    # will lead to https://bugs.launchpad.net/nova/+bug/163312."},{"line_number":182,"context_line":"                    # To prevent this bug we skip deleting the device form the"},{"line_number":183,"context_line":"                    # db in this iteration and will try again on the next sync."}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f76af680","line":180,"range":{"start_line":180,"start_character":49,"end_line":180,"end_character":54},"updated":"2018-12-19 20:09:04.000000000","message":"allocated","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"780416a8604f4395c1512f324934b4908c461637","unresolved":false,"context_lines":[{"line_number":177,"context_line":"                    # two reasons. first the device could have been been"},{"line_number":178,"context_line":"                    # removed form the host or second the whitelist could"},{"line_number":179,"context_line":"                    # have been updated. While force removing may seam"},{"line_number":180,"context_line":"                    # resonable if the device is inuse by a vm this"},{"line_number":181,"context_line":"                    # will lead to https://bugs.launchpad.net/nova/+bug/163312."},{"line_number":182,"context_line":"                    # To prevent this bug we skip deleting the device form the"},{"line_number":183,"context_line":"                    # db in this iteration and will try again on the next sync."}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_5752cada","line":180,"range":{"start_line":180,"start_character":22,"end_line":180,"end_character":31},"updated":"2018-12-19 20:09:04.000000000","message":"reasonable,","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"780416a8604f4395c1512f324934b4908c461637","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                    # removed form the host or second the whitelist could"},{"line_number":179,"context_line":"                    # have been updated. While force removing may seam"},{"line_number":180,"context_line":"                    # resonable if the device is inuse by a vm this"},{"line_number":181,"context_line":"                    # will lead to https://bugs.launchpad.net/nova/+bug/163312."},{"line_number":182,"context_line":"                    # To prevent this bug we skip deleting the device form the"},{"line_number":183,"context_line":"                    # db in this iteration and will try again on the next sync."},{"line_number":184,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d75d7ae5","line":181,"range":{"start_line":181,"start_character":35,"end_line":181,"end_character":79},"updated":"2018-12-19 20:09:04.000000000","message":"rather than link the bug, which should be in the git history via the commit message, just summarize the issue - the instance to which the pci device is allocated may lose it during a reboot, and/or the scheduler may try to allocate the device to another instance which will fail.","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"780416a8604f4395c1512f324934b4908c461637","unresolved":false,"context_lines":[{"line_number":179,"context_line":"                    # have been updated. While force removing may seam"},{"line_number":180,"context_line":"                    # resonable if the device is inuse by a vm this"},{"line_number":181,"context_line":"                    # will lead to https://bugs.launchpad.net/nova/+bug/163312."},{"line_number":182,"context_line":"                    # To prevent this bug we skip deleting the device form the"},{"line_number":183,"context_line":"                    # db in this iteration and will try again on the next sync."},{"line_number":184,"context_line":"                    continue"},{"line_number":185,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_77fca6bb","line":182,"range":{"start_line":182,"start_character":70,"end_line":182,"end_character":74},"updated":"2018-12-19 20:09:04.000000000","message":"from","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b169ffe94724845d23f2df319eec4a915a8fafc","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        for existed in self.pci_devs:"},{"line_number":165,"context_line":"            if existed.address in exist_addrs - new_addrs:"},{"line_number":166,"context_line":"                # Remove previously tracked PCI devices that are either"},{"line_number":167,"context_line":"                # nolonger reported by the hypervisor or have been removed"},{"line_number":168,"context_line":"                # from the pci whitelist."},{"line_number":169,"context_line":"                try:"},{"line_number":170,"context_line":"                    existed.remove()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_08c164e5","line":167,"range":{"start_line":167,"start_character":18,"end_line":167,"end_character":26},"updated":"2019-01-31 19:40:39.000000000","message":"no longer","commit_id":"96524e18fd2d0a11aa0c3c078a401b72839009d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b169ffe94724845d23f2df319eec4a915a8fafc","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                try:"},{"line_number":170,"context_line":"                    existed.remove()"},{"line_number":171,"context_line":"                except exception.PciDeviceInvalidStatus as e:"},{"line_number":172,"context_line":"                    LOG.warning(\"Trying to remove device with %(status)s \""},{"line_number":173,"context_line":"                                \"ownership %(instance_uuid)s because of \""},{"line_number":174,"context_line":"                                \"%(pci_exception)s\","},{"line_number":175,"context_line":"                                {\u0027status\u0027: existed.status,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_88623409","line":172,"range":{"start_line":172,"start_character":33,"end_line":172,"end_character":39},"updated":"2019-01-31 19:40:39.000000000","message":"Should probably change this to \"Unable\" since we\u0027re not trying to remove it now, at least not by forcing the status change.","commit_id":"96524e18fd2d0a11aa0c3c078a401b72839009d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b169ffe94724845d23f2df319eec4a915a8fafc","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                except exception.PciDeviceInvalidStatus as e:"},{"line_number":172,"context_line":"                    LOG.warning(\"Trying to remove device with %(status)s \""},{"line_number":173,"context_line":"                                \"ownership %(instance_uuid)s because of \""},{"line_number":174,"context_line":"                                \"%(pci_exception)s\","},{"line_number":175,"context_line":"                                {\u0027status\u0027: existed.status,"},{"line_number":176,"context_line":"                                 \u0027instance_uuid\u0027: existed.instance_uuid,"},{"line_number":177,"context_line":"                                 \u0027pci_exception\u0027: e.format_message()})"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_2820e8ab","line":174,"updated":"2019-01-31 19:40:39.000000000","message":"We should probably also update this warning to give the operator some things to check or try, right? Maybe add something like: \"Check your [pci]passthrough_whitelist configuration to make sure this allocated device is whitelisted, and/or you may need to migrate the server to another host if the device is no longer available on this host.\"","commit_id":"96524e18fd2d0a11aa0c3c078a401b72839009d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b169ffe94724845d23f2df319eec4a915a8fafc","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                    # update to the PCI whitelist which was later reverted,"},{"line_number":186,"context_line":"                    # removing the entry from the database and adding it back"},{"line_number":187,"context_line":"                    # later may lead to the scheduler incorrectly selecting"},{"line_number":188,"context_line":"                    # this host and the resouce track assinging the pci device"},{"line_number":189,"context_line":"                    # to a second vm. To prevent this bug we skip deleting the"},{"line_number":190,"context_line":"                    # device from the db in this iteration and will try again"},{"line_number":191,"context_line":"                    # on the next sync."}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_8879d4c8","line":188,"range":{"start_line":188,"start_character":40,"end_line":188,"end_character":53},"updated":"2019-01-31 19:40:39.000000000","message":"ResourceTracker","commit_id":"96524e18fd2d0a11aa0c3c078a401b72839009d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b169ffe94724845d23f2df319eec4a915a8fafc","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                    # update to the PCI whitelist which was later reverted,"},{"line_number":186,"context_line":"                    # removing the entry from the database and adding it back"},{"line_number":187,"context_line":"                    # later may lead to the scheduler incorrectly selecting"},{"line_number":188,"context_line":"                    # this host and the resouce track assinging the pci device"},{"line_number":189,"context_line":"                    # to a second vm. To prevent this bug we skip deleting the"},{"line_number":190,"context_line":"                    # device from the db in this iteration and will try again"},{"line_number":191,"context_line":"                    # on the next sync."}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_a874d8cf","line":188,"range":{"start_line":188,"start_character":54,"end_line":188,"end_character":63},"updated":"2019-01-31 19:40:39.000000000","message":"assigning","commit_id":"96524e18fd2d0a11aa0c3c078a401b72839009d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ddb42e42f91946ff3223dbc5e6293889912e907","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                except exception.PciDeviceInvalidStatus as e:"},{"line_number":172,"context_line":"                    LOG.warning(\"Unable to remove device with %(status)s \""},{"line_number":173,"context_line":"                                \"ownership %(instance_uuid)s because of \""},{"line_number":174,"context_line":"                                \"%(pci_exception)s.\""},{"line_number":175,"context_line":"                                \"Check your [pci]passthrough_whitelist \""},{"line_number":176,"context_line":"                                \"configuration to make sure this allocated \""},{"line_number":177,"context_line":"                                \"device is whitelisted. If you have removed \""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_b27bd589","line":174,"range":{"start_line":174,"start_character":51,"end_line":174,"end_character":52},"updated":"2019-02-01 15:34:15.000000000","message":"Need a space here.","commit_id":"77726e30792ea101c9ca3eb78beed8fd4d64f13e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ddb42e42f91946ff3223dbc5e6293889912e907","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                                \"the device from the whitelist intentionally \""},{"line_number":179,"context_line":"                                \"or the device is no longer available on the \""},{"line_number":180,"context_line":"                                \"host you will need to delete the server or \""},{"line_number":181,"context_line":"                                \"migrate it to another host for the device \""},{"line_number":182,"context_line":"                                \"to be removed from the ResouceTracker.\","},{"line_number":183,"context_line":"                                {\u0027status\u0027: existed.status,"},{"line_number":184,"context_line":"                                 \u0027instance_uuid\u0027: existed.instance_uuid,"},{"line_number":185,"context_line":"                                 \u0027pci_exception\u0027: e.format_message()})"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_3267e5eb","line":182,"range":{"start_line":181,"start_character":59,"end_line":182,"end_character":70},"updated":"2019-02-01 15:34:15.000000000","message":"I think this part could be removed - I\u0027m not sure what ResourceTracker means to an operator - if you mean, \"for this warning to go away\" that\u0027s probably a better thing to say.","commit_id":"77726e30792ea101c9ca3eb78beed8fd4d64f13e"}],"nova/tests/unit/pci/test_manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"780416a8604f4395c1512f324934b4908c461637","unresolved":false,"context_lines":[{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def test_set_hvdev_remove_tree_maintained_with_allocations(self):"},{"line_number":316,"context_line":"        # Make sure the device tree is properly maintained when there are"},{"line_number":317,"context_line":"        # devices removed from the system (not reported by the driver but known"},{"line_number":318,"context_line":"        # from previous scans)"},{"line_number":319,"context_line":"        all_devs \u003d fake_db_devs_tree[:]"},{"line_number":320,"context_line":"        self._create_tracker(all_devs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_b7f55ecc","line":317,"range":{"start_line":317,"start_character":43,"end_line":317,"end_character":69},"updated":"2018-12-19 20:09:04.000000000","message":"nit: I think the primary issue in the various bugs is that the PCI device is reported by the hypervisor, but the operator changed the whitelist, maybe accidentally, which wiped out what the PCI manager was tracking and cleared its \"inventory\".","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a4544a44dc03ef60bbe855281cb0211871b0f249","unresolved":false,"context_lines":[{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def test_set_hvdev_remove_tree_maintained_with_allocations(self):"},{"line_number":316,"context_line":"        # Make sure the device tree is properly maintained when there are"},{"line_number":317,"context_line":"        # devices removed from the system (not reported by the driver but known"},{"line_number":318,"context_line":"        # from previous scans)"},{"line_number":319,"context_line":"        all_devs \u003d fake_db_devs_tree[:]"},{"line_number":320,"context_line":"        self._create_tracker(all_devs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_8bf509ce","line":317,"range":{"start_line":317,"start_character":43,"end_line":317,"end_character":69},"in_reply_to":"3f79a3b5_b7f55ecc","updated":"2019-01-21 21:00:47.000000000","message":"yes you are right this comment came for the test i based this test on.\nill update it to reflect the actual issue better and the intent of this test.","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"107fb985f272d94b6249328114cab1e6f10cd520","unresolved":false,"context_lines":[{"line_number":324,"context_line":"            3,"},{"line_number":325,"context_line":"            len([dev for dev in self.tracker.pci_devs"},{"line_number":326,"context_line":"                 if dev.status !\u003d fields.PciDeviceStatus.REMOVED]))"},{"line_number":327,"context_line":"        # we then allocate one device"},{"line_number":328,"context_line":"        last_dev \u003d fake_pci_devs[-1]"},{"line_number":329,"context_line":"        last_dev[\u0027status\u0027] \u003d fields.PciDeviceStatus.ALLOCATED"},{"line_number":330,"context_line":"        self.tracker._set_hvdevs(fake_pci_devs)"},{"line_number":331,"context_line":"        # and assert that no devices were removed"},{"line_number":332,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_97cf0289","line":329,"range":{"start_line":327,"start_character":8,"end_line":329,"end_character":61},"updated":"2018-12-19 20:07:56.000000000","message":"this is proably the issue.\ni proably need to claim the device properly\nas nothing is seting it to allocated in \nself.tracker.pci_devs","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"25679fd7caed8a3aa3087ea71fa861a49d29eff5","unresolved":false,"context_lines":[{"line_number":324,"context_line":"            3,"},{"line_number":325,"context_line":"            len([dev for dev in self.tracker.pci_devs"},{"line_number":326,"context_line":"                 if dev.status !\u003d fields.PciDeviceStatus.REMOVED]))"},{"line_number":327,"context_line":"        # we then allocate one device"},{"line_number":328,"context_line":"        last_dev \u003d fake_pci_devs[-1]"},{"line_number":329,"context_line":"        last_dev[\u0027status\u0027] \u003d fields.PciDeviceStatus.ALLOCATED"},{"line_number":330,"context_line":"        self.tracker._set_hvdevs(fake_pci_devs)"},{"line_number":331,"context_line":"        # and assert that no devices were removed"},{"line_number":332,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_429e8a67","line":329,"range":{"start_line":327,"start_character":8,"end_line":329,"end_character":61},"in_reply_to":"3f79a3b5_97cf0289","updated":"2018-12-19 21:00:00.000000000","message":"Correct, I was thinking the same - you\u0027re modifying something outside the tracker so you\u0027re not getting the PciDeviceInvalidStatus exception.","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"780416a8604f4395c1512f324934b4908c461637","unresolved":false,"context_lines":[{"line_number":333,"context_line":"            0,"},{"line_number":334,"context_line":"            len([dev for dev in self.tracker.pci_devs"},{"line_number":335,"context_line":"                 if dev.status \u003d\u003d fields.PciDeviceStatus.REMOVED]))"},{"line_number":336,"context_line":"        # we then remove the allocated device form the set reported"},{"line_number":337,"context_line":"        # by the driver."},{"line_number":338,"context_line":"        self.tracker._set_hvdevs(fake_pci_devs[:-1])"},{"line_number":339,"context_line":"        # and assert no devices are removed from the tracker"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_972aa22b","line":336,"range":{"start_line":336,"start_character":46,"end_line":336,"end_character":50},"updated":"2018-12-19 20:09:04.000000000","message":"from","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1c73a1291104bda15ef4466b9c4850ae813ca446","unresolved":false,"context_lines":[{"line_number":337,"context_line":"        # by the driver."},{"line_number":338,"context_line":"        self.tracker._set_hvdevs(fake_pci_devs[:-1])"},{"line_number":339,"context_line":"        # and assert no devices are removed from the tracker"},{"line_number":340,"context_line":"        self.assertEqual("},{"line_number":341,"context_line":"            0,"},{"line_number":342,"context_line":"            len([dev for dev in self.tracker.pci_devs"},{"line_number":343,"context_line":"                 if dev.status \u003d\u003d fields.PciDeviceStatus.REMOVED]))"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    def test_set_hvdev_changed_stal(self):"},{"line_number":346,"context_line":"        pci_requests_obj \u003d self._create_pci_requests_object("}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_b7479e1c","line":343,"range":{"start_line":340,"start_character":7,"end_line":343,"end_character":67},"updated":"2018-12-19 20:02:40.000000000","message":"this is the line that is failing but i dont know what is seting a device to removed","commit_id":"47daa751efd52767841635bed3062843b96907be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b169ffe94724845d23f2df319eec4a915a8fafc","unresolved":false,"context_lines":[{"line_number":336,"context_line":"            0,"},{"line_number":337,"context_line":"            len([dev for dev in self.tracker.pci_devs"},{"line_number":338,"context_line":"                 if dev.status \u003d\u003d fields.PciDeviceStatus.REMOVED]))"},{"line_number":339,"context_line":"        # we then remove the allocated device form the set reported"},{"line_number":340,"context_line":"        # by the driver."},{"line_number":341,"context_line":"        fake_pci_devs \u003d [dev for dev in all_devs"},{"line_number":342,"context_line":"                         if dev[\u0027address\u0027] !\u003d claimed_dev.address]"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_8b154e42","line":339,"range":{"start_line":339,"start_character":46,"end_line":339,"end_character":50},"updated":"2019-01-31 19:40:39.000000000","message":"from","commit_id":"96524e18fd2d0a11aa0c3c078a401b72839009d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b169ffe94724845d23f2df319eec4a915a8fafc","unresolved":false,"context_lines":[{"line_number":336,"context_line":"            0,"},{"line_number":337,"context_line":"            len([dev for dev in self.tracker.pci_devs"},{"line_number":338,"context_line":"                 if dev.status \u003d\u003d fields.PciDeviceStatus.REMOVED]))"},{"line_number":339,"context_line":"        # we then remove the allocated device form the set reported"},{"line_number":340,"context_line":"        # by the driver."},{"line_number":341,"context_line":"        fake_pci_devs \u003d [dev for dev in all_devs"},{"line_number":342,"context_line":"                         if dev[\u0027address\u0027] !\u003d claimed_dev.address]"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_0b2b9e82","line":339,"range":{"start_line":339,"start_character":18,"end_line":339,"end_character":24},"updated":"2019-01-31 19:40:39.000000000","message":"try to remove","commit_id":"96524e18fd2d0a11aa0c3c078a401b72839009d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b169ffe94724845d23f2df319eec4a915a8fafc","unresolved":false,"context_lines":[{"line_number":341,"context_line":"        fake_pci_devs \u003d [dev for dev in all_devs"},{"line_number":342,"context_line":"                         if dev[\u0027address\u0027] !\u003d claimed_dev.address]"},{"line_number":343,"context_line":"        self.tracker._set_hvdevs(fake_pci_devs)"},{"line_number":344,"context_line":"        # and assert no devices are removed from the tracker"},{"line_number":345,"context_line":"        self.assertEqual("},{"line_number":346,"context_line":"            0,"},{"line_number":347,"context_line":"            len([dev for dev in self.tracker.pci_devs"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_ab3932d7","line":344,"updated":"2019-01-31 19:40:39.000000000","message":"nit: you could also assert the warning message is logged on this call","commit_id":"96524e18fd2d0a11aa0c3c078a401b72839009d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ddb42e42f91946ff3223dbc5e6293889912e907","unresolved":false,"context_lines":[{"line_number":342,"context_line":"                         if dev[\u0027address\u0027] !\u003d claimed_dev.address]"},{"line_number":343,"context_line":"        with mock.patch(\"nova.pci.manager.LOG.warning\") as log:"},{"line_number":344,"context_line":"            self.tracker._set_hvdevs(fake_pci_devs)"},{"line_number":345,"context_line":"            log.assert_called()"},{"line_number":346,"context_line":"        # and assert no devices are removed from the tracker"},{"line_number":347,"context_line":"        self.assertEqual("},{"line_number":348,"context_line":"            0,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_32acc5eb","line":345,"updated":"2019-02-01 15:34:15.000000000","message":"This could be anything, it would be better to assert that \"Unable to remove device with\" is in what was logged, which you can do like this:\n\ncall_args_list \u003d log.call_args_list\nself.assertEqual(1, len(call_args_list))  # assert called once\nself.assertIn(\u0027Unable to remove device with\u0027,\n              call_args_list[0][0][0])  # first call, args, first arg","commit_id":"77726e30792ea101c9ca3eb78beed8fd4d64f13e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b3d53e906160852aad39c102c7dadc36f034352e","unresolved":false,"context_lines":[{"line_number":342,"context_line":"                         if dev[\u0027address\u0027] !\u003d claimed_dev.address]"},{"line_number":343,"context_line":"        with mock.patch(\"nova.pci.manager.LOG.warning\") as log:"},{"line_number":344,"context_line":"            self.tracker._set_hvdevs(fake_pci_devs)"},{"line_number":345,"context_line":"            log.assert_called()"},{"line_number":346,"context_line":"        # and assert no devices are removed from the tracker"},{"line_number":347,"context_line":"        self.assertEqual("},{"line_number":348,"context_line":"            0,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_72424d11","line":345,"in_reply_to":"9fdfeff1_32acc5eb","updated":"2019-02-01 15:44:50.000000000","message":"i semi did that intentionally.\ni did not want to leak th contengs of the message into the tests as if it change in the future i did not want it to break the tests.\n\nbut ok ill refactor as you suggest.","commit_id":"77726e30792ea101c9ca3eb78beed8fd4d64f13e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9f37657a666e30ec3d63d8a7a85fae01c8e4f392","unresolved":false,"context_lines":[{"line_number":343,"context_line":"        with mock.patch(\"nova.pci.manager.LOG.warning\") as log:"},{"line_number":344,"context_line":"            self.tracker._set_hvdevs(fake_pci_devs)"},{"line_number":345,"context_line":"            log.assert_called_once()"},{"line_number":346,"context_line":"            args \u003d log.call_args_list[0][0] # args of first call"},{"line_number":347,"context_line":"            self.assertIn(\u0027Unable to remove device with\u0027, args[0])"},{"line_number":348,"context_line":"        # and assert no devices are removed from the tracker"},{"line_number":349,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_159acbb7","line":346,"range":{"start_line":346,"start_character":43,"end_line":346,"end_character":44},"updated":"2019-02-01 16:40:08.000000000","message":"this is going to be a pep8 error","commit_id":"a1843a14b97c68e7c9d690ec7601db90aa6ec51a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a28a19fba769ec253d775f1582e2a50716732071","unresolved":false,"context_lines":[{"line_number":343,"context_line":"        with mock.patch(\"nova.pci.manager.LOG.warning\") as log:"},{"line_number":344,"context_line":"            self.tracker._set_hvdevs(fake_pci_devs)"},{"line_number":345,"context_line":"            log.assert_called_once()"},{"line_number":346,"context_line":"            args \u003d log.call_args_list[0][0] # args of first call"},{"line_number":347,"context_line":"            self.assertIn(\u0027Unable to remove device with\u0027, args[0])"},{"line_number":348,"context_line":"        # and assert no devices are removed from the tracker"},{"line_number":349,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_357b4f28","line":346,"range":{"start_line":346,"start_character":43,"end_line":346,"end_character":44},"in_reply_to":"9fdfeff1_159acbb7","updated":"2019-02-01 16:56:56.000000000","message":"you are correct i added that comment after i ran pep8","commit_id":"a1843a14b97c68e7c9d690ec7601db90aa6ec51a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"33eb6fe20f16675d7789e74dbbd456533705847d","unresolved":false,"context_lines":[{"line_number":323,"context_line":"            3,"},{"line_number":324,"context_line":"            len([dev for dev in self.tracker.pci_devs"},{"line_number":325,"context_line":"                 if dev.status !\u003d fields.PciDeviceStatus.REMOVED]))"},{"line_number":326,"context_line":"        # we then allocate one device"},{"line_number":327,"context_line":"        pci_requests_obj \u003d self._create_pci_requests_object("},{"line_number":328,"context_line":"            [{\u0027count\u0027: 1, \u0027spec\u0027: [{\u0027vendor_id\u0027: \u0027v2\u0027}]}])"},{"line_number":329,"context_line":"        # NOTE(sean-k-mooney): context, pci request, numa topology"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_3ed475bd","line":326,"range":{"start_line":326,"start_character":0,"end_line":326,"end_character":37},"updated":"2019-02-04 16:46:59.000000000","message":"++ (Love seeing these in tests)","commit_id":"26c41eccade6412f61f9a8721d853b545061adcc"}]}
