)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0442886be18f11727cdd26f7ffdde7a4e951cb3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Nisha Agarwal \u003cagarwalnisha1980@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-03-02 22:35:45 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"follow-up patch for generic node inspection"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements the nit comments given in"},{"line_number":10,"context_line":"https://review.openstack.org/#/c/149823"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba7be1f8_c47b44bc","line":7,"updated":"2015-03-03 07:41:58.000000000","message":"s/follow/Follow","commit_id":"8dd4fd8adb27ad1e56436669af00d01c93f07c25"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"7078a686b43c460d8607e05863cfc6863f76e53d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Nisha Agarwal \u003cagarwalnisha1980@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-03-02 22:35:45 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"follow-up patch for generic node inspection"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements the nit comments given in"},{"line_number":10,"context_line":"https://review.openstack.org/#/c/149823"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba7be1f8_27d7bf4c","line":7,"in_reply_to":"ba7be1f8_c47b44bc","updated":"2015-03-03 09:09:24.000000000","message":"ok","commit_id":"8dd4fd8adb27ad1e56436669af00d01c93f07c25"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0442886be18f11727cdd26f7ffdde7a4e951cb3","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint ironic-node-properties-discovery"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Id6d60f460100f321624bb7d59d4e7856224fd22b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba7be1f8_44475477","line":14,"updated":"2015-03-03 07:41:58.000000000","message":"Is this required ?","commit_id":"8dd4fd8adb27ad1e56436669af00d01c93f07c25"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b6d7342fd836e2cb85d12fffb0291dc700baae81","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint ironic-node-properties-discovery"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Id6d60f460100f321624bb7d59d4e7856224fd22b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba7be1f8_b4ad9beb","line":14,"in_reply_to":"ba7be1f8_44475477","updated":"2015-03-03 08:47:31.000000000","message":"I think not for this patch","commit_id":"8dd4fd8adb27ad1e56436669af00d01c93f07c25"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"7078a686b43c460d8607e05863cfc6863f76e53d","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint ironic-node-properties-discovery"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Id6d60f460100f321624bb7d59d4e7856224fd22b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba7be1f8_c7e4233e","line":14,"in_reply_to":"ba7be1f8_9496d74a","updated":"2015-03-03 09:09:24.000000000","message":"ok will remove","commit_id":"8dd4fd8adb27ad1e56436669af00d01c93f07c25"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"49b702aee35be04c98231008667a83e5a5d0e834","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint ironic-node-properties-discovery"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Id6d60f460100f321624bb7d59d4e7856224fd22b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba7be1f8_9496d74a","line":14,"in_reply_to":"ba7be1f8_b4ad9beb","updated":"2015-03-03 08:51:24.000000000","message":"Yeah, may be this can be removed.","commit_id":"8dd4fd8adb27ad1e56436669af00d01c93f07c25"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"470133819f9ce6ffac02030d280166e1268d9d88","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Follow-up patch for generic node inspection"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements the nit comments given in"},{"line_number":10,"context_line":"https://review.openstack.org/#/c/149823"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint ironic-node-properties-discovery"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba7be1f8_960a5724","line":10,"updated":"2015-03-03 11:09:08.000000000","message":"I guess normal way is to provide the git commit id or gerrit change-id here (instead of review link).  That helps people to find the parent commit from git log itself I guess.","commit_id":"cbdace1e9072daaf633abcf6f6610640c46591ba"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"61ab333b5417b95b2c5ec7a9ce80bf5906b58971","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Follow-up patch for generic node inspection"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements the nit comments which were not addressed"},{"line_number":10,"context_line":"as part of commit id f20368144185abc56129a6b7eb856b3a0455af70"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint ironic-node-properties-discovery"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba7be1f8_cf6a63ec","line":10,"updated":"2015-03-03 17:36:07.000000000","message":"That doesn\u0027t work (if you eg try to click on it). It should be the change-id of the patch: 6ecee36865a5ee49c162b20734aec5d4a146f9af","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ff37d1599ea2adb94ed0a1f195ec97e71e551355","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Follow-up patch for generic node inspection"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements the nit comments which were not addressed"},{"line_number":10,"context_line":"as part of commit id f20368144185abc56129a6b7eb856b3a0455af70"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint ironic-node-properties-discovery"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba7be1f8_f1fc4fb7","line":10,"in_reply_to":"ba7be1f8_cf6a63ec","updated":"2015-03-04 03:56:07.000000000","message":"ok","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"}],"ironic/conductor/manager.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b6d7342fd836e2cb85d12fffb0291dc700baae81","unresolved":false,"context_lines":[{"line_number":1475,"context_line":"    def _check_for_state(self, context, filters, provision_state,"},{"line_number":1476,"context_line":"                         sort_key, callback_method\u003dNone,"},{"line_number":1477,"context_line":"                         err_handler\u003dNone, last_error\u003dNone):"},{"line_number":1478,"context_line":"        \"\"\"Retrieve the list of nodes satisfying the criteria \u0027filters\u0027."},{"line_number":1479,"context_line":""},{"line_number":1480,"context_line":"        :param: context: request context"},{"line_number":1481,"context_line":"        :param: filters: criteria (as a dictionary) to get the desired"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_9473377f","line":1478,"updated":"2015-03-03 08:47:31.000000000","message":"This function does not only \"retrieves\" things","commit_id":"8dd4fd8adb27ad1e56436669af00d01c93f07c25"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"7078a686b43c460d8607e05863cfc6863f76e53d","unresolved":false,"context_lines":[{"line_number":1475,"context_line":"    def _check_for_state(self, context, filters, provision_state,"},{"line_number":1476,"context_line":"                         sort_key, callback_method\u003dNone,"},{"line_number":1477,"context_line":"                         err_handler\u003dNone, last_error\u003dNone):"},{"line_number":1478,"context_line":"        \"\"\"Retrieve the list of nodes satisfying the criteria \u0027filters\u0027."},{"line_number":1479,"context_line":""},{"line_number":1480,"context_line":"        :param: context: request context"},{"line_number":1481,"context_line":"        :param: filters: criteria (as a dictionary) to get the desired"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_a7ad6feb","line":1478,"in_reply_to":"ba7be1f8_9473377f","updated":"2015-03-03 09:09:24.000000000","message":"ok will add more description to it.","commit_id":"8dd4fd8adb27ad1e56436669af00d01c93f07c25"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b6d7342fd836e2cb85d12fffb0291dc700baae81","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"                    else:"},{"line_number":1521,"context_line":"                        if not last_error:"},{"line_number":1522,"context_line":"                            last_error \u003d _(\"Could not retrieve nodes \""},{"line_number":1523,"context_line":"                                           \"satisfying filter criteria.\")"},{"line_number":1524,"context_line":"                        task.node.last_error \u003d last_error"},{"line_number":1525,"context_line":"                        task.process_event(\u0027fail\u0027)"},{"line_number":1526,"context_line":"            except exception.NoFreeConductorWorker:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_7412430a","line":1523,"updated":"2015-03-03 08:47:31.000000000","message":"why is this changed at all? the old version was correct, this one is not. Imagine deploy failed with message \"Could not retrieve nodes satisfying filter criteria.\", what would you understand?","commit_id":"8dd4fd8adb27ad1e56436669af00d01c93f07c25"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"552e38cc7e3a9f795c0df729839d110978f19e67","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"                    else:"},{"line_number":1521,"context_line":"                        if not last_error:"},{"line_number":1522,"context_line":"                            last_error \u003d _(\"Could not retrieve nodes \""},{"line_number":1523,"context_line":"                                           \"satisfying filter criteria.\")"},{"line_number":1524,"context_line":"                        task.node.last_error \u003d last_error"},{"line_number":1525,"context_line":"                        task.process_event(\u0027fail\u0027)"},{"line_number":1526,"context_line":"            except exception.NoFreeConductorWorker:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_4a33da61","line":1523,"in_reply_to":"ba7be1f8_479d9309","updated":"2015-03-03 09:42:55.000000000","message":"but in deploy case the last_error will be set by the callback_method. so last_error is required only when callback_method is not provided","commit_id":"8dd4fd8adb27ad1e56436669af00d01c93f07c25"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"94d072297377daaf70c3cdeaca4acaa8922766c9","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"                    else:"},{"line_number":1521,"context_line":"                        if not last_error:"},{"line_number":1522,"context_line":"                            last_error \u003d _(\"Could not retrieve nodes \""},{"line_number":1523,"context_line":"                                           \"satisfying filter criteria.\")"},{"line_number":1524,"context_line":"                        task.node.last_error \u003d last_error"},{"line_number":1525,"context_line":"                        task.process_event(\u0027fail\u0027)"},{"line_number":1526,"context_line":"            except exception.NoFreeConductorWorker:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_479d9309","line":1523,"in_reply_to":"ba7be1f8_5410df58","updated":"2015-03-03 09:22:13.000000000","message":"then last_error should be mandatory argument, this default makes no sense","commit_id":"8dd4fd8adb27ad1e56436669af00d01c93f07c25"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"49b702aee35be04c98231008667a83e5a5d0e834","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"                    else:"},{"line_number":1521,"context_line":"                        if not last_error:"},{"line_number":1522,"context_line":"                            last_error \u003d _(\"Could not retrieve nodes \""},{"line_number":1523,"context_line":"                                           \"satisfying filter criteria.\")"},{"line_number":1524,"context_line":"                        task.node.last_error \u003d last_error"},{"line_number":1525,"context_line":"                        task.process_event(\u0027fail\u0027)"},{"line_number":1526,"context_line":"            except exception.NoFreeConductorWorker:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_7485e305","line":1523,"in_reply_to":"ba7be1f8_7412430a","updated":"2015-03-03 08:51:24.000000000","message":"+1","commit_id":"8dd4fd8adb27ad1e56436669af00d01c93f07c25"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"7078a686b43c460d8607e05863cfc6863f76e53d","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"                    else:"},{"line_number":1521,"context_line":"                        if not last_error:"},{"line_number":1522,"context_line":"                            last_error \u003d _(\"Could not retrieve nodes \""},{"line_number":1523,"context_line":"                                           \"satisfying filter criteria.\")"},{"line_number":1524,"context_line":"                        task.node.last_error \u003d last_error"},{"line_number":1525,"context_line":"                        task.process_event(\u0027fail\u0027)"},{"line_number":1526,"context_line":"            except exception.NoFreeConductorWorker:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_5410df58","line":1523,"in_reply_to":"ba7be1f8_7412430a","updated":"2015-03-03 09:09:24.000000000","message":"This is a common function. This part of code will not be reached by deploy. for inspection we pass the last_error message as argument. Since this is a common function , the message has been made generic without using timeout. The function was requested to be made generic and common by Ruby.","commit_id":"8dd4fd8adb27ad1e56436669af00d01c93f07c25"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0442886be18f11727cdd26f7ffdde7a4e951cb3","unresolved":false,"context_lines":[{"line_number":1809,"context_line":""},{"line_number":1810,"context_line":"    :param: task: a TaskManager instance with an exclusive lock."},{"line_number":1811,"context_line":"    :raises: HardwareInspectionFailure if driver doesn\u0027t"},{"line_number":1812,"context_line":"             returns the state as states.MANAGEABLE or"},{"line_number":1813,"context_line":"             states.INSPECTING."},{"line_number":1814,"context_line":""},{"line_number":1815,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_84aeac2c","line":1812,"updated":"2015-03-03 07:41:58.000000000","message":"nit: s/returns/return","commit_id":"8dd4fd8adb27ad1e56436669af00d01c93f07c25"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"7078a686b43c460d8607e05863cfc6863f76e53d","unresolved":false,"context_lines":[{"line_number":1809,"context_line":""},{"line_number":1810,"context_line":"    :param: task: a TaskManager instance with an exclusive lock."},{"line_number":1811,"context_line":"    :raises: HardwareInspectionFailure if driver doesn\u0027t"},{"line_number":1812,"context_line":"             returns the state as states.MANAGEABLE or"},{"line_number":1813,"context_line":"             states.INSPECTING."},{"line_number":1814,"context_line":""},{"line_number":1815,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_477af377","line":1812,"in_reply_to":"ba7be1f8_84aeac2c","updated":"2015-03-03 09:09:24.000000000","message":"ok","commit_id":"8dd4fd8adb27ad1e56436669af00d01c93f07c25"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"cc7dbf8e823b25f4d62b4696548fa34cb6969b6c","unresolved":false,"context_lines":[{"line_number":929,"context_line":"        callback_method \u003d utils.cleanup_after_timeout"},{"line_number":930,"context_line":"        err_handler \u003d provisioning_error_handler"},{"line_number":931,"context_line":"        self._check_for_state(context, filters, states.DEPLOYWAIT,"},{"line_number":932,"context_line":"                              sort_key, callback_method, err_handler)"},{"line_number":933,"context_line":""},{"line_number":934,"context_line":"    def _do_takeover(self, task):"},{"line_number":935,"context_line":"        LOG.debug((\u0027Conductor %(cdr)s taking over node %(node)s\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_1bc13254","line":932,"updated":"2015-03-03 10:42:53.000000000","message":"need to pass last_error here.","commit_id":"cbdace1e9072daaf633abcf6f6610640c46591ba"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"92ff3b0195c17f6d7383a8f42e1ed6a81daac1fd","unresolved":false,"context_lines":[{"line_number":929,"context_line":"        callback_method \u003d utils.cleanup_after_timeout"},{"line_number":930,"context_line":"        err_handler \u003d provisioning_error_handler"},{"line_number":931,"context_line":"        self._check_for_state(context, filters, states.DEPLOYWAIT,"},{"line_number":932,"context_line":"                              sort_key, callback_method, err_handler)"},{"line_number":933,"context_line":""},{"line_number":934,"context_line":"    def _do_takeover(self, task):"},{"line_number":935,"context_line":"        LOG.debug((\u0027Conductor %(cdr)s taking over node %(node)s\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_d67befbb","line":932,"in_reply_to":"ba7be1f8_1bc13254","updated":"2015-03-03 11:08:01.000000000","message":"after discussion from irc, agree that we have callback for deploy and hence we won\u0027t need last_error.  please ignore this comment.","commit_id":"cbdace1e9072daaf633abcf6f6610640c46591ba"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"cc7dbf8e823b25f4d62b4696548fa34cb6969b6c","unresolved":false,"context_lines":[{"line_number":1468,"context_line":"                   \u0027provision_state\u0027: states.INSPECTING,"},{"line_number":1469,"context_line":"                   \u0027inspection_started_before\u0027: callback_timeout}"},{"line_number":1470,"context_line":"        sort_key \u003d \u0027inspection_started_at\u0027"},{"line_number":1471,"context_line":"        last_error \u003d _(\"timeout reached while waiting for callback\")"},{"line_number":1472,"context_line":"        self._check_for_state(context, filters, states.INSPECTING,"},{"line_number":1473,"context_line":"                              sort_key, last_error\u003dlast_error)"},{"line_number":1474,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_9ba1a296","line":1471,"updated":"2015-03-03 10:42:53.000000000","message":"a more generic message might make sense here because it is applicable for both inband and out-of-band\n\n  last_error \u003d _(\"timeout while inspecting the node\")","commit_id":"cbdace1e9072daaf633abcf6f6610640c46591ba"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"cc7dbf8e823b25f4d62b4696548fa34cb6969b6c","unresolved":false,"context_lines":[{"line_number":1474,"context_line":""},{"line_number":1475,"context_line":"    def _check_for_state(self, context, filters, provision_state,"},{"line_number":1476,"context_line":"                         sort_key, callback_method\u003dNone,"},{"line_number":1477,"context_line":"                         err_handler\u003dNone, last_error\u003dNone):"},{"line_number":1478,"context_line":"        \"\"\"Retrieve the list of nodes satisfying the criteria \u0027filters\u0027"},{"line_number":1479,"context_line":"        and process the event \u0027fail\u0027 when failed to retrieve the satisfying"},{"line_number":1480,"context_line":"        nodes."}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_fb89be26","line":1477,"updated":"2015-03-03 10:42:53.000000000","message":"if we are always passing last_error, don\u0027t put any default value.","commit_id":"cbdace1e9072daaf633abcf6f6610640c46591ba"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"92ff3b0195c17f6d7383a8f42e1ed6a81daac1fd","unresolved":false,"context_lines":[{"line_number":1474,"context_line":""},{"line_number":1475,"context_line":"    def _check_for_state(self, context, filters, provision_state,"},{"line_number":1476,"context_line":"                         sort_key, callback_method\u003dNone,"},{"line_number":1477,"context_line":"                         err_handler\u003dNone, last_error\u003dNone):"},{"line_number":1478,"context_line":"        \"\"\"Retrieve the list of nodes satisfying the criteria \u0027filters\u0027"},{"line_number":1479,"context_line":"        and process the event \u0027fail\u0027 when failed to retrieve the satisfying"},{"line_number":1480,"context_line":"        nodes."}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_16510736","line":1477,"in_reply_to":"ba7be1f8_fb89be26","updated":"2015-03-03 11:08:01.000000000","message":"ditto ignore this comment.","commit_id":"cbdace1e9072daaf633abcf6f6610640c46591ba"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"75ef0e5b8c3c76904ff0f5780dda91fcb1a240bd","unresolved":false,"context_lines":[{"line_number":1478,"context_line":"        \"\"\"Retrieves the list of nodes and process event \u0027fail\u0027."},{"line_number":1479,"context_line":""},{"line_number":1480,"context_line":"        Retrieve the list of nodes satisfying the criteria \u0027filters\u0027"},{"line_number":1481,"context_line":"        and process the event \u0027fail\u0027 when failed to retrieve the satisfying"},{"line_number":1482,"context_line":"        nodes."},{"line_number":1483,"context_line":""},{"line_number":1484,"context_line":"        :param: context: request context"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_a92299a0","line":1481,"updated":"2015-03-03 14:01:00.000000000","message":"s/when failed to retrieve the satisfying nodes//","commit_id":"74eb6dd876e6ec038f49463a3db576d10629595b"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"61ab333b5417b95b2c5ec7a9ce80bf5906b58971","unresolved":false,"context_lines":[{"line_number":1422,"context_line":"        :raises: HardwareInspectionFailure when unable to get"},{"line_number":1423,"context_line":"                 essential scheduling properties from hardware."},{"line_number":1424,"context_line":"        :raises: InvalidStateRequested if \u0027inspect\u0027 event fails"},{"line_number":1425,"context_line":"                 and raises InvalidState exception."},{"line_number":1426,"context_line":""},{"line_number":1427,"context_line":"        \"\"\""},{"line_number":1428,"context_line":"        LOG.debug(\u0027RPC inspect_hardware called for node %s\u0027, node_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_5ad54fe3","line":1425,"updated":"2015-03-03 17:36:07.000000000","message":"hmm. how about \"if \u0027inspect\u0027 is not a valid action to do in the current state.\"","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ff37d1599ea2adb94ed0a1f195ec97e71e551355","unresolved":false,"context_lines":[{"line_number":1422,"context_line":"        :raises: HardwareInspectionFailure when unable to get"},{"line_number":1423,"context_line":"                 essential scheduling properties from hardware."},{"line_number":1424,"context_line":"        :raises: InvalidStateRequested if \u0027inspect\u0027 event fails"},{"line_number":1425,"context_line":"                 and raises InvalidState exception."},{"line_number":1426,"context_line":""},{"line_number":1427,"context_line":"        \"\"\""},{"line_number":1428,"context_line":"        LOG.debug(\u0027RPC inspect_hardware called for node %s\u0027, node_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_11d3a360","line":1425,"in_reply_to":"ba7be1f8_5ad54fe3","updated":"2015-03-04 03:56:07.000000000","message":"ok","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"61ab333b5417b95b2c5ec7a9ce80bf5906b58971","unresolved":false,"context_lines":[{"line_number":1472,"context_line":"        self._check_for_state(context, filters, states.INSPECTING,"},{"line_number":1473,"context_line":"                              sort_key, last_error\u003dlast_error)"},{"line_number":1474,"context_line":""},{"line_number":1475,"context_line":"    def _check_for_state(self, context, filters, provision_state,"},{"line_number":1476,"context_line":"                         sort_key, callback_method\u003dNone,"},{"line_number":1477,"context_line":"                         err_handler\u003dNone, last_error\u003dNone):"},{"line_number":1478,"context_line":"        \"\"\"Retrieves the list of nodes and process event \u0027fail\u0027."}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_ba41eb64","line":1475,"updated":"2015-03-03 17:36:07.000000000","message":"I can\u0027t recall now, did I suggest renaming this \u0027fail_if_in_state()\u0027? I leave it up to you and others to decide ;)","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ff37d1599ea2adb94ed0a1f195ec97e71e551355","unresolved":false,"context_lines":[{"line_number":1472,"context_line":"        self._check_for_state(context, filters, states.INSPECTING,"},{"line_number":1473,"context_line":"                              sort_key, last_error\u003dlast_error)"},{"line_number":1474,"context_line":""},{"line_number":1475,"context_line":"    def _check_for_state(self, context, filters, provision_state,"},{"line_number":1476,"context_line":"                         sort_key, callback_method\u003dNone,"},{"line_number":1477,"context_line":"                         err_handler\u003dNone, last_error\u003dNone):"},{"line_number":1478,"context_line":"        \"\"\"Retrieves the list of nodes and process event \u0027fail\u0027."}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_51c99baa","line":1475,"in_reply_to":"ba7be1f8_ba41eb64","updated":"2015-03-04 03:56:07.000000000","message":"ok. will rename.","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"61ab333b5417b95b2c5ec7a9ce80bf5906b58971","unresolved":false,"context_lines":[{"line_number":1478,"context_line":"        \"\"\"Retrieves the list of nodes and process event \u0027fail\u0027."},{"line_number":1479,"context_line":""},{"line_number":1480,"context_line":"        Retrieve the list of nodes satisfying the criteria \u0027filters\u0027"},{"line_number":1481,"context_line":"        and process the event \u0027fail\u0027."},{"line_number":1482,"context_line":""},{"line_number":1483,"context_line":"        :param: context: request context"},{"line_number":1484,"context_line":"        :param: filters: criteria (as a dictionary) to get the desired"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_3a909bec","line":1481,"updated":"2015-03-03 17:36:07.000000000","message":"How about:\n\nFail nodes that are in specified state.\n\nRetrieves nodes that satisfy the criteria in \u0027filters\u0027. If any of these nodes is in \u0027provision_state\u0027, it has failed in whatever provisioning activity it was currently doing. That failure is processed here.","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ff37d1599ea2adb94ed0a1f195ec97e71e551355","unresolved":false,"context_lines":[{"line_number":1478,"context_line":"        \"\"\"Retrieves the list of nodes and process event \u0027fail\u0027."},{"line_number":1479,"context_line":""},{"line_number":1480,"context_line":"        Retrieve the list of nodes satisfying the criteria \u0027filters\u0027"},{"line_number":1481,"context_line":"        and process the event \u0027fail\u0027."},{"line_number":1482,"context_line":""},{"line_number":1483,"context_line":"        :param: context: request context"},{"line_number":1484,"context_line":"        :param: filters: criteria (as a dictionary) to get the desired"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_d1bcab08","line":1481,"in_reply_to":"ba7be1f8_3a909bec","updated":"2015-03-04 03:56:07.000000000","message":"ok","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"61ab333b5417b95b2c5ec7a9ce80bf5906b58971","unresolved":false,"context_lines":[{"line_number":1493,"context_line":"                                 spawned thread, for a failed node. This"},{"line_number":1494,"context_line":"                                 method must take a :class:`TaskManager` as"},{"line_number":1495,"context_line":"                                 the first (and only required) parameter."},{"line_number":1496,"context_line":"        :param: err_handler: the error handler to be invoked if an error."},{"line_number":1497,"context_line":"                             occurs trying to spawn a thread for a failed node."},{"line_number":1498,"context_line":"        :param: last_error: the error message to be updated in node.last_error"},{"line_number":1499,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_da285f35","line":1496,"updated":"2015-03-03 17:36:07.000000000","message":"No period at the end here, otherwise it changes the meaning of this.\n\nHow about \u0027for a failed node, the error handler to invoke if an error occurs trying to spawn an thread to do the callback_method.\u0027","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ff37d1599ea2adb94ed0a1f195ec97e71e551355","unresolved":false,"context_lines":[{"line_number":1493,"context_line":"                                 spawned thread, for a failed node. This"},{"line_number":1494,"context_line":"                                 method must take a :class:`TaskManager` as"},{"line_number":1495,"context_line":"                                 the first (and only required) parameter."},{"line_number":1496,"context_line":"        :param: err_handler: the error handler to be invoked if an error."},{"line_number":1497,"context_line":"                             occurs trying to spawn a thread for a failed node."},{"line_number":1498,"context_line":"        :param: last_error: the error message to be updated in node.last_error"},{"line_number":1499,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_b148172e","line":1496,"in_reply_to":"ba7be1f8_da285f35","updated":"2015-03-04 03:56:07.000000000","message":"yeah. will remove period and will add comment as suggested","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"61ab333b5417b95b2c5ec7a9ce80bf5906b58971","unresolved":false,"context_lines":[{"line_number":1807,"context_line":"def _do_inspect_hardware(task):"},{"line_number":1808,"context_line":"    \"\"\"Initiates inspection."},{"line_number":1809,"context_line":""},{"line_number":1810,"context_line":"    :param: task: a TaskManager instance with an exclusive lock."},{"line_number":1811,"context_line":"    :raises: HardwareInspectionFailure if driver doesn\u0027t"},{"line_number":1812,"context_line":"             return the state as states.MANAGEABLE or"},{"line_number":1813,"context_line":"             states.INSPECTING."}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_3a2c1bac","line":1810,"updated":"2015-03-03 17:36:07.000000000","message":"s/lock./lock on its node./","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ff37d1599ea2adb94ed0a1f195ec97e71e551355","unresolved":false,"context_lines":[{"line_number":1807,"context_line":"def _do_inspect_hardware(task):"},{"line_number":1808,"context_line":"    \"\"\"Initiates inspection."},{"line_number":1809,"context_line":""},{"line_number":1810,"context_line":"    :param: task: a TaskManager instance with an exclusive lock."},{"line_number":1811,"context_line":"    :raises: HardwareInspectionFailure if driver doesn\u0027t"},{"line_number":1812,"context_line":"             return the state as states.MANAGEABLE or"},{"line_number":1813,"context_line":"             states.INSPECTING."}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_1161e3a8","line":1810,"in_reply_to":"ba7be1f8_3a2c1bac","updated":"2015-03-04 03:56:07.000000000","message":"ok","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e30639f0162e1b21aa880eeae71d906fe8febfc8","unresolved":false,"context_lines":[{"line_number":1496,"context_line":"                                 method must take a :class:`TaskManager` as"},{"line_number":1497,"context_line":"                                 the first (and only required) parameter."},{"line_number":1498,"context_line":"        :param: err_handler: for a failed node, the error handler to invoke"},{"line_number":1499,"context_line":"                             if an error occurs trying to spawn an thread"},{"line_number":1500,"context_line":"                             to do the callback_method."},{"line_number":1501,"context_line":"        :param: last_error: the error message to be updated in node.last_error"},{"line_number":1502,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_e8ca5d6d","line":1499,"updated":"2015-03-04 15:25:36.000000000","message":"nit: s/an/a/","commit_id":"37a655674e750446f383bc0837fd44b690ba64a4"}],"ironic/conductor/rpcapi.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"61ab333b5417b95b2c5ec7a9ce80bf5906b58971","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        :raises: UnsupportedDriverExtension if the node\u0027s driver doesn\u0027t"},{"line_number":499,"context_line":"                 support inspection."},{"line_number":500,"context_line":"        :raises: InvalidStateRequested if the event \u0027inspect\u0027 fails and"},{"line_number":501,"context_line":"                 raises InvalidState exception."},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"        \"\"\""},{"line_number":504,"context_line":"        cctxt \u003d self.client.prepare(topic\u003dtopic or self.topic, version\u003d\u00271.24\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_f53a94cb","line":501,"updated":"2015-03-03 17:36:07.000000000","message":"how about \"if \u0027inspect\u0027 is not a valid action to do in the current state.\"","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ff37d1599ea2adb94ed0a1f195ec97e71e551355","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        :raises: UnsupportedDriverExtension if the node\u0027s driver doesn\u0027t"},{"line_number":499,"context_line":"                 support inspection."},{"line_number":500,"context_line":"        :raises: InvalidStateRequested if the event \u0027inspect\u0027 fails and"},{"line_number":501,"context_line":"                 raises InvalidState exception."},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"        \"\"\""},{"line_number":504,"context_line":"        cctxt \u003d self.client.prepare(topic\u003dtopic or self.topic, version\u003d\u00271.24\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_b16f3791","line":501,"in_reply_to":"ba7be1f8_f53a94cb","updated":"2015-03-04 03:56:07.000000000","message":"yeah will change","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"}],"ironic/db/sqlalchemy/api.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"61ab333b5417b95b2c5ec7a9ce80bf5906b58971","unresolved":false,"context_lines":[{"line_number":380,"context_line":"                    values[\u0027inspection_started_at\u0027] \u003d timeutils.utcnow()"},{"line_number":381,"context_line":"                    values[\u0027inspection_finished_at\u0027] \u003d None"},{"line_number":382,"context_line":"                elif (ref.provision_state \u003d\u003d states.INSPECTING and"},{"line_number":383,"context_line":"                      values.get(\u0027provision_state\u0027) \u003d\u003d states.MANAGEABLE):"},{"line_number":384,"context_line":"                    values[\u0027inspection_finished_at\u0027] \u003d timeutils.utcnow()"},{"line_number":385,"context_line":"                    values[\u0027inspection_started_at\u0027] \u003d None"},{"line_number":386,"context_line":"                elif (ref.provision_state \u003d\u003d states.INSPECTING and"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_b5a2dcf9","line":383,"updated":"2015-03-03 17:36:07.000000000","message":"nit, you can do values[\u0027provision_state\u0027]","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ff37d1599ea2adb94ed0a1f195ec97e71e551355","unresolved":false,"context_lines":[{"line_number":380,"context_line":"                    values[\u0027inspection_started_at\u0027] \u003d timeutils.utcnow()"},{"line_number":381,"context_line":"                    values[\u0027inspection_finished_at\u0027] \u003d None"},{"line_number":382,"context_line":"                elif (ref.provision_state \u003d\u003d states.INSPECTING and"},{"line_number":383,"context_line":"                      values.get(\u0027provision_state\u0027) \u003d\u003d states.MANAGEABLE):"},{"line_number":384,"context_line":"                    values[\u0027inspection_finished_at\u0027] \u003d timeutils.utcnow()"},{"line_number":385,"context_line":"                    values[\u0027inspection_started_at\u0027] \u003d None"},{"line_number":386,"context_line":"                elif (ref.provision_state \u003d\u003d states.INSPECTING and"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_310b47d7","line":383,"in_reply_to":"ba7be1f8_b5a2dcf9","updated":"2015-03-04 03:56:07.000000000","message":"yeah.","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"61ab333b5417b95b2c5ec7a9ce80bf5906b58971","unresolved":false,"context_lines":[{"line_number":384,"context_line":"                    values[\u0027inspection_finished_at\u0027] \u003d timeutils.utcnow()"},{"line_number":385,"context_line":"                    values[\u0027inspection_started_at\u0027] \u003d None"},{"line_number":386,"context_line":"                elif (ref.provision_state \u003d\u003d states.INSPECTING and"},{"line_number":387,"context_line":"                      values.get(\u0027provision_state\u0027) \u003d\u003d states.INSPECTFAIL):"},{"line_number":388,"context_line":"                    values[\u0027inspection_started_at\u0027] \u003d None"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"            ref.update(values)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_55b3604c","line":387,"updated":"2015-03-03 17:36:07.000000000","message":"nit, you can do values[\u0027provision_state\u0027]","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ff37d1599ea2adb94ed0a1f195ec97e71e551355","unresolved":false,"context_lines":[{"line_number":384,"context_line":"                    values[\u0027inspection_finished_at\u0027] \u003d timeutils.utcnow()"},{"line_number":385,"context_line":"                    values[\u0027inspection_started_at\u0027] \u003d None"},{"line_number":386,"context_line":"                elif (ref.provision_state \u003d\u003d states.INSPECTING and"},{"line_number":387,"context_line":"                      values.get(\u0027provision_state\u0027) \u003d\u003d states.INSPECTFAIL):"},{"line_number":388,"context_line":"                    values[\u0027inspection_started_at\u0027] \u003d None"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"            ref.update(values)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_510efbe5","line":387,"in_reply_to":"ba7be1f8_55b3604c","updated":"2015-03-04 03:56:07.000000000","message":"ok","commit_id":"cc49e809a6cb34b98413bc0ae91d5b3233e14ff0"}]}
