)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":35099,"name":"Jakub Jelinek","email":"jakub.jelinek@cern.ch","username":"kubajj"},"change_message_id":"13d83a3050d552f66df7df10d29caf0541f12cf4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c00b7f44_e1531c58","updated":"2023-02-17 16:50:16.000000000","message":"recheck NeutronVIFPortIDMixin.port_changed returned None","commit_id":"9d3d16b791387acc23e61513bdebdb631b255e37"},{"author":{"_account_id":35099,"name":"Jakub Jelinek","email":"jakub.jelinek@cern.ch","username":"kubajj"},"change_message_id":"c6dea222c02b84cb8ad5e047f723b70ffe9505ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5954c2c5_8335af2e","updated":"2023-02-17 10:05:43.000000000","message":"recheck node locked by another host","commit_id":"9d3d16b791387acc23e61513bdebdb631b255e37"}],"ironic/common/exception.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"94e7cd8b4556b1ecbb376f9f6790bb5d52ba4f50","unresolved":true,"context_lines":[{"line_number":833,"context_line":""},{"line_number":834,"context_line":""},{"line_number":835,"context_line":"class NodeInventoryNotFound(NotFound):"},{"line_number":836,"context_line":"    def __init__(self, msg\u003dNone, node\u003dNone, inventory\u003dNone):"},{"line_number":837,"context_line":"        self.msg \u003d msg"},{"line_number":838,"context_line":"        self.node \u003d node"},{"line_number":839,"context_line":"        self.inventory \u003d inventory"}],"source_content_type":"text/x-python","patch_set":1,"id":"b93a011e_c8ae306f","line":836,"updated":"2023-02-16 11:25:27.000000000","message":"I\u0027d prefer this class not changed. We should never ever refer to inventory ID in anything remotely public (including logs).","commit_id":"3c9c34228d8f708002994b423f0eaf4864b5fef4"},{"author":{"_account_id":35099,"name":"Jakub Jelinek","email":"jakub.jelinek@cern.ch","username":"kubajj"},"change_message_id":"81becf146f27974706a8c6c566d4722dd439b998","unresolved":false,"context_lines":[{"line_number":833,"context_line":""},{"line_number":834,"context_line":""},{"line_number":835,"context_line":"class NodeInventoryNotFound(NotFound):"},{"line_number":836,"context_line":"    def __init__(self, msg\u003dNone, node\u003dNone, inventory\u003dNone):"},{"line_number":837,"context_line":"        self.msg \u003d msg"},{"line_number":838,"context_line":"        self.node \u003d node"},{"line_number":839,"context_line":"        self.inventory \u003d inventory"}],"source_content_type":"text/x-python","patch_set":1,"id":"534a7a08_beda3133","line":836,"in_reply_to":"b93a011e_c8ae306f","updated":"2023-02-16 11:36:50.000000000","message":"Ack","commit_id":"3c9c34228d8f708002994b423f0eaf4864b5fef4"}],"ironic/db/sqlalchemy/api.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"94e7cd8b4556b1ecbb376f9f6790bb5d52ba4f50","unresolved":true,"context_lines":[{"line_number":2587,"context_line":"                raise exception.NodeInventoryNotFound("},{"line_number":2588,"context_line":"                    node\u003dnode_id)"},{"line_number":2589,"context_line":""},{"line_number":2590,"context_line":"    def get_node_inventory_by_id(self, inventory_id):"},{"line_number":2591,"context_line":"        query \u003d model_query(models.NodeInventory).filter_by(id\u003dinventory_id)"},{"line_number":2592,"context_line":"        try:"},{"line_number":2593,"context_line":"            return query.one()"}],"source_content_type":"text/x-python","patch_set":1,"id":"fc3f5f17_2fb3a6dd","line":2590,"updated":"2023-02-16 11:25:27.000000000","message":"This call shouldn\u0027t really exist: we never operate with the inventory ID","commit_id":"3c9c34228d8f708002994b423f0eaf4864b5fef4"},{"author":{"_account_id":35099,"name":"Jakub Jelinek","email":"jakub.jelinek@cern.ch","username":"kubajj"},"change_message_id":"81becf146f27974706a8c6c566d4722dd439b998","unresolved":false,"context_lines":[{"line_number":2587,"context_line":"                raise exception.NodeInventoryNotFound("},{"line_number":2588,"context_line":"                    node\u003dnode_id)"},{"line_number":2589,"context_line":""},{"line_number":2590,"context_line":"    def get_node_inventory_by_id(self, inventory_id):"},{"line_number":2591,"context_line":"        query \u003d model_query(models.NodeInventory).filter_by(id\u003dinventory_id)"},{"line_number":2592,"context_line":"        try:"},{"line_number":2593,"context_line":"            return query.one()"}],"source_content_type":"text/x-python","patch_set":1,"id":"83c5a12b_d8121027","line":2590,"in_reply_to":"fc3f5f17_2fb3a6dd","updated":"2023-02-16 11:36:50.000000000","message":"Done","commit_id":"3c9c34228d8f708002994b423f0eaf4864b5fef4"}],"ironic/objects/node_inventory.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"94e7cd8b4556b1ecbb376f9f6790bb5d52ba4f50","unresolved":true,"context_lines":[{"line_number":46,"context_line":"            setattr(self, dest, node.instance_info.get(src))"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @classmethod"},{"line_number":49,"context_line":"    def get_by_id(cls, context, inventory_id):"},{"line_number":50,"context_line":"        \"\"\"Get a NodeInventory object by its integer ID."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        :param cls: the :class:`NodeInventory`"}],"source_content_type":"text/x-python","patch_set":1,"id":"000f5e02_e3b2c5f9","line":49,"updated":"2023-02-16 11:25:27.000000000","message":"This seems unused and should probably be just removed.","commit_id":"3c9c34228d8f708002994b423f0eaf4864b5fef4"},{"author":{"_account_id":35099,"name":"Jakub Jelinek","email":"jakub.jelinek@cern.ch","username":"kubajj"},"change_message_id":"81becf146f27974706a8c6c566d4722dd439b998","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            setattr(self, dest, node.instance_info.get(src))"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @classmethod"},{"line_number":49,"context_line":"    def get_by_id(cls, context, inventory_id):"},{"line_number":50,"context_line":"        \"\"\"Get a NodeInventory object by its integer ID."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        :param cls: the :class:`NodeInventory`"}],"source_content_type":"text/x-python","patch_set":1,"id":"82afaf6b_66024204","line":49,"in_reply_to":"000f5e02_e3b2c5f9","updated":"2023-02-16 11:36:50.000000000","message":"Done","commit_id":"3c9c34228d8f708002994b423f0eaf4864b5fef4"}]}
