)]}'
{"ironic/conductor/task_manager.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"determine whether their invocation requires an exclusive lock."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"The TaskManager instance exposes certain node resources and properties as"},{"line_number":42,"context_line":"attributes that you may access."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"task.context -- The context passed to TaskManager()"},{"line_number":45,"context_line":"task.shared -- True if Node is not locked, False if it is locked (The"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_b38602b8","line":42,"updated":"2014-05-01 20:50:12.000000000","message":"Suggestion. Maybe end with a \u0027:\u0027 and indent the following task.* stuff.","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"attributes that you may access."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"task.context -- The context passed to TaskManager()"},{"line_number":45,"context_line":"task.shared -- True if Node is not locked, False if it is locked (The"},{"line_number":46,"context_line":"               \u0027shared\u0027 kwarg arg of TaskManager())"},{"line_number":47,"context_line":"task.node -- The Node object"},{"line_number":48,"context_line":"task.ports -- Ports belonging to the Node"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_53acd6a0","line":45,"updated":"2014-05-01 20:50:12.000000000","message":"nit. It reads a bit awkwardly. Not sure if a period helps before \u0027(The)\u0027.","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"task.node -- The Node object"},{"line_number":48,"context_line":"task.ports -- Ports belonging to the Node"},{"line_number":49,"context_line":"task.driver -- The Driver for the node, or the Driver based on the"},{"line_number":50,"context_line":"               \u0027driver-name\u0027 kwarg passed to TaskManager()."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Example usage:"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_f3e24a9e","line":50,"updated":"2014-05-01 20:50:12.000000000","message":"Here you have \u0027kwarg passed\u0027, and in L46 you have \u0027kwarg arg of\u0027. Instead of kwarg, how about \u0027keyword argument\u0027?\n\n\u0027driver-name\u0027 -\u003e \u0027driver_name\u0027 ;)","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    return wrapper"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"def acquire(context, node_ids, shared\u003dFalse, driver_name\u003dNone):"},{"line_number":101,"context_line":"    \"\"\"Shortcut for acquiring a lock on one or more Nodes."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    :param context: Request context."}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_13640e21","line":100,"updated":"2014-05-01 20:50:12.000000000","message":"should this be one node_id, or is this meant to handle more than one still?","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    \"\"\"Context manager for tasks."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    This class wraps the locking, driver loading, and acquisition"},{"line_number":118,"context_line":"    of related resources (eg, Nodes and Ports) when beginning a unit of work."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    \"\"\""},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_7341da59","line":118,"updated":"2014-05-01 20:50:12.000000000","message":"I wonder if \u0027Node\u0027 instead of \u0027Nodes\u0027 might be clearer, since one TaskManager will only handle one node now.","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    def __init__(self, context, node_id, shared\u003dFalse, driver_name\u003dNone):"},{"line_number":123,"context_line":"        \"\"\"Create a new TaskManager."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        Acquire a lock atomically on a non-empty set of nodes. The lock"},{"line_number":126,"context_line":"        can be either shared or exclusive. Shared locks may be used for"},{"line_number":127,"context_line":"        read-only or non-disruptive actions only, and must be considerate"},{"line_number":128,"context_line":"        to what other threads may be doing on the nodes at the same time."}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_d32f06a0","line":125,"updated":"2014-05-01 20:50:12.000000000","message":"\u0027a non-empty set of nodes\u0027 -\u003e \u0027a node\u0027.","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        Acquire a lock atomically on a non-empty set of nodes. The lock"},{"line_number":126,"context_line":"        can be either shared or exclusive. Shared locks may be used for"},{"line_number":127,"context_line":"        read-only or non-disruptive actions only, and must be considerate"},{"line_number":128,"context_line":"        to what other threads may be doing on the nodes at the same time."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        :param context: request context"},{"line_number":131,"context_line":"        :param node_id: ID or UUID of node to lock."}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_930c9e44","line":128,"updated":"2014-05-01 20:50:12.000000000","message":"\u0027the nodes\u0027 -\u003e \u0027the same node\u0027?","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        self._spawn_kwargs \u003d kwargs"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def release_resources(self):"},{"line_number":167,"context_line":"        \"\"\"Release any resources for which this TaskManager"},{"line_number":168,"context_line":"        was holding an exclusive lock."},{"line_number":169,"context_line":"        \"\"\""},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_76746899","line":167,"updated":"2014-05-01 20:50:12.000000000","message":"If you feel like it, would you mind fixing this docstring? The first line should end in a period, followed by a blank line, followed by detailed description.","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"16f993dc3f04de42b59200f027a835e0aaca71f2","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        self._spawn_kwargs \u003d kwargs"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def release_resources(self):"},{"line_number":167,"context_line":"        \"\"\"Release any resources for which this TaskManager"},{"line_number":168,"context_line":"        was holding an exclusive lock."},{"line_number":169,"context_line":"        \"\"\""},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_390d6c91","line":167,"in_reply_to":"9ad9bd40_76746899","updated":"2014-05-01 22:00:41.000000000","message":"This isn\u0027t a strict rule, unless Ironic has implemented this in some way. HACKING just says that if there\u0027s a single line, it must end in a period.  But, I\u0027ll take a look.","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"}],"ironic/db/api.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        :param tag: A string uniquely identifying the reservation holder."},{"line_number":105,"context_line":"        :param node_id: A node id or uuid."},{"line_number":106,"context_line":"        :returns: A Node object."},{"line_number":107,"context_line":"        :raises: NodeNotFound if any node is not found."},{"line_number":108,"context_line":"        :raises: NodeLocked if any node is already reserved."},{"line_number":109,"context_line":"        \"\"\""},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_16831c57","line":107,"updated":"2014-05-01 20:50:12.000000000","message":"nit. \u0027any\u0027 -\u003e \u0027the\u0027","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        :param node_id: A node id or uuid."},{"line_number":106,"context_line":"        :returns: A Node object."},{"line_number":107,"context_line":"        :raises: NodeNotFound if any node is not found."},{"line_number":108,"context_line":"        :raises: NodeLocked if any node is already reserved."},{"line_number":109,"context_line":"        \"\"\""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_36882071","line":108,"updated":"2014-05-01 20:50:12.000000000","message":"nit. \u0027any\u0027 -\u003e \u0027the\u0027","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @abc.abstractmethod"},{"line_number":112,"context_line":"    def release_node(self, tag, node_id):"},{"line_number":113,"context_line":"        \"\"\"Release the reservation on a set of nodes atomically."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        :param tag: A string uniquely identifying the reservation holder."},{"line_number":116,"context_line":"        :param node_id: A node id or uuid."}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_b69350a2","line":113,"updated":"2014-05-01 20:50:12.000000000","message":"\u0027a set of nodes atomically\u0027 -\u003e \u0027a node\u0027.","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        :param tag: A string uniquely identifying the reservation holder."},{"line_number":116,"context_line":"        :param node_id: A node id or uuid."},{"line_number":117,"context_line":"        :raises: NodeNotFound if any node is not found."},{"line_number":118,"context_line":"        :raises: NodeLocked if node is reserved by another host."},{"line_number":119,"context_line":"        :raises: NodeNotLocked if node is already not reserved."},{"line_number":120,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_d690d497","line":117,"updated":"2014-05-01 20:50:12.000000000","message":"nit. \u0027any\u0027 -\u003e \u0027the\u0027","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        :param node_id: A node id or uuid."},{"line_number":117,"context_line":"        :raises: NodeNotFound if any node is not found."},{"line_number":118,"context_line":"        :raises: NodeLocked if node is reserved by another host."},{"line_number":119,"context_line":"        :raises: NodeNotLocked if node is already not reserved."},{"line_number":120,"context_line":"        \"\"\""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_f6eeb8eb","line":119,"updated":"2014-05-01 20:50:12.000000000","message":"\u0027is already not reserved\u0027. Hmm, would it be better as \u0027was not reserved\u0027? Well, it is awkward, but I can\u0027t think of anything that is much better.","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"}],"ironic/db/sqlalchemy/api.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":226,"context_line":"    @objects.objectify(objects.Node)"},{"line_number":227,"context_line":"    def reserve_node(self, tag, node_id):"},{"line_number":228,"context_line":"        # assume nodes does not contain duplicates"},{"line_number":229,"context_line":"        # Ensure consistent sort order so we don\u0027t run into deadlocks."},{"line_number":230,"context_line":"        session \u003d get_session()"},{"line_number":231,"context_line":"        with session.begin():"},{"line_number":232,"context_line":"            no_reserv \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_16bddc68","line":229,"updated":"2014-05-01 20:50:12.000000000","message":"I don\u0027t think these two lines are needed ;)","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            query \u003d model_query(models.Node, session\u003dsession)"},{"line_number":234,"context_line":"            query \u003d add_identity_filter(query, node_id)"},{"line_number":235,"context_line":"            # be optimistic and assume we usually create a reservation"},{"line_number":236,"context_line":"            count \u003d query.filter_by(reservation\u003dno_reserv).update("},{"line_number":237,"context_line":"                        {\u0027reservation\u0027: tag}, synchronize_session\u003dFalse)"},{"line_number":238,"context_line":"            try:"},{"line_number":239,"context_line":"                node \u003d query.one()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_a1f5cc84","line":236,"updated":"2014-05-01 20:50:12.000000000","message":"Could you do \u0027reservation\u003dNone\u0027 and get rid of no_reserv?","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":247,"context_line":"                raise exception.NodeNotFound(node_id)"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def release_node(self, tag, node_id):"},{"line_number":250,"context_line":"        # assume nodes does not contain duplicates"},{"line_number":251,"context_line":"        session \u003d get_session()"},{"line_number":252,"context_line":"        with session.begin():"},{"line_number":253,"context_line":"            query \u003d model_query(models.Node, session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_c176503e","line":250,"updated":"2014-05-01 20:50:12.000000000","message":"I don\u0027t think this is needed ;)","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"}],"ironic/tests/conductor/test_task_manager.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"22d770b9adbb2e5ee829f71c0a401f69586d6701","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                         reserve_mock, release_mock, node_get_mock):"},{"line_number":263,"context_line":"        thread_mock \u003d mock.Mock(spec_set\u003d[\u0027link\u0027, \u0027cancel\u0027])"},{"line_number":264,"context_line":"        spawn_mock \u003d mock.Mock(return_value\u003dthread_mock)"},{"line_number":265,"context_line":"        release_mock \u003d mock.Mock()"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        with task_manager.TaskManager(self.context, \u0027node-id\u0027) as task:"},{"line_number":268,"context_line":"            task.spawn_after(spawn_mock, 1, 2, foo\u003d\u0027bar\u0027, cat\u003d\u0027meow\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_99ff5834","line":265,"updated":"2014-05-01 21:48:55.000000000","message":"This \u0027release_mock\u0027 is to release resources, whereas the release_mock arg is for db-release-nodes. I was a bit confused as to what was going on. Maybe rename one of the release_mock\u0027s?\n\nLooks like a similar thing for the other test_spawn_*()s.","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"16f993dc3f04de42b59200f027a835e0aaca71f2","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                         reserve_mock, release_mock, node_get_mock):"},{"line_number":263,"context_line":"        thread_mock \u003d mock.Mock(spec_set\u003d[\u0027link\u0027, \u0027cancel\u0027])"},{"line_number":264,"context_line":"        spawn_mock \u003d mock.Mock(return_value\u003dthread_mock)"},{"line_number":265,"context_line":"        release_mock \u003d mock.Mock()"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        with task_manager.TaskManager(self.context, \u0027node-id\u0027) as task:"},{"line_number":268,"context_line":"            task.spawn_after(spawn_mock, 1, 2, foo\u003d\u0027bar\u0027, cat\u003d\u0027meow\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_ec8fc421","line":265,"in_reply_to":"9ad9bd40_99ff5834","updated":"2014-05-01 22:00:41.000000000","message":"Oops, yeah, I didn\u0027t notice this when I moved the decorators to the class level.","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"}],"ironic/tests/db/test_nodes.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"22d770b9adbb2e5ee829f71c0a401f69586d6701","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        except exception.NodeLocked as e:"},{"line_number":393,"context_line":"            self.assertIn(r, str(e))"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def test_reservation_non_existant_node(self):"},{"line_number":396,"context_line":"        n \u003d self._create_test_node()"},{"line_number":397,"context_line":"        self.dbapi.destroy_node(n[\u0027id\u0027])"},{"line_number":398,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_9622c7b7","line":395,"updated":"2014-05-01 21:48:55.000000000","message":"I had to look it up because it was bugging me. \u0027existant\u0027 seems to be a common misspelling for \u0027existent\u0027.","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"16f993dc3f04de42b59200f027a835e0aaca71f2","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        except exception.NodeLocked as e:"},{"line_number":393,"context_line":"            self.assertIn(r, str(e))"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def test_reservation_non_existant_node(self):"},{"line_number":396,"context_line":"        n \u003d self._create_test_node()"},{"line_number":397,"context_line":"        self.dbapi.destroy_node(n[\u0027id\u0027])"},{"line_number":398,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_6cd1f4fa","line":395,"in_reply_to":"9ad9bd40_9622c7b7","updated":"2014-05-01 22:00:41.000000000","message":"Oops, yep.","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"}],"ironic/tests/drivers/test_seamicro.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"16f993dc3f04de42b59200f027a835e0aaca71f2","unresolved":false,"context_lines":[{"line_number":383,"context_line":"        mock_power_off.assert_called_once_with(self.node)"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"    def test_vendor_passthru_validate_good(self):"},{"line_number":386,"context_line":"        with task_manager.acquire(self.context, [self.node[\u0027uuid\u0027]],"},{"line_number":387,"context_line":"                                  shared\u003dTrue) as task:"},{"line_number":388,"context_line":"            for method in seamicro.VENDOR_PASSTHRU_METHODS:"},{"line_number":389,"context_line":"                task.resources[0].driver.vendor.validate("}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_0c2ce898","side":"PARENT","line":386,"updated":"2014-05-01 22:00:41.000000000","message":"bah, the gate must be skipping all of these tests. Note that I didn\u0027t switch this from a list.","commit_id":"56e8424ffc7c589b8a736d944fee05627a5f0c12"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        with task_manager.acquire(self.context, [self.node[\u0027uuid\u0027]],"},{"line_number":288,"context_line":"                                  shared\u003dTrue) as task:"},{"line_number":289,"context_line":"            task.driver.power.validate("},{"line_number":290,"context_line":"                        task, self.node)"},{"line_number":291,"context_line":"        self.assertEqual(1, parse_drv_info_mock.call_count)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    @mock.patch.object(seamicro, \u0027_parse_driver_info\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_963727e3","line":290,"updated":"2014-05-01 20:50:12.000000000","message":"maybe merge into one line?","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":335,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":336,"context_line":"            task.driver.power.set_power_state(task,"},{"line_number":337,"context_line":"                                                           self.node,"},{"line_number":338,"context_line":"                                                           states.POWER_ON)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        mock_power_on.assert_called_once_with(self.node)"},{"line_number":341,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_7641c338","line":338,"updated":"2014-05-01 20:50:12.000000000","message":"better alignment of above 2 lines?","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":349,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":350,"context_line":"            self.assertRaises(exception.PowerStateFailure,"},{"line_number":351,"context_line":"                              task"},{"line_number":352,"context_line":"                              .driver.power.set_power_state,"},{"line_number":353,"context_line":"                              task, self.node, states.POWER_ON)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        mock_power_on.assert_called_once_with(self.node)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_167a3788","line":352,"updated":"2014-05-01 20:50:12.000000000","message":"oh. how about merging the above two lines?","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":377,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":378,"context_line":"            self.assertRaises(exception.PowerStateFailure,"},{"line_number":379,"context_line":"                              task"},{"line_number":380,"context_line":"                              .driver.power.set_power_state,"},{"line_number":381,"context_line":"                              task, self.node, states.POWER_OFF)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        mock_power_off.assert_called_once_with(self.node)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_f63793ae","line":380,"updated":"2014-05-01 20:50:12.000000000","message":"merge the above 2 lines?","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"16f993dc3f04de42b59200f027a835e0aaca71f2","unresolved":false,"context_lines":[{"line_number":377,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":378,"context_line":"            self.assertRaises(exception.PowerStateFailure,"},{"line_number":379,"context_line":"                              task"},{"line_number":380,"context_line":"                              .driver.power.set_power_state,"},{"line_number":381,"context_line":"                              task, self.node, states.POWER_OFF)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        mock_power_off.assert_called_once_with(self.node)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_b9589c57","line":380,"in_reply_to":"9ad9bd40_f63793ae","updated":"2014-05-01 22:00:41.000000000","message":"obviously didn\u0027t check these after sed\u0027ing. :)","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"}],"ironic/tests/drivers/test_ssh.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5a99e0935222f2f6f4c021b54c7d2ff718d86c5b","unresolved":false,"context_lines":[{"line_number":770,"context_line":"                                      shared\u003dFalse) as task:"},{"line_number":771,"context_line":"                task.driver.power.set_power_state(task,"},{"line_number":772,"context_line":"                                                               self.node,"},{"line_number":773,"context_line":"                                                               states.POWER_ON)"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"            self.parse_drv_info_mock.assert_called_once_with(self.node)"},{"line_number":776,"context_line":"            self.get_mac_addr_mock.assert_called_once_with(task)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_22cd3a32","line":773,"updated":"2014-05-01 20:50:12.000000000","message":"You might want to realign the above 3 lines.","commit_id":"8e057c7349cb54724ea4a1be886195226c5f5ba1"}]}
