)]}'
{"doc/source/http-api.rst":[{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"ecf80e7323b4800aa9691c65823b20a5c78c467a","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Requires X-Auth-Token header with Keystone token for authentication."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Deprecated parameters (only available in API before version ``1.9``):"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"* ``new_ipmi_password``"},{"line_number":21,"context_line":"* ``new_ipmi_username``"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Response:"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff0f0b1f_dd7cf4ec","line":21,"range":{"start_line":18,"start_character":0,"end_line":21,"end_character":23},"updated":"2017-05-19 10:32:19.000000000","message":"missed this one","commit_id":"7ae13e5e78b46858e0d42b7f85f97515c62742ff"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"722d59784f2ec278b59cebc88e2ead1c05cf4eec","unresolved":false,"context_lines":[{"line_number":388,"context_line":"* **1.10** adds node state to the GET /v1/introspection/\u003cNode ID\u003e and"},{"line_number":389,"context_line":"          GET /v1/introspection API response data."},{"line_number":390,"context_line":"* **1.11** adds invert\u0026multiple fields into rules response data"},{"line_number":391,"context_line":"* **1.12** this version indicates that support for setting IPMI credentials"},{"line_number":392,"context_line":"  was completely removed from API (all versions)."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ff0f0b1f_147f13ac","line":391,"range":{"start_line":391,"start_character":4,"end_line":391,"end_character":8},"updated":"2017-05-26 11:48:55.000000000","message":"you didn\u0027t bump API version to 1.12","commit_id":"2829389d2f13d6f9674de49601df2e11bb8014c2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9c908734cdd44d467b71a10186113b50e6a06fbf","unresolved":false,"context_lines":[{"line_number":388,"context_line":"* **1.10** adds node state to the GET /v1/introspection/\u003cNode ID\u003e and"},{"line_number":389,"context_line":"          GET /v1/introspection API response data."},{"line_number":390,"context_line":"* **1.11** adds invert\u0026multiple fields into rules response data"},{"line_number":391,"context_line":"* **1.12** this version indicates that support for setting IPMI credentials"},{"line_number":392,"context_line":"  was completely removed from API (all versions)."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ff0f0b1f_f4293f9b","line":391,"range":{"start_line":391,"start_character":4,"end_line":391,"end_character":8},"in_reply_to":"ff0f0b1f_147f13ac","updated":"2017-05-26 11:51:56.000000000","message":"LOL","commit_id":"2829389d2f13d6f9674de49601df2e11bb8014c2"}],"ironic_inspector/common/ironic.py":[{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"93535f35f138323196f6756b2a950f7ffa8591fe","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def check_provision_state(node):"},{"line_number":146,"context_line":"    state \u003d node.provision_state.lower()"},{"line_number":147,"context_line":"    if state not in VALID_STATES:"},{"line_number":148,"context_line":"        msg \u003d _(\u0027Invalid provision state for introspection: \u0027"},{"line_number":149,"context_line":"                \u0027\"%(state)s\", valid states are \"%(valid)s\"\u0027)"},{"line_number":150,"context_line":"        raise utils.Error(msg % {\u0027state\u0027: state, \u0027valid\u0027: list(VALID_STATES)},"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_f5cb4a47","line":147,"range":{"start_line":147,"start_character":0,"end_line":147,"end_character":33},"updated":"2017-05-31 13:35:47.000000000","message":"Zen++","commit_id":"e05257035ca9dfa53c59ec5b7aa451dc061b452d"}],"ironic_inspector/process.py":[{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"93535f35f138323196f6756b2a950f7ffa8591fe","unresolved":false,"context_lines":[{"line_number":282,"context_line":"    return resp"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"def _finish_common(node_info, ironic, introspection_data, power_off\u003dTrue):"},{"line_number":286,"context_line":"    if power_off:"},{"line_number":287,"context_line":"        LOG.debug(\u0027Forcing power off of node %s\u0027, node_info.uuid)"},{"line_number":288,"context_line":"        try:"},{"line_number":289,"context_line":"            ironic.node.set_power_state(node_info.uuid, \u0027off\u0027)"},{"line_number":290,"context_line":"        except Exception as exc:"},{"line_number":291,"context_line":"            if node_info.node().provision_state \u003d\u003d \u0027enroll\u0027:"},{"line_number":292,"context_line":"                LOG.info(\"Failed to power off the node in\""},{"line_number":293,"context_line":"                         \"\u0027enroll\u0027 state, ignoring; error was \""},{"line_number":294,"context_line":"                         \"%s\", exc, node_info\u003dnode_info,"},{"line_number":295,"context_line":"                         data\u003dintrospection_data)"},{"line_number":296,"context_line":"            else:"},{"line_number":297,"context_line":"                msg \u003d (_(\u0027Failed to power off node %(node)s, check \u0027"},{"line_number":298,"context_line":"                         \u0027its power management configuration: \u0027"},{"line_number":299,"context_line":"                         \u0027%(exc)s\u0027) % {\u0027node\u0027: node_info.uuid, \u0027exc\u0027:"},{"line_number":300,"context_line":"                                       exc})"},{"line_number":301,"context_line":"                node_info.finished(error\u003dmsg)"},{"line_number":302,"context_line":"                raise utils.Error(msg, node_info\u003dnode_info,"},{"line_number":303,"context_line":"                                  data\u003dintrospection_data)"},{"line_number":304,"context_line":"        LOG.info(\u0027Node powered-off\u0027, node_info\u003dnode_info,"},{"line_number":305,"context_line":"                 data\u003dintrospection_data)"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    node_info.finished()"},{"line_number":308,"context_line":"    LOG.info(\u0027Introspection finished successfully\u0027,"},{"line_number":309,"context_line":"             node_info\u003dnode_info, data\u003dintrospection_data)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"_finish \u003d node_cache.fsm_transition(istate.Events.finish)(_finish_common)"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"def reapply(node_ident):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_f8d7bf4e","line":312,"range":{"start_line":285,"start_character":0,"end_line":312,"end_character":73},"updated":"2017-05-31 13:35:47.000000000","message":"_finish_common was a way to decorate w/ the state transition for both the cases w/ and w/o credentials. better would be now to rename _finish_common() to _finish and decorate.\n\n  @node_cache.fsm_transition(istate.Events.finish)\n  def _finish(...)\n\n\nbut can be a follow-up","commit_id":"e05257035ca9dfa53c59ec5b7aa451dc061b452d"}],"ironic_inspector/test/functional.py":[{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"ecf80e7323b4800aa9691c65823b20a5c78c467a","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                raise AssertionError(msg)"},{"line_number":162,"context_line":"        return res"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def call_introspect(self, uuid, new_ipmi_username\u003dNone,"},{"line_number":165,"context_line":"                        new_ipmi_password\u003dNone, **kwargs):"},{"line_number":166,"context_line":"        endpoint \u003d \u0027/v1/introspection/%s\u0027 % uuid"},{"line_number":167,"context_line":"        if new_ipmi_password:"},{"line_number":168,"context_line":"            endpoint +\u003d \u0027?new_ipmi_password\u003d%s\u0027 % new_ipmi_password"},{"line_number":169,"context_line":"            if new_ipmi_username:"},{"line_number":170,"context_line":"                endpoint +\u003d \u0027\u0026new_ipmi_username\u003d%s\u0027 % new_ipmi_username"},{"line_number":171,"context_line":"        return self.call(\u0027post\u0027, endpoint, **kwargs)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def call_get_status(self, uuid, **kwargs):"},{"line_number":174,"context_line":"        return self.call(\u0027get\u0027, \u0027/v1/introspection/%s\u0027 % uuid, **kwargs).json()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_b8702ea7","line":171,"range":{"start_line":164,"start_character":0,"end_line":171,"end_character":52},"updated":"2017-05-19 10:32:19.000000000","message":"ditto","commit_id":"7ae13e5e78b46858e0d42b7f85f97515c62742ff"}]}
