)]}'
{"ironic/conductor/manager.py":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"ee1782b9a7f895e82ec9fd16a9aba597a1a306c3","unresolved":false,"context_lines":[{"line_number":503,"context_line":"                thread \u003d self._spawn_worker(utils.cleanup_after_timeout, task)"},{"line_number":504,"context_line":"                thread.link(lambda t: task.release_resources())"},{"line_number":505,"context_line":"            except exception.NoFreeConductorWorker:"},{"line_number":506,"context_line":"                task.release_resources()"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    def _get_current_driver_rings(self):"},{"line_number":509,"context_line":"        \"\"\"Build the current hash ring for this ConductorManager\u0027s drivers.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FSaY%3D","line":506,"updated":"2014-03-07 01:55:35.000000000","message":"If NoFreeConductorWorker is raised, this should also exit the loop","commit_id":"b6844bb61dcad49a565c55b6335907d6987aee00"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"41f643b48851e6a86d7429fde4f23c3fb8ff06d7","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                        \u0027number of times Ironic should try syncing the \u0027"},{"line_number":106,"context_line":"                        \u0027hardware node power state with the node power state \u0027"},{"line_number":107,"context_line":"                        \u0027in DB\u0027),"},{"line_number":108,"context_line":"        cfg.IntOpt(\u0027periodic_max_workers\u0027,"},{"line_number":109,"context_line":"                   default\u003d8,"},{"line_number":110,"context_line":"                   help\u003d\u0027Maximum count of worker threads which can be started \u0027"},{"line_number":111,"context_line":"                        \u0027simultaneously by periodic task. Should be smaller \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9uro%3D","line":108,"updated":"2014-04-02 15:17:31.000000000","message":"Just want to make sure. If we have future periodic tasks that spawn workers, this option will be used as well, right? it isn\u0027t only for _check_deploy_timeouts?","commit_id":"85c01cfd727501fa0552a7032d69ca30abd4a6d1"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"618c2265d1d28af8d1a3a58bed179dd45427c667","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                        \u0027number of times Ironic should try syncing the \u0027"},{"line_number":106,"context_line":"                        \u0027hardware node power state with the node power state \u0027"},{"line_number":107,"context_line":"                        \u0027in DB\u0027),"},{"line_number":108,"context_line":"        cfg.IntOpt(\u0027periodic_max_workers\u0027,"},{"line_number":109,"context_line":"                   default\u003d8,"},{"line_number":110,"context_line":"                   help\u003d\u0027Maximum count of worker threads which can be started \u0027"},{"line_number":111,"context_line":"                        \u0027simultaneously by periodic task. Should be smaller \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9t%2BE%3D","line":108,"in_reply_to":"AAAAWH%2F9uro%3D","updated":"2014-04-02 16:10:37.000000000","message":"Yes.","commit_id":"85c01cfd727501fa0552a7032d69ca30abd4a6d1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"41f643b48851e6a86d7429fde4f23c3fb8ff06d7","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                   default\u003d8,"},{"line_number":110,"context_line":"                   help\u003d\u0027Maximum count of worker threads which can be started \u0027"},{"line_number":111,"context_line":"                        \u0027simultaneously by periodic task. Should be smaller \u0027"},{"line_number":112,"context_line":"                        \u0027than rpc thread pool size.\u0027),"},{"line_number":113,"context_line":"]"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9unQ%3D","line":112,"updated":"2014-04-02 15:17:31.000000000","message":"Some minor grammatical things:\n- \u0027Maximum count\u0027 -\u003e \u0027Maximum number\u0027\n\u0027which\u0027 -\u003e \u0027that\u0027\n- \u0027by periodic\u0027 -\u003e \u0027by a periodic\u0027\n- \u0027smaller\u0027 -\u003e \u0027less\u0027\n- \u0027rpc\u0027 -\u003e \u0027RPC\u0027","commit_id":"85c01cfd727501fa0552a7032d69ca30abd4a6d1"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"618c2265d1d28af8d1a3a58bed179dd45427c667","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                   default\u003d8,"},{"line_number":110,"context_line":"                   help\u003d\u0027Maximum count of worker threads which can be started \u0027"},{"line_number":111,"context_line":"                        \u0027simultaneously by periodic task. Should be smaller \u0027"},{"line_number":112,"context_line":"                        \u0027than rpc thread pool size.\u0027),"},{"line_number":113,"context_line":"]"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9t8c%3D","line":112,"in_reply_to":"AAAAWH%2F9unQ%3D","updated":"2014-04-02 16:10:37.000000000","message":"Done","commit_id":"85c01cfd727501fa0552a7032d69ca30abd4a6d1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"41f643b48851e6a86d7429fde4f23c3fb8ff06d7","unresolved":false,"context_lines":[{"line_number":607,"context_line":"                task \u003d task_manager.TaskManager(context, node_uuid)"},{"line_number":608,"context_line":"            except (exception.NodeLocked, exception.NodeNotFound):"},{"line_number":609,"context_line":"                continue"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"            node \u003d task.node"},{"line_number":612,"context_line":"            node.provision_state \u003d states.DEPLOYFAIL"},{"line_number":613,"context_line":"            node.target_provision_state \u003d states.NOSTATE"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9uwA%3D","line":610,"updated":"2014-04-02 15:17:31.000000000","message":"If I understand what\u0027s going on, you\u0027ve got a list of nodes, max CONF.conductor.periodic_max_workers. But one or more of the nodes may not pass these two tests (ie, node not on this host or the node is locked). So it is possible that fewer than CONF..max_workers workers will actually be spawned. Would it be better to get all the nodes that satisfy the filter, and stop after CONF..max_workers threads are started (or we run out of threads)?","commit_id":"85c01cfd727501fa0552a7032d69ca30abd4a6d1"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"618c2265d1d28af8d1a3a58bed179dd45427c667","unresolved":false,"context_lines":[{"line_number":607,"context_line":"                task \u003d task_manager.TaskManager(context, node_uuid)"},{"line_number":608,"context_line":"            except (exception.NodeLocked, exception.NodeNotFound):"},{"line_number":609,"context_line":"                continue"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"            node \u003d task.node"},{"line_number":612,"context_line":"            node.provision_state \u003d states.DEPLOYFAIL"},{"line_number":613,"context_line":"            node.target_provision_state \u003d states.NOSTATE"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9t5E%3D","line":610,"in_reply_to":"AAAAWH%2F9uwA%3D","updated":"2014-04-02 16:10:37.000000000","message":"I think this is ok, because number of workers in this case would be less than CONF.conductor.periodic_max_workers.","commit_id":"85c01cfd727501fa0552a7032d69ca30abd4a6d1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"41f643b48851e6a86d7429fde4f23c3fb8ff06d7","unresolved":false,"context_lines":[{"line_number":611,"context_line":"            node \u003d task.node"},{"line_number":612,"context_line":"            node.provision_state \u003d states.DEPLOYFAIL"},{"line_number":613,"context_line":"            node.target_provision_state \u003d states.NOSTATE"},{"line_number":614,"context_line":"            msg \u003d (_(\u0027Timeout reached when waiting callback for node %s\u0027)"},{"line_number":615,"context_line":"                     % node_uuid)"},{"line_number":616,"context_line":"            node.last_error \u003d msg"},{"line_number":617,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9uz4%3D","line":614,"updated":"2014-04-02 15:17:31.000000000","message":"while you\u0027re at it, \u0027when waiting callback\u0027 might be better as \u0027while waiting for callback\u0027","commit_id":"85c01cfd727501fa0552a7032d69ca30abd4a6d1"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"618c2265d1d28af8d1a3a58bed179dd45427c667","unresolved":false,"context_lines":[{"line_number":611,"context_line":"            node \u003d task.node"},{"line_number":612,"context_line":"            node.provision_state \u003d states.DEPLOYFAIL"},{"line_number":613,"context_line":"            node.target_provision_state \u003d states.NOSTATE"},{"line_number":614,"context_line":"            msg \u003d (_(\u0027Timeout reached when waiting callback for node %s\u0027)"},{"line_number":615,"context_line":"                     % node_uuid)"},{"line_number":616,"context_line":"            node.last_error \u003d msg"},{"line_number":617,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9t6w%3D","line":614,"in_reply_to":"AAAAWH%2F9uz4%3D","updated":"2014-04-02 16:10:37.000000000","message":"Done","commit_id":"85c01cfd727501fa0552a7032d69ca30abd4a6d1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"41f643b48851e6a86d7429fde4f23c3fb8ff06d7","unresolved":false,"context_lines":[{"line_number":621,"context_line":"                thread \u003d self._spawn_worker(utils.cleanup_after_timeout, task)"},{"line_number":622,"context_line":"                thread.link(lambda t: task.release_resources())"},{"line_number":623,"context_line":"            except exception.NoFreeConductorWorker:"},{"line_number":624,"context_line":"                task.release_resources()"},{"line_number":625,"context_line":"                break"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"    def _get_current_driver_rings(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9uyM%3D","line":624,"updated":"2014-04-02 15:17:31.000000000","message":"This is an aside -- if we get to here, the node will be DEPLOYFAIL, but we\u0027ll never try to cleanup_after_timeout for this node, right? Is that OK?","commit_id":"85c01cfd727501fa0552a7032d69ca30abd4a6d1"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"618c2265d1d28af8d1a3a58bed179dd45427c667","unresolved":false,"context_lines":[{"line_number":621,"context_line":"                thread \u003d self._spawn_worker(utils.cleanup_after_timeout, task)"},{"line_number":622,"context_line":"                thread.link(lambda t: task.release_resources())"},{"line_number":623,"context_line":"            except exception.NoFreeConductorWorker:"},{"line_number":624,"context_line":"                task.release_resources()"},{"line_number":625,"context_line":"                break"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"    def _get_current_driver_rings(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9t6g%3D","line":624,"in_reply_to":"AAAAWH%2F9uyM%3D","updated":"2014-04-02 16:10:37.000000000","message":"Thanks, fixed.","commit_id":"85c01cfd727501fa0552a7032d69ca30abd4a6d1"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"994da8be01681fedd11a71003e98dbe39232025e","unresolved":false,"context_lines":[{"line_number":606,"context_line":"            try:"},{"line_number":607,"context_line":"                task \u003d task_manager.TaskManager(context, node_uuid)"},{"line_number":608,"context_line":"            except (exception.NodeLocked, exception.NodeNotFound):"},{"line_number":609,"context_line":"                continue"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"            try:"},{"line_number":612,"context_line":"                thread \u003d self._spawn_worker(utils.cleanup_after_timeout, task)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F9qec%3D","line":609,"updated":"2014-04-03 00:16:38.000000000","message":"I think we should consider what Ruby said on the last patchset again. I understand that there will be less nodes than worker threads if not all nodes pass these tests, and that\u0027s okay, but not ideal. If none of the nodes pass the tests, then this run is wasted.","commit_id":"10db4aa79cbe1c0d3e252085598e2d4a5eb6ae92"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"4d9e73af5036e351927bf7d749160bab62b29433","unresolved":false,"context_lines":[{"line_number":606,"context_line":"            try:"},{"line_number":607,"context_line":"                task \u003d task_manager.TaskManager(context, node_uuid)"},{"line_number":608,"context_line":"            except (exception.NodeLocked, exception.NodeNotFound):"},{"line_number":609,"context_line":"                continue"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"            try:"},{"line_number":612,"context_line":"                thread \u003d self._spawn_worker(utils.cleanup_after_timeout, task)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAW3%2F%2FxPI%3D","line":609,"in_reply_to":"AAAAW3%2F%2FxVs%3D","updated":"2014-04-10 14:20:54.000000000","message":"Agree.","commit_id":"10db4aa79cbe1c0d3e252085598e2d4a5eb6ae92"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"734bb308c3e25a88321f35828cd0540b4f9c68e9","unresolved":false,"context_lines":[{"line_number":606,"context_line":"            try:"},{"line_number":607,"context_line":"                task \u003d task_manager.TaskManager(context, node_uuid)"},{"line_number":608,"context_line":"            except (exception.NodeLocked, exception.NodeNotFound):"},{"line_number":609,"context_line":"                continue"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"            try:"},{"line_number":612,"context_line":"                thread \u003d self._spawn_worker(utils.cleanup_after_timeout, task)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAW3%2F%2FxVs%3D","line":609,"in_reply_to":"AAAAWH%2F9qec%3D","updated":"2014-04-10 14:14:01.000000000","message":"I\u0027d prefer that we try to handle as many as possible. I\u0027d be worried about corner cases where eg periodic_max_workers\u003d1 and the first node returned from the db is handled by a different conductor. If, for whatever reason (eg a bug is introduced) the db never returns a \u0027valid\u0027 node, the timeout won\u0027t happen.","commit_id":"10db4aa79cbe1c0d3e252085598e2d4a5eb6ae92"}],"ironic/db/api.py":[{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"51f3d967afc3a52d8f6a34d731555f79e2039b22","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                        \u0027chassis_uuid\u0027: uuid of chassis"},{"line_number":56,"context_line":"                        \u0027driver\u0027: driver\u0027s name"},{"line_number":57,"context_line":"                        \u0027provision_state\u0027: provision state of node"},{"line_number":58,"context_line":"                        \u0027provision_updated\u0027: nodes with provisoin_updated_at"},{"line_number":59,"context_line":"                         field before this interval in seconds"},{"line_number":60,"context_line":"        :param limit: Maximum number of nodes to return."},{"line_number":61,"context_line":"        :param marker: the last item of the previous page; we return the next"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FW%2BM%3D","line":58,"updated":"2014-03-06 16:41:15.000000000","message":"IMO, it\u0027s makes a sense to use another name to avoid confusion (I supposed, that this parameter should be date, when I see this in a first time).","commit_id":"b6844bb61dcad49a565c55b6335907d6987aee00"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"d863cbc3400edf6c33f1ed300c94e6f7b2d5eb6e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                        \u0027chassis_uuid\u0027: uuid of chassis"},{"line_number":62,"context_line":"                        \u0027driver\u0027: driver\u0027s name"},{"line_number":63,"context_line":"                        \u0027provision_state\u0027: provision state of node"},{"line_number":64,"context_line":"                        \u0027old_provision\u0027: nodes with provisoin_updated_at"},{"line_number":65,"context_line":"                         field before this interval in seconds"},{"line_number":66,"context_line":"        :param limit: Maximum number of nodes to return."},{"line_number":67,"context_line":"        :param marker: the last item of the previous page; we return the next"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2Bcxg%3D","line":64,"updated":"2014-03-26 17:44:43.000000000","message":"Mind fixing this typo? s/provisoin/provision","commit_id":"46c7620619f4d906afcb4592ae73d7ad9b14fbd1"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"eb6d2b7283ca357cf1c0dcbb0e63bc3826263c7f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                        \u0027chassis_uuid\u0027: uuid of chassis"},{"line_number":62,"context_line":"                        \u0027driver\u0027: driver\u0027s name"},{"line_number":63,"context_line":"                        \u0027provision_state\u0027: provision state of node"},{"line_number":64,"context_line":"                        \u0027old_provision\u0027: nodes with provisoin_updated_at"},{"line_number":65,"context_line":"                         field before this interval in seconds"},{"line_number":66,"context_line":"        :param limit: Maximum number of nodes to return."},{"line_number":67,"context_line":"        :param marker: the last item of the previous page; we return the next"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2BCno%3D","line":64,"in_reply_to":"AAAAWH%2F%2Bcxg%3D","updated":"2014-03-31 11:17:18.000000000","message":"Done, thanks","commit_id":"46c7620619f4d906afcb4592ae73d7ad9b14fbd1"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"d863cbc3400edf6c33f1ed300c94e6f7b2d5eb6e","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                        \u0027chassis_uuid\u0027: uuid of chassis"},{"line_number":85,"context_line":"                        \u0027driver\u0027: driver\u0027s name"},{"line_number":86,"context_line":"                        \u0027provision_state\u0027: provision state of node"},{"line_number":87,"context_line":"                        \u0027old_provision\u0027: nodes with provisoin_updated_at"},{"line_number":88,"context_line":"                         field before this interval in seconds"},{"line_number":89,"context_line":"        :param limit: Maximum number of nodes to return."},{"line_number":90,"context_line":"        :param marker: the last item of the previous page; we return the next"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2Bcxc%3D","line":87,"updated":"2014-03-26 17:44:43.000000000","message":"same typo here","commit_id":"46c7620619f4d906afcb4592ae73d7ad9b14fbd1"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"eb6d2b7283ca357cf1c0dcbb0e63bc3826263c7f","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                        \u0027chassis_uuid\u0027: uuid of chassis"},{"line_number":85,"context_line":"                        \u0027driver\u0027: driver\u0027s name"},{"line_number":86,"context_line":"                        \u0027provision_state\u0027: provision state of node"},{"line_number":87,"context_line":"                        \u0027old_provision\u0027: nodes with provisoin_updated_at"},{"line_number":88,"context_line":"                         field before this interval in seconds"},{"line_number":89,"context_line":"        :param limit: Maximum number of nodes to return."},{"line_number":90,"context_line":"        :param marker: the last item of the previous page; we return the next"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2BCnk%3D","line":87,"in_reply_to":"AAAAWH%2F%2Bcxc%3D","updated":"2014-03-31 11:17:18.000000000","message":"Done","commit_id":"46c7620619f4d906afcb4592ae73d7ad9b14fbd1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"41f643b48851e6a86d7429fde4f23c3fb8ff06d7","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                        \u0027chassis_uuid\u0027: uuid of chassis"},{"line_number":62,"context_line":"                        \u0027driver\u0027: driver\u0027s name"},{"line_number":63,"context_line":"                        \u0027provision_state\u0027: provision state of node"},{"line_number":64,"context_line":"                        \u0027old_provision\u0027: nodes with provision_updated_at"},{"line_number":65,"context_line":"                         field before this interval in seconds"},{"line_number":66,"context_line":"        :param limit: Maximum number of nodes to return."},{"line_number":67,"context_line":"        :param marker: the last item of the previous page; we return the next"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9udQ%3D","line":64,"updated":"2014-04-02 15:17:31.000000000","message":"how about \u0027provisioned_before\u0027 instead of \u0027old_provision\u0027?","commit_id":"85c01cfd727501fa0552a7032d69ca30abd4a6d1"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"618c2265d1d28af8d1a3a58bed179dd45427c667","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                        \u0027chassis_uuid\u0027: uuid of chassis"},{"line_number":62,"context_line":"                        \u0027driver\u0027: driver\u0027s name"},{"line_number":63,"context_line":"                        \u0027provision_state\u0027: provision state of node"},{"line_number":64,"context_line":"                        \u0027old_provision\u0027: nodes with provision_updated_at"},{"line_number":65,"context_line":"                         field before this interval in seconds"},{"line_number":66,"context_line":"        :param limit: Maximum number of nodes to return."},{"line_number":67,"context_line":"        :param marker: the last item of the previous page; we return the next"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9tug%3D","line":64,"in_reply_to":"AAAAWH%2F9udQ%3D","updated":"2014-04-02 16:10:37.000000000","message":"Done","commit_id":"85c01cfd727501fa0552a7032d69ca30abd4a6d1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"41f643b48851e6a86d7429fde4f23c3fb8ff06d7","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                        \u0027chassis_uuid\u0027: uuid of chassis"},{"line_number":85,"context_line":"                        \u0027driver\u0027: driver\u0027s name"},{"line_number":86,"context_line":"                        \u0027provision_state\u0027: provision state of node"},{"line_number":87,"context_line":"                        \u0027old_provision\u0027: nodes with provision_updated_at"},{"line_number":88,"context_line":"                         field before this interval in seconds"},{"line_number":89,"context_line":"        :param limit: Maximum number of nodes to return."},{"line_number":90,"context_line":"        :param marker: the last item of the previous page; we return the next"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9udA%3D","line":87,"updated":"2014-04-02 15:17:31.000000000","message":"ditto","commit_id":"85c01cfd727501fa0552a7032d69ca30abd4a6d1"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"618c2265d1d28af8d1a3a58bed179dd45427c667","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                        \u0027chassis_uuid\u0027: uuid of chassis"},{"line_number":85,"context_line":"                        \u0027driver\u0027: driver\u0027s name"},{"line_number":86,"context_line":"                        \u0027provision_state\u0027: provision state of node"},{"line_number":87,"context_line":"                        \u0027old_provision\u0027: nodes with provision_updated_at"},{"line_number":88,"context_line":"                         field before this interval in seconds"},{"line_number":89,"context_line":"        :param limit: Maximum number of nodes to return."},{"line_number":90,"context_line":"        :param marker: the last item of the previous page; we return the next"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9tuc%3D","line":87,"in_reply_to":"AAAAWH%2F9udA%3D","updated":"2014-04-02 16:10:37.000000000","message":"Done","commit_id":"85c01cfd727501fa0552a7032d69ca30abd4a6d1"}]}
