)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fc7d6d59d6d8eb75673f2e8583d817b1aab4a764","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The BIOS settings will be retrieved and cached"},{"line_number":10,"context_line":"for the node as part of entering cleaning step"},{"line_number":11,"context_line":"in ``_do_node_clean``, this will work for both"},{"line_number":12,"context_line":"manual and automated cleaning."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Co-Authored-By: Yolanda Robla Mota \u003cyroblamo@redhat.com\u003e"},{"line_number":15,"context_line":"Change-Id: I1d56b0b5ec7e91919df43a2bec5196dc13726c26"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"9f6a8fd7_ecd8caef","line":12,"updated":"2018-04-24 11:54:21.000000000","message":"didn\u0027t we also want to cache them during enroll-\u003emanageable transition?","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"b33c4e3b8cb27f1a3ab9aeb1b87b1240bb984bab","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The BIOS settings will be retrieved and cached"},{"line_number":10,"context_line":"for the node as part of entering cleaning step"},{"line_number":11,"context_line":"in ``_do_node_clean``, this will work for both"},{"line_number":12,"context_line":"manual and automated cleaning."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Co-Authored-By: Yolanda Robla Mota \u003cyroblamo@redhat.com\u003e"},{"line_number":15,"context_line":"Change-Id: I1d56b0b5ec7e91919df43a2bec5196dc13726c26"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"9f6a8fd7_c98b4abd","line":12,"in_reply_to":"9f6a8fd7_ecd8caef","updated":"2018-04-26 02:20:52.000000000","message":"It was discussed later in the spec that we may want to do it in two steps, the first is whether ironic can reach the bios, this could happen in enroll -\u003e manageable transition;\nthe caching of bios may happen later as part of entering cleaning.","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"}],"ironic/conductor/manager.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"39c3aecd1e787b4d5d3bbfa668bafa6b50607411","unresolved":false,"context_lines":[{"line_number":1205,"context_line":"        if getattr(task.driver, \u0027bios\u0027, None):"},{"line_number":1206,"context_line":"            try:"},{"line_number":1207,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1208,"context_line":"            except (exception.InvalidParameterValue,"},{"line_number":1209,"context_line":"                    exception.UnsupportedDriverExtension) as e:"},{"line_number":1210,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed. \u0027"},{"line_number":1211,"context_line":"                         \u0027Cannot clean node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1212,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_c43cdfc9","line":1209,"range":{"start_line":1208,"start_character":19,"end_line":1209,"end_character":57},"updated":"2018-03-30 09:26:25.000000000","message":"I believe these can\u0027t include all scenarios, we may need a general catch here or reusing/defining some exceptions for this driver.","commit_id":"3009a691b17ff10f3e4b899b725242a2abcf9e70"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"d774cd5558bf7eac1d523105602f441c19b8398a","unresolved":false,"context_lines":[{"line_number":1205,"context_line":"        if getattr(task.driver, \u0027bios\u0027, None):"},{"line_number":1206,"context_line":"            try:"},{"line_number":1207,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1208,"context_line":"            except (exception.InvalidParameterValue,"},{"line_number":1209,"context_line":"                    exception.UnsupportedDriverExtension) as e:"},{"line_number":1210,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed. \u0027"},{"line_number":1211,"context_line":"                         \u0027Cannot clean node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1212,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_eb4e6b95","line":1209,"range":{"start_line":1208,"start_character":19,"end_line":1209,"end_character":57},"in_reply_to":"bf659307_c43cdfc9","updated":"2018-04-03 03:42:51.000000000","message":"Done","commit_id":"3009a691b17ff10f3e4b899b725242a2abcf9e70"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"39c3aecd1e787b4d5d3bbfa668bafa6b50607411","unresolved":false,"context_lines":[{"line_number":1210,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed. \u0027"},{"line_number":1211,"context_line":"                         \u0027Cannot clean node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1212,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"},{"line_number":1213,"context_line":"                return utils.cleaning_error_handler(task, msg)"},{"line_number":1214,"context_line":""},{"line_number":1215,"context_line":"        steps \u003d node.driver_internal_info.get(\u0027clean_steps\u0027, [])"},{"line_number":1216,"context_line":"        step_index \u003d 0 if steps else None"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_e45d6347","line":1213,"range":{"start_line":1213,"start_character":16,"end_line":1213,"end_character":62},"updated":"2018-03-30 09:26:25.000000000","message":"We may need to consider should we abort the whole clean process if a bios caching is failed?\nFrom my points of view, the bios caching is an attachment into the cleaning framework, I feel we shouldn\u0027t break existing cleaning workflow, at lease, for the UnsupportedDriverExtension exception.","commit_id":"3009a691b17ff10f3e4b899b725242a2abcf9e70"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"d774cd5558bf7eac1d523105602f441c19b8398a","unresolved":false,"context_lines":[{"line_number":1210,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed. \u0027"},{"line_number":1211,"context_line":"                         \u0027Cannot clean node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1212,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"},{"line_number":1213,"context_line":"                return utils.cleaning_error_handler(task, msg)"},{"line_number":1214,"context_line":""},{"line_number":1215,"context_line":"        steps \u003d node.driver_internal_info.get(\u0027clean_steps\u0027, [])"},{"line_number":1216,"context_line":"        step_index \u003d 0 if steps else None"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_0b52bf3b","line":1213,"range":{"start_line":1213,"start_character":16,"end_line":1213,"end_character":62},"in_reply_to":"bf659307_e45d6347","updated":"2018-04-03 03:42:51.000000000","message":"Done","commit_id":"3009a691b17ff10f3e4b899b725242a2abcf9e70"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"79272570e05f9dfe5cc72e04dbcc05969433634a","unresolved":false,"context_lines":[{"line_number":1196,"context_line":"            # whereas for automated cleaning, it is AVAILABLE (the default)."},{"line_number":1197,"context_line":"            target_state \u003d states.MANAGEABLE if manual_clean else None"},{"line_number":1198,"context_line":"            task.process_event(\u0027wait\u0027, target_state\u003dtarget_state)"},{"line_number":1199,"context_line":"            return"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"        try:"},{"line_number":1202,"context_line":"            utils.set_node_cleaning_steps(task)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_98b94c16","line":1199,"updated":"2018-04-24 08:42:49.000000000","message":"Because in-tree deploy interfaces such as direct and iscsi use inband cleaning, this method usually returns here. Then, bios settings are not cached.\n\nThough I\u0027m still not sure where we should cache the settings, at least, the current position is not appropriate.","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"b33c4e3b8cb27f1a3ab9aeb1b87b1240bb984bab","unresolved":false,"context_lines":[{"line_number":1196,"context_line":"            # whereas for automated cleaning, it is AVAILABLE (the default)."},{"line_number":1197,"context_line":"            target_state \u003d states.MANAGEABLE if manual_clean else None"},{"line_number":1198,"context_line":"            task.process_event(\u0027wait\u0027, target_state\u003dtarget_state)"},{"line_number":1199,"context_line":"            return"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"        try:"},{"line_number":1202,"context_line":"            utils.set_node_cleaning_steps(task)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_e9b3ae96","line":1199,"in_reply_to":"9f6a8fd7_2e6f832b","updated":"2018-04-26 02:20:52.000000000","message":"shall we trigger the caching right after node becomes manageable or maybe we want to have a way to explicitly call the caching of bios?","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"49d48aa9f20869f448bda4f92940862a937c15ec","unresolved":false,"context_lines":[{"line_number":1196,"context_line":"            # whereas for automated cleaning, it is AVAILABLE (the default)."},{"line_number":1197,"context_line":"            target_state \u003d states.MANAGEABLE if manual_clean else None"},{"line_number":1198,"context_line":"            task.process_event(\u0027wait\u0027, target_state\u003dtarget_state)"},{"line_number":1199,"context_line":"            return"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"        try:"},{"line_number":1202,"context_line":"            utils.set_node_cleaning_steps(task)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_bb6c4ace","line":1199,"in_reply_to":"9f6a8fd7_98b94c16","updated":"2018-04-24 09:10:16.000000000","message":"do you see any problem if move the bios caching before the block of prepare_cleaning code ?","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"70597cd8865f1e815c3b967136b5466587ed5ce9","unresolved":false,"context_lines":[{"line_number":1196,"context_line":"            # whereas for automated cleaning, it is AVAILABLE (the default)."},{"line_number":1197,"context_line":"            target_state \u003d states.MANAGEABLE if manual_clean else None"},{"line_number":1198,"context_line":"            task.process_event(\u0027wait\u0027, target_state\u003dtarget_state)"},{"line_number":1199,"context_line":"            return"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"        try:"},{"line_number":1202,"context_line":"            utils.set_node_cleaning_steps(task)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_2e6f832b","line":1199,"in_reply_to":"9f6a8fd7_bb6c4ace","updated":"2018-04-25 07:51:19.000000000","message":"I wonder if it might be late to cache here. When an operator wants to run apply_configuration soon after a node gets manageable, it may be inconvenient that he/she cannot see the current configuration. So, caching may be necessary when the node gets manageable as Dmitry mentions.","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"1beb48224d844a9c774ad41929767b06ae4d8827","unresolved":false,"context_lines":[{"line_number":1196,"context_line":"            # whereas for automated cleaning, it is AVAILABLE (the default)."},{"line_number":1197,"context_line":"            target_state \u003d states.MANAGEABLE if manual_clean else None"},{"line_number":1198,"context_line":"            task.process_event(\u0027wait\u0027, target_state\u003dtarget_state)"},{"line_number":1199,"context_line":"            return"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"        try:"},{"line_number":1202,"context_line":"            utils.set_node_cleaning_steps(task)"}],"source_content_type":"text/x-python","patch_set":26,"id":"5f7c97a3_1ca2464c","line":1199,"in_reply_to":"9f6a8fd7_e9b3ae96","updated":"2018-05-11 04:38:45.000000000","message":"Yes. I think either is necessary though it may require updating SPEC.","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fc7d6d59d6d8eb75673f2e8583d817b1aab4a764","unresolved":false,"context_lines":[{"line_number":1208,"context_line":""},{"line_number":1209,"context_line":"        # Do caching of bios settings if supported by driver,"},{"line_number":1210,"context_line":"        # this will be called for both manual and automated cleaning."},{"line_number":1211,"context_line":"        if getattr(task.driver, \u0027bios\u0027, None):"},{"line_number":1212,"context_line":"            try:"},{"line_number":1213,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1214,"context_line":"            except Exception as e:"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_8ce34ea4","line":1211,"updated":"2018-04-24 11:54:21.000000000","message":"let\u0027s leave a TODO to remove this check when we remove classic drivers","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"b33c4e3b8cb27f1a3ab9aeb1b87b1240bb984bab","unresolved":false,"context_lines":[{"line_number":1208,"context_line":""},{"line_number":1209,"context_line":"        # Do caching of bios settings if supported by driver,"},{"line_number":1210,"context_line":"        # this will be called for both manual and automated cleaning."},{"line_number":1211,"context_line":"        if getattr(task.driver, \u0027bios\u0027, None):"},{"line_number":1212,"context_line":"            try:"},{"line_number":1213,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1214,"context_line":"            except Exception as e:"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_3adfb969","line":1211,"in_reply_to":"9f6a8fd7_8ce34ea4","updated":"2018-04-26 02:20:52.000000000","message":"Done","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"79272570e05f9dfe5cc72e04dbcc05969433634a","unresolved":false,"context_lines":[{"line_number":1211,"context_line":"        if getattr(task.driver, \u0027bios\u0027, None):"},{"line_number":1212,"context_line":"            try:"},{"line_number":1213,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1214,"context_line":"            except Exception as e:"},{"line_number":1215,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed. \u0027"},{"line_number":1216,"context_line":"                         \u0027Cannot clean node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1217,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_d8f6e4d7","line":1214,"updated":"2018-04-24 08:42:49.000000000","message":"NoBIOS interface always fails caching. It prevents any clean steps from working.","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fc7d6d59d6d8eb75673f2e8583d817b1aab4a764","unresolved":false,"context_lines":[{"line_number":1211,"context_line":"        if getattr(task.driver, \u0027bios\u0027, None):"},{"line_number":1212,"context_line":"            try:"},{"line_number":1213,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1214,"context_line":"            except Exception as e:"},{"line_number":1215,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed. \u0027"},{"line_number":1216,"context_line":"                         \u0027Cannot clean node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1217,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_acde52d7","line":1214,"updated":"2018-04-24 11:54:21.000000000","message":"right, maybe we should make NoBIOS.cache_bios_settings a no-op to prevent irrelevant logging?","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"b33c4e3b8cb27f1a3ab9aeb1b87b1240bb984bab","unresolved":false,"context_lines":[{"line_number":1211,"context_line":"        if getattr(task.driver, \u0027bios\u0027, None):"},{"line_number":1212,"context_line":"            try:"},{"line_number":1213,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1214,"context_line":"            except Exception as e:"},{"line_number":1215,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed. \u0027"},{"line_number":1216,"context_line":"                         \u0027Cannot clean node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1217,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_1afc35b3","line":1214,"in_reply_to":"9f6a8fd7_2e2783cc","updated":"2018-04-26 02:20:52.000000000","message":"Make cache_bios_settings method pass in NoBIOS driver.\n\nclass NoBIOS(FailMixin, base.BIOSInterface):\n    \"\"\"BIOS interface implementation that raises errors on all requests.\"\"\"\n\n    def apply_configuration(self, task, settings):\n        _fail(self, task)\n\n    def factory_reset(self, task):\n        _fail(self, task)\n\n    def cache_bios_settings(self, task):\n        pass","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"70597cd8865f1e815c3b967136b5466587ed5ce9","unresolved":false,"context_lines":[{"line_number":1211,"context_line":"        if getattr(task.driver, \u0027bios\u0027, None):"},{"line_number":1212,"context_line":"            try:"},{"line_number":1213,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1214,"context_line":"            except Exception as e:"},{"line_number":1215,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed. \u0027"},{"line_number":1216,"context_line":"                         \u0027Cannot clean node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1217,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_2e2783cc","line":1214,"in_reply_to":"9f6a8fd7_acde52d7","updated":"2018-04-25 07:51:19.000000000","message":"Sorry, I misunderstood. I wouldn\u0027t like to see an error log for NoBIOS here.","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"49d48aa9f20869f448bda4f92940862a937c15ec","unresolved":false,"context_lines":[{"line_number":1211,"context_line":"        if getattr(task.driver, \u0027bios\u0027, None):"},{"line_number":1212,"context_line":"            try:"},{"line_number":1213,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1214,"context_line":"            except Exception as e:"},{"line_number":1215,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed. \u0027"},{"line_number":1216,"context_line":"                         \u0027Cannot clean node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1217,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_db101e51","line":1214,"in_reply_to":"9f6a8fd7_d8f6e4d7","updated":"2018-04-24 09:10:16.000000000","message":"we capture the exception here, but not return immediately, just log the exception msg, do you think it\u0027ll still block other cleaning steps?","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"70597cd8865f1e815c3b967136b5466587ed5ce9","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1214,"context_line":"            except Exception as e:"},{"line_number":1215,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed. \u0027"},{"line_number":1216,"context_line":"                         \u0027Cannot clean node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1217,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"},{"line_number":1218,"context_line":"                LOG.exception(msg)"},{"line_number":1219,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_7120fc9b","line":1216,"range":{"start_line":1216,"start_character":26,"end_line":1216,"end_character":43},"updated":"2018-04-25 07:51:19.000000000","message":"This looks unnecessary because other clean steps can work.","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"b33c4e3b8cb27f1a3ab9aeb1b87b1240bb984bab","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1214,"context_line":"            except Exception as e:"},{"line_number":1215,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed. \u0027"},{"line_number":1216,"context_line":"                         \u0027Cannot clean node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1217,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"},{"line_number":1218,"context_line":"                LOG.exception(msg)"},{"line_number":1219,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_3a9a59b8","line":1216,"range":{"start_line":1216,"start_character":26,"end_line":1216,"end_character":43},"in_reply_to":"9f6a8fd7_7120fc9b","updated":"2018-04-26 02:20:52.000000000","message":"Changing to :\n\n\u0027Caching of bios settings failed on node %(node)s. Error: %(msg)s\u0027 % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e}","commit_id":"3170f772733c2c5c5b21cbbe9ce5003edff798f1"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f6789c55ca79996bed119e8844121443111061b3","unresolved":false,"context_lines":[{"line_number":1215,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed \u0027"},{"line_number":1216,"context_line":"                         \u0027on node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1217,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"},{"line_number":1218,"context_line":"                LOG.exception(msg)"},{"line_number":1219,"context_line":""},{"line_number":1220,"context_line":"        steps \u003d node.driver_internal_info.get(\u0027clean_steps\u0027, [])"},{"line_number":1221,"context_line":"        step_index \u003d 0 if steps else None"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f6a8fd7_8b8f8273","line":1218,"updated":"2018-04-26 09:23:43.000000000","message":"What if one of the clean steps involves setting BIOS settings to a known good state? Then our cached settings would be incorrect.\n\nRather than have a special case here, wouldn\u0027t it make more sense to make the caching itself a clean step with a default priority that would make it run late? If we make the priority configurable, this would also allow users to disable the caching.","commit_id":"ac31086f5bc02bf043f06aa8bb2baae2e27a1f40"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"49978dc0d0625f7721847305c877bb07091a809a","unresolved":false,"context_lines":[{"line_number":1215,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed \u0027"},{"line_number":1216,"context_line":"                         \u0027on node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1217,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"},{"line_number":1218,"context_line":"                LOG.exception(msg)"},{"line_number":1219,"context_line":""},{"line_number":1220,"context_line":"        steps \u003d node.driver_internal_info.get(\u0027clean_steps\u0027, [])"},{"line_number":1221,"context_line":"        step_index \u003d 0 if steps else None"}],"source_content_type":"text/x-python","patch_set":27,"id":"5f7c97a3_97a55fb8","line":1218,"in_reply_to":"9f6a8fd7_8b8f8273","updated":"2018-05-04 06:18:17.000000000","message":"the cached settings would be updated followed by a successful apply of given settings. this is achieved by calling the cache_bios_settings method explicitly after apply_configuration or factory_reset methods are called.\n\none problem above is that there will be redundant call of cache_* method. it looks reasonable to have a separate clean step for cache_bios_settings so that it can be called where necessary, but this also implies that operator needs to run the cache_* clean step first to know the current bios configurations, then decide which bios option shall be changed or not.","commit_id":"ac31086f5bc02bf043f06aa8bb2baae2e27a1f40"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f6789c55ca79996bed119e8844121443111061b3","unresolved":false,"context_lines":[{"line_number":1216,"context_line":"                         \u0027on node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1217,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"},{"line_number":1218,"context_line":"                LOG.exception(msg)"},{"line_number":1219,"context_line":""},{"line_number":1220,"context_line":"        steps \u003d node.driver_internal_info.get(\u0027clean_steps\u0027, [])"},{"line_number":1221,"context_line":"        step_index \u003d 0 if steps else None"},{"line_number":1222,"context_line":"        self._do_next_clean_step(task, step_index)"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f6a8fd7_6b3c6e92","line":1219,"updated":"2018-04-26 09:23:43.000000000","message":"Also, this will always run for manual cleaning, even if the user has not requested it. I don\u0027t see why it should be special.","commit_id":"ac31086f5bc02bf043f06aa8bb2baae2e27a1f40"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e02b6d05b804d10827dc99075df771557041625a","unresolved":false,"context_lines":[{"line_number":1205,"context_line":"                   % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"},{"line_number":1206,"context_line":"            return utils.cleaning_error_handler(task, msg)"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        # Do caching of bios settings if supported by driver,"},{"line_number":1209,"context_line":"        # this will be called for both manual and automated cleaning."},{"line_number":1210,"context_line":""},{"line_number":1211,"context_line":"        # TODO(zshi) remove this check when classic drivers are removed"}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_9a0029ae","line":1208,"updated":"2018-04-26 11:10:03.000000000","message":"so in case prepare_node_cleaning returns CLEANWAIT, this will not be called? Don\u0027t we need to move it prior to L1188?","commit_id":"5ce89b7dc02d021c82c8eebb1e011404092dafc2"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"49978dc0d0625f7721847305c877bb07091a809a","unresolved":false,"context_lines":[{"line_number":1205,"context_line":"                   % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"},{"line_number":1206,"context_line":"            return utils.cleaning_error_handler(task, msg)"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        # Do caching of bios settings if supported by driver,"},{"line_number":1209,"context_line":"        # this will be called for both manual and automated cleaning."},{"line_number":1210,"context_line":""},{"line_number":1211,"context_line":"        # TODO(zshi) remove this check when classic drivers are removed"}],"source_content_type":"text/x-python","patch_set":28,"id":"5f7c97a3_de18d476","line":1208,"in_reply_to":"9f6a8fd7_9a0029ae","updated":"2018-05-04 06:18:17.000000000","message":"Done\nMove the piece of code prior to L1188, until there is a conclusion whether to have a separate clean step for cache_bios_settings.","commit_id":"5ce89b7dc02d021c82c8eebb1e011404092dafc2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e02b6d05b804d10827dc99075df771557041625a","unresolved":false,"context_lines":[{"line_number":1215,"context_line":"            except Exception as e:"},{"line_number":1216,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed \u0027"},{"line_number":1217,"context_line":"                         \u0027on node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1218,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"},{"line_number":1219,"context_line":"                LOG.exception(msg)"},{"line_number":1220,"context_line":""},{"line_number":1221,"context_line":"        steps \u003d node.driver_internal_info.get(\u0027clean_steps\u0027, [])"}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_9abd8904","line":1218,"range":{"start_line":1218,"start_character":45,"end_line":1218,"end_character":53},"updated":"2018-04-26 11:10:03.000000000","message":"i don\u0027t think this needs to be included in the message, LOG.exception will print the traceback that is currently present in the context anyway","commit_id":"5ce89b7dc02d021c82c8eebb1e011404092dafc2"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"49978dc0d0625f7721847305c877bb07091a809a","unresolved":false,"context_lines":[{"line_number":1215,"context_line":"            except Exception as e:"},{"line_number":1216,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed \u0027"},{"line_number":1217,"context_line":"                         \u0027on node %(node)s. Error: %(msg)s\u0027)"},{"line_number":1218,"context_line":"                       % {\u0027node\u0027: node.uuid, \u0027msg\u0027: e})"},{"line_number":1219,"context_line":"                LOG.exception(msg)"},{"line_number":1220,"context_line":""},{"line_number":1221,"context_line":"        steps \u003d node.driver_internal_info.get(\u0027clean_steps\u0027, [])"}],"source_content_type":"text/x-python","patch_set":28,"id":"5f7c97a3_5e0da435","line":1218,"range":{"start_line":1218,"start_character":45,"end_line":1218,"end_character":53},"in_reply_to":"9f6a8fd7_9abd8904","updated":"2018-05-04 06:18:17.000000000","message":"Done","commit_id":"5ce89b7dc02d021c82c8eebb1e011404092dafc2"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"8ccc55acbe32060b77f3a1fc741e97d7a4b60df9","unresolved":false,"context_lines":[{"line_number":1187,"context_line":""},{"line_number":1188,"context_line":"        # Do caching of bios settings if supported by driver,"},{"line_number":1189,"context_line":"        # this will be called for both manual and automated cleaning."},{"line_number":1190,"context_line":""},{"line_number":1191,"context_line":"        # TODO(zshi) remove this check when classic drivers are removed"},{"line_number":1192,"context_line":"        if getattr(task.driver, \u0027bios\u0027, None):"},{"line_number":1193,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_c16c4838","line":1190,"updated":"2018-05-07 10:41:15.000000000","message":"nit: blank line can be removed.","commit_id":"2029fccf9b05209e037cefa3bd34a6f82ed19b32"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"7f5d5fe47bbad3524bb449ab6cc91aaa83f45f80","unresolved":false,"context_lines":[{"line_number":1187,"context_line":""},{"line_number":1188,"context_line":"        # Do caching of bios settings if supported by driver,"},{"line_number":1189,"context_line":"        # this will be called for both manual and automated cleaning."},{"line_number":1190,"context_line":""},{"line_number":1191,"context_line":"        # TODO(zshi) remove this check when classic drivers are removed"},{"line_number":1192,"context_line":"        if getattr(task.driver, \u0027bios\u0027, None):"},{"line_number":1193,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_068811e5","line":1190,"in_reply_to":"5f7c97a3_c16c4838","updated":"2018-05-08 07:21:04.000000000","message":"Done","commit_id":"2029fccf9b05209e037cefa3bd34a6f82ed19b32"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"8ccc55acbe32060b77f3a1fc741e97d7a4b60df9","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"        # TODO(zshi) remove this check when classic drivers are removed"},{"line_number":1192,"context_line":"        if getattr(task.driver, \u0027bios\u0027, None):"},{"line_number":1193,"context_line":"            try:"},{"line_number":1194,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1195,"context_line":"            except Exception as e:"},{"line_number":1196,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed on node %(node)s.\u0027)"},{"line_number":1197,"context_line":"                       % {\u0027node\u0027: node.uuid})"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_1c462725","line":1194,"range":{"start_line":1194,"start_character":1,"end_line":1194,"end_character":58},"updated":"2018-05-07 10:41:15.000000000","message":"The node would be powered on at L1181. The node BMC might be in POST state when cache_bios_settings() is called which may cause failure while retrieving certain settings. Can we perform this operation before calling prepare_cleaning()?","commit_id":"2029fccf9b05209e037cefa3bd34a6f82ed19b32"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"7f5d5fe47bbad3524bb449ab6cc91aaa83f45f80","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"        # TODO(zshi) remove this check when classic drivers are removed"},{"line_number":1192,"context_line":"        if getattr(task.driver, \u0027bios\u0027, None):"},{"line_number":1193,"context_line":"            try:"},{"line_number":1194,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1195,"context_line":"            except Exception as e:"},{"line_number":1196,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed on node %(node)s.\u0027)"},{"line_number":1197,"context_line":"                       % {\u0027node\u0027: node.uuid})"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_26c74d15","line":1194,"range":{"start_line":1194,"start_character":1,"end_line":1194,"end_character":58},"in_reply_to":"5f7c97a3_1c462725","updated":"2018-05-08 07:21:04.000000000","message":"Done","commit_id":"2029fccf9b05209e037cefa3bd34a6f82ed19b32"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"8ccc55acbe32060b77f3a1fc741e97d7a4b60df9","unresolved":false,"context_lines":[{"line_number":1193,"context_line":"            try:"},{"line_number":1194,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1195,"context_line":"            except Exception as e:"},{"line_number":1196,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed on node %(node)s.\u0027)"},{"line_number":1197,"context_line":"                       % {\u0027node\u0027: node.uuid})"},{"line_number":1198,"context_line":"                LOG.exception(msg)"},{"line_number":1199,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_21bdfc64","line":1196,"range":{"start_line":1196,"start_character":61,"end_line":1196,"end_character":75},"updated":"2018-05-07 10:41:15.000000000","message":"It would be helpful if we add exception error string to this message.","commit_id":"2029fccf9b05209e037cefa3bd34a6f82ed19b32"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"7f5d5fe47bbad3524bb449ab6cc91aaa83f45f80","unresolved":false,"context_lines":[{"line_number":1193,"context_line":"            try:"},{"line_number":1194,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1195,"context_line":"            except Exception as e:"},{"line_number":1196,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed on node %(node)s.\u0027)"},{"line_number":1197,"context_line":"                       % {\u0027node\u0027: node.uuid})"},{"line_number":1198,"context_line":"                LOG.exception(msg)"},{"line_number":1199,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_264c2d9d","line":1196,"range":{"start_line":1196,"start_character":61,"end_line":1196,"end_character":75},"in_reply_to":"5f7c97a3_21bdfc64","updated":"2018-05-08 07:21:04.000000000","message":"Vladyslav Drok suggested to remove the exception msg, the reason is that LOG.exception followed will print the traceback that is currently present in the context anyway, do you think it will be a duplication of adding msg here?","commit_id":"2029fccf9b05209e037cefa3bd34a6f82ed19b32"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"d6a4a9e64c4fe9138306ef3f3c4d6d76137b8d47","unresolved":false,"context_lines":[{"line_number":1183,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1184,"context_line":"            except Exception as e:"},{"line_number":1185,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed on node %(node)s.\u0027)"},{"line_number":1186,"context_line":"                       % {\u0027node\u0027: node.uuid})"},{"line_number":1187,"context_line":"                LOG.exception(msg)"},{"line_number":1188,"context_line":""},{"line_number":1189,"context_line":"        # Allow the deploy driver to set up the ramdisk again (necessary for"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_75d82d1d","line":1186,"updated":"2018-05-11 08:10:37.000000000","message":"This is being treated as a non-fatal error. Should we make that explicit in the error message? Some thing like:\n\n... %(node)s. Continuing node cleaning anyway.","commit_id":"d01715321a484c24767f64edf77514b9609c279c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0edce03fc6c047845fb80483b965b7f656dd5ba4","unresolved":false,"context_lines":[{"line_number":1183,"context_line":"                task.driver.bios.cache_bios_settings(task)"},{"line_number":1184,"context_line":"            except Exception as e:"},{"line_number":1185,"context_line":"                msg \u003d (_(\u0027Caching of bios settings failed on node %(node)s.\u0027)"},{"line_number":1186,"context_line":"                       % {\u0027node\u0027: node.uuid})"},{"line_number":1187,"context_line":"                LOG.exception(msg)"},{"line_number":1188,"context_line":""},{"line_number":1189,"context_line":"        # Allow the deploy driver to set up the ramdisk again (necessary for"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_4138cfed","line":1186,"in_reply_to":"5f7c97a3_75d82d1d","updated":"2018-05-11 12:55:31.000000000","message":"+1, would be a good follow-up","commit_id":"d01715321a484c24767f64edf77514b9609c279c"}],"ironic/conductor/rpcapi.py":[{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"70b96f21b2319cf59831af4e4764a20dc04196fe","unresolved":false,"context_lines":[{"line_number":743,"context_line":"            support BIOS configuration."},{"line_number":744,"context_line":"        :returns: A dictionary containing the cached BIOS properties."},{"line_number":745,"context_line":"        \"\"\""},{"line_number":746,"context_line":"        cctxt \u003d self.client.prepare(topic\u003dtopic or self.topic, version\u003d\u00271.42\u0027)"},{"line_number":747,"context_line":"        return cctxt.call(context, \u0027get_cached_bios_properties\u0027,"},{"line_number":748,"context_line":"                          node_bios_obj\u003dnode_bios_obj)"},{"line_number":749,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa0c359_17fe1cae","line":746,"range":{"start_line":746,"start_character":72,"end_line":746,"end_character":76},"updated":"2018-02-15 06:06:43.000000000","message":"This should be 1.45?","commit_id":"67589fe260a9b71924b9d316a73b71e3295df21a"}],"ironic/drivers/modules/noop.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f6789c55ca79996bed119e8844121443111061b3","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        _fail(self, task)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def cache_bios_settings(self, task):"},{"line_number":83,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f6a8fd7_abdfe663","line":83,"updated":"2018-04-26 09:23:43.000000000","message":"I guess this should go in the previous patch.","commit_id":"ac31086f5bc02bf043f06aa8bb2baae2e27a1f40"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"49978dc0d0625f7721847305c877bb07091a809a","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        _fail(self, task)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def cache_bios_settings(self, task):"},{"line_number":83,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":27,"id":"5f7c97a3_fe3fd0b2","line":83,"in_reply_to":"9f6a8fd7_abdfe663","updated":"2018-05-04 06:18:17.000000000","message":"Done","commit_id":"ac31086f5bc02bf043f06aa8bb2baae2e27a1f40"}],"ironic/tests/unit/conductor/test_manager.py":[{"author":{"_account_id":22255,"name":"Tuan","email":"tuanla@vn.fujitsu.com","username":"Tuan"},"change_message_id":"98c4840704214dccc9f4f1a77a45e3eb243d2f7a","unresolved":false,"context_lines":[{"line_number":2361,"context_line":"                self.context, node.uuid, shared\u003dFalse) as task:"},{"line_number":2362,"context_line":"            self.service._do_node_clean(task, clean_steps\u003dclean_steps)"},{"line_number":2363,"context_line":"        node.refresh()"},{"line_number":2364,"context_line":"        self.assertEqual(states.CLEANFAIL, node.provision_state)"},{"line_number":2365,"context_line":"        self.assertEqual(tgt_prov_state, node.target_provision_state)"},{"line_number":2366,"context_line":"        mock_bios.assert_called_once_with(mock.ANY)"},{"line_number":2367,"context_line":"        mock_validate.assert_called_once_with(mock.ANY, task)"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf659307_12d575b9","line":2364,"range":{"start_line":2364,"start_character":0,"end_line":2364,"end_character":64},"updated":"2018-03-28 08:44:48.000000000","message":"Fail: testtools.matchers._impl.MismatchError: \u0027clean failed\u0027 !\u003d u\u0027available\u0027","commit_id":"55ae6cbb2a80108f217db881bb8781a634f11d6b"},{"author":{"_account_id":22255,"name":"Tuan","email":"tuanla@vn.fujitsu.com","username":"Tuan"},"change_message_id":"98c4840704214dccc9f4f1a77a45e3eb243d2f7a","unresolved":false,"context_lines":[{"line_number":2363,"context_line":"        node.refresh()"},{"line_number":2364,"context_line":"        self.assertEqual(states.CLEANFAIL, node.provision_state)"},{"line_number":2365,"context_line":"        self.assertEqual(tgt_prov_state, node.target_provision_state)"},{"line_number":2366,"context_line":"        mock_bios.assert_called_once_with(mock.ANY)"},{"line_number":2367,"context_line":"        mock_validate.assert_called_once_with(mock.ANY, task)"},{"line_number":2368,"context_line":""},{"line_number":2369,"context_line":"    def test__do_node_clean_manual_cache_bios(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf659307_d2685d22","line":2366,"range":{"start_line":2366,"start_character":8,"end_line":2366,"end_character":51},"updated":"2018-03-28 08:44:48.000000000","message":"Test code will failed \"AssertionError: Expected \u0027cache_bios_settings\u0027 to be called once. Called 0 times.\n\" because to be called one time it requires the driver support bios settings. Line 1205 https://review.openstack.org/#/c/512200/13/ironic/conductor/manager.py","commit_id":"55ae6cbb2a80108f217db881bb8781a634f11d6b"},{"author":{"_account_id":21151,"name":"zenghui.shi","email":"zshi@redhat.com","username":"zshi"},"change_message_id":"90b6d56cccb5ba4c521335cc85b338165ea4baad","unresolved":false,"context_lines":[{"line_number":2363,"context_line":"        node.refresh()"},{"line_number":2364,"context_line":"        self.assertEqual(states.CLEANFAIL, node.provision_state)"},{"line_number":2365,"context_line":"        self.assertEqual(tgt_prov_state, node.target_provision_state)"},{"line_number":2366,"context_line":"        mock_bios.assert_called_once_with(mock.ANY)"},{"line_number":2367,"context_line":"        mock_validate.assert_called_once_with(mock.ANY, task)"},{"line_number":2368,"context_line":""},{"line_number":2369,"context_line":"    def test__do_node_clean_manual_cache_bios(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf659307_7d5ee112","line":2366,"range":{"start_line":2366,"start_character":8,"end_line":2366,"end_character":51},"in_reply_to":"bf659307_d2685d22","updated":"2018-03-29 09:02:46.000000000","message":"the unit test is set to use FakeBIOS driver interfaces which has a cache_bios_setting method, will it be called once for the mock testing?\n\n@mock.patch(\u0027ironic.drivers.modules.fake.FakeBIOS.cache_bios_settings\u0027)","commit_id":"55ae6cbb2a80108f217db881bb8781a634f11d6b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"d6a4a9e64c4fe9138306ef3f3c4d6d76137b8d47","unresolved":false,"context_lines":[{"line_number":2395,"context_line":"                self.context, node.uuid, shared\u003dFalse) as task:"},{"line_number":2396,"context_line":"            self.service._do_node_clean(task, clean_steps\u003dclean_steps)"},{"line_number":2397,"context_line":"        node.refresh()"},{"line_number":2398,"context_line":"        self.assertFalse(mock_bios.called)"},{"line_number":2399,"context_line":"        if clean_steps:"},{"line_number":2400,"context_line":"            self.assertEqual(states.CLEANFAIL, node.provision_state)"},{"line_number":2401,"context_line":"            self.assertEqual(tgt_prov_state, node.target_provision_state)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_353955a3","line":2398,"updated":"2018-05-11 08:10:37.000000000","message":"Why has this not been called? Because we\u0027re using a fake driver? Shouldn\u0027t we add a test that exercises the new code?","commit_id":"d01715321a484c24767f64edf77514b9609c279c"}]}
