)]}'
{"ironic/api/controllers/v1/port.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"ec956010ae16b218c4b04c91e23811696bb46d02","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def _set_node_uuid(self, value):"},{"line_number":55,"context_line":"        if value and self._node_uuid !\u003d value:"},{"line_number":56,"context_line":"            try:"},{"line_number":57,"context_line":"                node \u003d objects.Node.get_by_uuid(pecan.request.context, value)"},{"line_number":58,"context_line":"                self._node_uuid \u003d node.uuid"},{"line_number":59,"context_line":"                # NOTE(lucasagomes): Create the node_id attribute on-the-fly"},{"line_number":60,"context_line":"                #                    to satisfy the api -\u003e rpc object"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F90WM%3D","side":"PARENT","line":57,"updated":"2014-04-01 22:46:47.000000000","message":"FYI, this only worked before because \u0027get_by_uuid\u0027 would actually happily query for an id as well. After this patch, it no longer does.","commit_id":"02417ebe8d506c1d6a0a7439e0352aed597470cf"}],"ironic/conductor/manager.py":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"b0d5d0be2c7ce393d60ac30adf2054e5281ea1ee","unresolved":false,"context_lines":[{"line_number":566,"context_line":"                if node.provision_state \u003d\u003d states.DEPLOYWAIT:"},{"line_number":567,"context_line":"                    continue"},{"line_number":568,"context_line":""},{"line_number":569,"context_line":"                with task_manager.acquire(context, node_id) as task:"},{"line_number":570,"context_line":"                    self._do_sync_power_state(task)"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"            except exception.NodeNotFound:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F9sss%3D","line":569,"updated":"2014-04-02 18:07:23.000000000","message":"since you\u0027re refactoring this here anyway, let\u0027s consolidate and save a DB query. task_manager.acquire() is going to fetch the node obj from the database anyway. I think we should change this section to be like this:\n\n  columns \u003d [\u0027id\u0027, \u0027uuid\u0027, \u0027driver\u0027, \u0027provision_state\u0027]\n  ...\n\n  for (...) in node_list:\n    mapped_hosts \u003d ...\n    if self.host not in mapped_hosts or provision_state \u003d\u003d states.DEPLOYWAIT:\n      continue\n\n    try:\n      with task_manager.acquire(...) as task:\n        # check deploywait again, in case it changed\n        if task.node.provision_state \u003d\u003d states.DEPLOYWAIT:\n          continue\n        ...","commit_id":"99b4447db9853934c755bfef2daa8d0fe7bc2a4d"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"341cc952d89ed69351837218bb10b5bf9bc584e3","unresolved":false,"context_lines":[{"line_number":566,"context_line":"                if node.provision_state \u003d\u003d states.DEPLOYWAIT:"},{"line_number":567,"context_line":"                    continue"},{"line_number":568,"context_line":""},{"line_number":569,"context_line":"                with task_manager.acquire(context, node_id) as task:"},{"line_number":570,"context_line":"                    self._do_sync_power_state(task)"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"            except exception.NodeNotFound:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F9sog%3D","line":569,"in_reply_to":"AAAAWH%2F9sss%3D","updated":"2014-04-02 18:11:39.000000000","message":"Yeah, I spotted this also. :)  I\u0027ll hit it.","commit_id":"99b4447db9853934c755bfef2daa8d0fe7bc2a4d"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"bd230aa37e026b0c6c5a985f3bf6377991d05020","unresolved":false,"context_lines":[{"line_number":57,"context_line":"from ironic.conductor import task_manager"},{"line_number":58,"context_line":"from ironic.conductor import utils"},{"line_number":59,"context_line":"from ironic.db import api as dbapi"},{"line_number":60,"context_line":"from ironic import objects"},{"line_number":61,"context_line":"from ironic.objects import base as objects_base"},{"line_number":62,"context_line":"from ironic.openstack.common import excutils"},{"line_number":63,"context_line":"from ironic.openstack.common import lockutils"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAW3%2F%2F4eQ%3D","line":60,"updated":"2014-04-09 17:51:39.000000000","message":"pep8 error on this line","commit_id":"7a3b58d6b56c9cbe13ed2dfde59f461bafea6305"}],"ironic/db/sqlalchemy/api.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e125f20bd6bee0a690f44093a9329825bf84e52b","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        return node"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    def get_node_by_id(self, node_id):"},{"line_number":313,"context_line":"        query \u003d model_query(models.Node).filter_by(id\u003dnode_id)"},{"line_number":314,"context_line":"        try:"},{"line_number":315,"context_line":"            return query.one()"},{"line_number":316,"context_line":"        except NoResultFound:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAXH%2F%2FrBg%3D","line":313,"updated":"2014-04-18 11:15:50.000000000","message":"Is id a primary key? I remember sqlalchemy having some shortcut like query.get(pk) which can be used here than.","commit_id":"32374af749fae8dd88f39d258c0df7f941c18977"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6b4c5d7a7305188330cd0264315a15752b22e3b6","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        return node"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    def get_node_by_id(self, node_id):"},{"line_number":313,"context_line":"        query \u003d model_query(models.Node).filter_by(id\u003dnode_id)"},{"line_number":314,"context_line":"        try:"},{"line_number":315,"context_line":"            return query.one()"},{"line_number":316,"context_line":"        except NoResultFound:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAXH%2F%2FMVU%3D","line":313,"in_reply_to":"AAAAXH%2F%2Fieg%3D","updated":"2014-04-23 12:41:09.000000000","message":"ack","commit_id":"32374af749fae8dd88f39d258c0df7f941c18977"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"59247cc61eed4705200b5fd246fc133c150f2f5f","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        return node"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    def get_node_by_id(self, node_id):"},{"line_number":313,"context_line":"        query \u003d model_query(models.Node).filter_by(id\u003dnode_id)"},{"line_number":314,"context_line":"        try:"},{"line_number":315,"context_line":"            return query.one()"},{"line_number":316,"context_line":"        except NoResultFound:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAXH%2F%2Fieg%3D","line":313,"in_reply_to":"AAAAXH%2F%2FrBg%3D","updated":"2014-04-19 23:04:39.000000000","message":"Yeah, it looks like get(node_id) would work here. I\u0027m not sure it\u0027s any better.. it has some other side effects of trying to look in a session cache for the record before emitting SQL. I\u0027m inclined to leave it this way for now (It matches the old behavior) as it probably belongs in a separate patch if we decide to do it.","commit_id":"32374af749fae8dd88f39d258c0df7f941c18977"}],"ironic/tests/conductor/test_task_manager.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"3ae99b61cb5f3ed3a46f5a34d926c00922b20622","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def test_task_manager_updates_db(self):"},{"line_number":75,"context_line":"        node_uuid \u003d self.uuids[0]"},{"line_number":76,"context_line":"        node \u003d objects.Node.get(self.context, node_uuid)"},{"line_number":77,"context_line":"        self.assertIsNone(node.reservation)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        with task_manager.acquire(self.context, node_uuid) as task:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F90Tk%3D","line":76,"updated":"2014-04-01 22:53:44.000000000","message":"probably should be consistent here.","commit_id":"435cebae81fba0dd418a89604019c9e7a01d5c8e"}],"ironic/tests/db/test_nodes.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e125f20bd6bee0a690f44093a9329825bf84e52b","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        n \u003d self._create_test_node()"},{"line_number":88,"context_line":"        res \u003d self.dbapi.get_node_by_uuid(n[\u0027uuid\u0027])"},{"line_number":89,"context_line":"        self.assertEqual(n[\u0027id\u0027], res.id)"},{"line_number":90,"context_line":"        self.assertEqual(n[\u0027uuid\u0027], res.uuid)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def test_get_node_that_does_not_exist(self):"},{"line_number":93,"context_line":"        self.assertRaises(exception.NodeNotFound,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAXH%2F%2FrA8%3D","line":90,"updated":"2014-04-18 11:15:50.000000000","message":"Can we have a test on invalid uuid, like one deleted from test_get_node_that_does_not_exist?","commit_id":"32374af749fae8dd88f39d258c0df7f941c18977"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6b4c5d7a7305188330cd0264315a15752b22e3b6","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        n \u003d self._create_test_node()"},{"line_number":88,"context_line":"        res \u003d self.dbapi.get_node_by_uuid(n[\u0027uuid\u0027])"},{"line_number":89,"context_line":"        self.assertEqual(n[\u0027id\u0027], res.id)"},{"line_number":90,"context_line":"        self.assertEqual(n[\u0027uuid\u0027], res.uuid)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def test_get_node_that_does_not_exist(self):"},{"line_number":93,"context_line":"        self.assertRaises(exception.NodeNotFound,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAXH%2F%2FMVk%3D","line":90,"in_reply_to":"AAAAXH%2F%2Fiec%3D","updated":"2014-04-23 12:41:09.000000000","message":"Oh, I think I was a bit confused. Now is is get() that can raise InvalidIdentity. Do we have tests on it?","commit_id":"32374af749fae8dd88f39d258c0df7f941c18977"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"59247cc61eed4705200b5fd246fc133c150f2f5f","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        n \u003d self._create_test_node()"},{"line_number":88,"context_line":"        res \u003d self.dbapi.get_node_by_uuid(n[\u0027uuid\u0027])"},{"line_number":89,"context_line":"        self.assertEqual(n[\u0027id\u0027], res.id)"},{"line_number":90,"context_line":"        self.assertEqual(n[\u0027uuid\u0027], res.uuid)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def test_get_node_that_does_not_exist(self):"},{"line_number":93,"context_line":"        self.assertRaises(exception.NodeNotFound,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAXH%2F%2Fiec%3D","line":90,"in_reply_to":"AAAAXH%2F%2FrA8%3D","updated":"2014-04-19 23:04:39.000000000","message":"It\u0027s actually there, in the same method. :)  Line 96 below.","commit_id":"32374af749fae8dd88f39d258c0df7f941c18977"}]}
