)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"73553868e53043574468664caf7cead9f26c5fb8","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds new SNMPv3 auth protocols to iRMC which are supported"},{"line_number":10,"context_line":"from iRMC S6."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Id2fca59bebb0745e6b16caaaa7838d1f1a2717e1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9c36bd44_55d96ffa","line":11,"updated":"2022-09-16 13:51:14.000000000","message":"Is there a storyboard task/story tracking this?","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"},{"author":{"_account_id":28806,"name":"Shukun Song","display_name":"Shukun Song","email":"song.shukun@jp.fujitsu.com","username":"song"},"change_message_id":"2c130d5ce47fd90b5e02fa9a7ca89953d8d4ee3b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds new SNMPv3 auth protocols to iRMC which are supported"},{"line_number":10,"context_line":"from iRMC S6."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Id2fca59bebb0745e6b16caaaa7838d1f1a2717e1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1784b3c4_9549b5c3","line":11,"in_reply_to":"9c36bd44_55d96ffa","updated":"2022-09-22 10:40:10.000000000","message":"Done","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"73553868e53043574468664caf7cead9f26c5fb8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b81d6463_ef4ae31f","updated":"2022-09-16 13:51:14.000000000","message":"A couple different things\n1) I feel this patch is a bit over complicated and I\u0027ve posed questions to help me understand. In particular, I\u0027m very worried about the excessive number of places where this is getting wired into validate all snmp parameters where this was not done previously, and realistically should either only be done as part of validate on the management interface.\n2) You don\u0027t have a release note, please add one.\n3) This patch is also lacking documentation updates. Please add them.\n4) I know you want to backport this patch. It would be ideal if this change was minimally invasive. This seems... a bit invasive which goes back to #1. If there is any way this can be simplified and maybe moved to more of a user friendly fail fast pattern, that would be helpful, especially as end users of the API do not have log access.","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"},{"author":{"_account_id":28806,"name":"Shukun Song","display_name":"Shukun Song","email":"song.shukun@jp.fujitsu.com","username":"song"},"change_message_id":"2c130d5ce47fd90b5e02fa9a7ca89953d8d4ee3b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"32321fbe_053700da","updated":"2022-09-22 10:40:10.000000000","message":"Hi, Julia. Thanks for your review. Sorry for forgetting the storyboard, release note and document, I have added these parts. And after internal discussion, I will change the code to not check if the auth protocol is supported or not, just like your advice.","commit_id":"e88e0f9b9b0464d37d8af6b767886d84fea1f1c2"},{"author":{"_account_id":28806,"name":"Shukun Song","display_name":"Shukun Song","email":"song.shukun@jp.fujitsu.com","username":"song"},"change_message_id":"5b1bd5388e14455542a6646aafba185b1644e4a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"bb02c284_7426f5cd","updated":"2022-10-07 12:17:20.000000000","message":"Hi, Julia, could you please take a look at this patch? It is quite small and simple now.","commit_id":"233c6408389be5f3e271b46154943bc744e0290e"},{"author":{"_account_id":28806,"name":"Shukun Song","display_name":"Shukun Song","email":"song.shukun@jp.fujitsu.com","username":"song"},"change_message_id":"224c27cef0901af110bda461b667ba3cb77d9912","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d8d674ee_fdb7f286","updated":"2022-09-29 11:24:44.000000000","message":"Hi, Julia. I have changed the code to not validate if the authentication protocol is supported or not and add some advice to the error message when a SNMP failure occurs. Please review it again, thank you.","commit_id":"233c6408389be5f3e271b46154943bc744e0290e"}],"ironic/drivers/modules/irmc/common.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"73553868e53043574468664caf7cead9f26c5fb8","unresolved":true,"context_lines":[{"line_number":323,"context_line":"    for param in SNMP_V3_OPTIONAL_PROPERTIES:"},{"line_number":324,"context_line":"        value \u003d info.get(param, CONF.irmc.get(param[len(\u0027irmc_\u0027):]))"},{"line_number":325,"context_line":"        if value not in valid_values[param]:"},{"line_number":326,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":327,"context_line":"                \"Invalid value %(value)s given for driver info parameter \""},{"line_number":328,"context_line":"                \"%(param)s, the valid values are %(valid_values)s.\") %"},{"line_number":329,"context_line":"                {\u0027param\u0027: param,"}],"source_content_type":"text/x-python","patch_set":2,"id":"0e5136e2_28d44211","line":326,"updated":"2022-09-16 13:51:14.000000000","message":"Just a thought, we have a node history capability these days. It might be just as useful to record the failure there using the conductor utility method. I think it is node_history_record.","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"},{"author":{"_account_id":28806,"name":"Shukun Song","display_name":"Shukun Song","email":"song.shukun@jp.fujitsu.com","username":"song"},"change_message_id":"224c27cef0901af110bda461b667ba3cb77d9912","unresolved":false,"context_lines":[{"line_number":323,"context_line":"    for param in SNMP_V3_OPTIONAL_PROPERTIES:"},{"line_number":324,"context_line":"        value \u003d info.get(param, CONF.irmc.get(param[len(\u0027irmc_\u0027):]))"},{"line_number":325,"context_line":"        if value not in valid_values[param]:"},{"line_number":326,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":327,"context_line":"                \"Invalid value %(value)s given for driver info parameter \""},{"line_number":328,"context_line":"                \"%(param)s, the valid values are %(valid_values)s.\") %"},{"line_number":329,"context_line":"                {\u0027param\u0027: param,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ad8d6b87_a7c9e258","line":326,"in_reply_to":"0e5136e2_28d44211","updated":"2022-09-29 11:24:44.000000000","message":"I have removed this part of code.","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"73553868e53043574468664caf7cead9f26c5fb8","unresolved":true,"context_lines":[{"line_number":320,"context_line":"    if within_version_range(node, SNMP_SHA_AUTH_PROTO_RANGES):"},{"line_number":321,"context_line":"        valid_values[\u0027irmc_snmp_auth_proto\u0027] \u003d [\u0027sha\u0027]"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    for param in SNMP_V3_OPTIONAL_PROPERTIES:"},{"line_number":324,"context_line":"        value \u003d info.get(param, CONF.irmc.get(param[len(\u0027irmc_\u0027):]))"},{"line_number":325,"context_line":"        if value not in valid_values[param]:"},{"line_number":326,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":327,"context_line":"                \"Invalid value %(value)s given for driver info parameter \""},{"line_number":328,"context_line":"                \"%(param)s, the valid values are %(valid_values)s.\") %"},{"line_number":329,"context_line":"                {\u0027param\u0027: param,"},{"line_number":330,"context_line":"                 \u0027value\u0027: value,"},{"line_number":331,"context_line":"                 \u0027valid_values\u0027: valid_values[param]})"},{"line_number":332,"context_line":"        snmp_info[param] \u003d valid_protocols[param].get(value)"},{"line_number":333,"context_line":"        if not snmp_info[param]:"},{"line_number":334,"context_line":"            raise exception.InvalidParameterValue(_("}],"source_content_type":"text/x-python","patch_set":2,"id":"651e1254_98b199ed","line":331,"range":{"start_line":323,"start_character":0,"end_line":331,"end_character":54},"updated":"2022-09-16 13:51:14.000000000","message":"So validate was always more about not actually connecting to the BMC, but about attempting to validate sufficient information was present to connect in the first place.\n\nCould storage of the BMC version and connection to the BMC to validate the snmp hash version be a bit excessive? Is there a good reason to do so? Why does the \"Try this, fail with an appropriate error\" not work flow wise?","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"},{"author":{"_account_id":28806,"name":"Shukun Song","display_name":"Shukun Song","email":"song.shukun@jp.fujitsu.com","username":"song"},"change_message_id":"224c27cef0901af110bda461b667ba3cb77d9912","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    if within_version_range(node, SNMP_SHA_AUTH_PROTO_RANGES):"},{"line_number":321,"context_line":"        valid_values[\u0027irmc_snmp_auth_proto\u0027] \u003d [\u0027sha\u0027]"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    for param in SNMP_V3_OPTIONAL_PROPERTIES:"},{"line_number":324,"context_line":"        value \u003d info.get(param, CONF.irmc.get(param[len(\u0027irmc_\u0027):]))"},{"line_number":325,"context_line":"        if value not in valid_values[param]:"},{"line_number":326,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":327,"context_line":"                \"Invalid value %(value)s given for driver info parameter \""},{"line_number":328,"context_line":"                \"%(param)s, the valid values are %(valid_values)s.\") %"},{"line_number":329,"context_line":"                {\u0027param\u0027: param,"},{"line_number":330,"context_line":"                 \u0027value\u0027: value,"},{"line_number":331,"context_line":"                 \u0027valid_values\u0027: valid_values[param]})"},{"line_number":332,"context_line":"        snmp_info[param] \u003d valid_protocols[param].get(value)"},{"line_number":333,"context_line":"        if not snmp_info[param]:"},{"line_number":334,"context_line":"            raise exception.InvalidParameterValue(_("}],"source_content_type":"text/x-python","patch_set":2,"id":"ce338df0_f12e19d0","line":331,"range":{"start_line":323,"start_character":0,"end_line":331,"end_character":54},"in_reply_to":"578921ab_b193aec5","updated":"2022-09-29 11:24:44.000000000","message":"Done","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"},{"author":{"_account_id":28806,"name":"Shukun Song","display_name":"Shukun Song","email":"song.shukun@jp.fujitsu.com","username":"song"},"change_message_id":"2c130d5ce47fd90b5e02fa9a7ca89953d8d4ee3b","unresolved":true,"context_lines":[{"line_number":320,"context_line":"    if within_version_range(node, SNMP_SHA_AUTH_PROTO_RANGES):"},{"line_number":321,"context_line":"        valid_values[\u0027irmc_snmp_auth_proto\u0027] \u003d [\u0027sha\u0027]"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    for param in SNMP_V3_OPTIONAL_PROPERTIES:"},{"line_number":324,"context_line":"        value \u003d info.get(param, CONF.irmc.get(param[len(\u0027irmc_\u0027):]))"},{"line_number":325,"context_line":"        if value not in valid_values[param]:"},{"line_number":326,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":327,"context_line":"                \"Invalid value %(value)s given for driver info parameter \""},{"line_number":328,"context_line":"                \"%(param)s, the valid values are %(valid_values)s.\") %"},{"line_number":329,"context_line":"                {\u0027param\u0027: param,"},{"line_number":330,"context_line":"                 \u0027value\u0027: value,"},{"line_number":331,"context_line":"                 \u0027valid_values\u0027: valid_values[param]})"},{"line_number":332,"context_line":"        snmp_info[param] \u003d valid_protocols[param].get(value)"},{"line_number":333,"context_line":"        if not snmp_info[param]:"},{"line_number":334,"context_line":"            raise exception.InvalidParameterValue(_("}],"source_content_type":"text/x-python","patch_set":2,"id":"578921ab_b193aec5","line":331,"range":{"start_line":323,"start_character":0,"end_line":331,"end_character":54},"in_reply_to":"651e1254_98b199ed","updated":"2022-09-22 10:40:10.000000000","message":"Regarding the complexity of the code (getting the BMC version to check the protocol each time), at first I was worried that the iRMC version would be updated during the process, so I chose to get the latest value every time. \n\nHowever, since in practice we would never update the BMC in the middle of the process, and even if the protocol was supported, it would fail again if it didn\u0027t match the actual configuration, so I agree with you that this code is too complicated.  Furthermore, the cause of communication failure due to wrong protocol can be identified from the error message when actually performing SNMP communication. \n\nTherefore, I will change the code to not check if the value is supported or not, and return an appropriate error message if communication failure happens like you said.","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"73553868e53043574468664caf7cead9f26c5fb8","unresolved":true,"context_lines":[{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        node.set_driver_internal_info(\u0027irmc_fw_version\u0027,"},{"line_number":474,"context_line":"                                      f\"{irmc_os}/{fw_version}\")"},{"line_number":475,"context_line":"        node.save()"},{"line_number":476,"context_line":"        LOG.info(f\"Fetch iRMC FW version of {node.uuid}: \""},{"line_number":477,"context_line":"                 f\"{irmc_os}/{fw_version}\")"},{"line_number":478,"context_line":"    except scci.SCCIError as irmc_exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba629452_2ea95d6c","line":475,"range":{"start_line":475,"start_character":0,"end_line":475,"end_character":19},"updated":"2022-09-16 13:51:14.000000000","message":"From what I can see, the overall method gets called every time. Is there *value* to actually saving it in that case?\n\nWhat is gained? Why do we *really* need to keep it on the node object?","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"},{"author":{"_account_id":28806,"name":"Shukun Song","display_name":"Shukun Song","email":"song.shukun@jp.fujitsu.com","username":"song"},"change_message_id":"224c27cef0901af110bda461b667ba3cb77d9912","unresolved":false,"context_lines":[{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        node.set_driver_internal_info(\u0027irmc_fw_version\u0027,"},{"line_number":474,"context_line":"                                      f\"{irmc_os}/{fw_version}\")"},{"line_number":475,"context_line":"        node.save()"},{"line_number":476,"context_line":"        LOG.info(f\"Fetch iRMC FW version of {node.uuid}: \""},{"line_number":477,"context_line":"                 f\"{irmc_os}/{fw_version}\")"},{"line_number":478,"context_line":"    except scci.SCCIError as irmc_exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"a2515437_90ac4e9b","line":475,"range":{"start_line":475,"start_character":0,"end_line":475,"end_character":19},"in_reply_to":"74f7604c_81d47c67","updated":"2022-09-29 11:24:44.000000000","message":"Done","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"},{"author":{"_account_id":28806,"name":"Shukun Song","display_name":"Shukun Song","email":"song.shukun@jp.fujitsu.com","username":"song"},"change_message_id":"2c130d5ce47fd90b5e02fa9a7ca89953d8d4ee3b","unresolved":true,"context_lines":[{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        node.set_driver_internal_info(\u0027irmc_fw_version\u0027,"},{"line_number":474,"context_line":"                                      f\"{irmc_os}/{fw_version}\")"},{"line_number":475,"context_line":"        node.save()"},{"line_number":476,"context_line":"        LOG.info(f\"Fetch iRMC FW version of {node.uuid}: \""},{"line_number":477,"context_line":"                 f\"{irmc_os}/{fw_version}\")"},{"line_number":478,"context_line":"    except scci.SCCIError as irmc_exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"74f7604c_81d47c67","line":475,"range":{"start_line":475,"start_character":0,"end_line":475,"end_character":19},"in_reply_to":"ba629452_2ea95d6c","updated":"2022-09-22 10:40:10.000000000","message":"As I will change the code to not check if a protocol is valid, this part is unnecessary and will be removed. The next function will also be removed.","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"}],"ironic/drivers/modules/irmc/inspect.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"73553868e53043574468664caf7cead9f26c5fb8","unresolved":true,"context_lines":[{"line_number":103,"context_line":"    :returns: a list of mac addresses."},{"line_number":104,"context_line":"    \"\"\""},{"line_number":105,"context_line":"    d_info \u003d irmc_common.parse_driver_info(node)"},{"line_number":106,"context_line":"    d_info.update(irmc_common.parse_snmp_driver_info(node))"},{"line_number":107,"context_line":"    snmp_client \u003d snmp.SNMPClient("},{"line_number":108,"context_line":"        address\u003dd_info[\u0027irmc_address\u0027],"},{"line_number":109,"context_line":"        port\u003dd_info[\u0027irmc_snmp_port\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"445d348f_65cbf457","line":106,"updated":"2022-09-16 13:51:14.000000000","message":"The calling method already calls this method.\n\nIs there a reason it needs to be called again? Twice per inspection seems excessive, when it was also already called as part of validate... which itself gets called twice.","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"},{"author":{"_account_id":28806,"name":"Shukun Song","display_name":"Shukun Song","email":"song.shukun@jp.fujitsu.com","username":"song"},"change_message_id":"224c27cef0901af110bda461b667ba3cb77d9912","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    :returns: a list of mac addresses."},{"line_number":104,"context_line":"    \"\"\""},{"line_number":105,"context_line":"    d_info \u003d irmc_common.parse_driver_info(node)"},{"line_number":106,"context_line":"    d_info.update(irmc_common.parse_snmp_driver_info(node))"},{"line_number":107,"context_line":"    snmp_client \u003d snmp.SNMPClient("},{"line_number":108,"context_line":"        address\u003dd_info[\u0027irmc_address\u0027],"},{"line_number":109,"context_line":"        port\u003dd_info[\u0027irmc_snmp_port\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"0981535f_9f9d80d3","line":106,"in_reply_to":"445d348f_65cbf457","updated":"2022-09-29 11:24:44.000000000","message":"I have removed this part of code","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"73553868e53043574468664caf7cead9f26c5fb8","unresolved":true,"context_lines":[{"line_number":242,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":243,"context_line":"        \"\"\""},{"line_number":244,"context_line":"        irmc_common.parse_driver_info(task.node)"},{"line_number":245,"context_line":"        irmc_common.parse_snmp_driver_info(task.node)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    @METRICS.timer(\u0027IRMCInspect.inspect_hardware\u0027)"},{"line_number":248,"context_line":"    def inspect_hardware(self, task):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a90cdc2_bb54b1d6","line":245,"range":{"start_line":245,"start_character":0,"end_line":245,"end_character":53},"updated":"2022-09-16 13:51:14.000000000","message":"Is there a reason this needs to be called during introspection validate?","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"},{"author":{"_account_id":28806,"name":"Shukun Song","display_name":"Shukun Song","email":"song.shukun@jp.fujitsu.com","username":"song"},"change_message_id":"224c27cef0901af110bda461b667ba3cb77d9912","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":243,"context_line":"        \"\"\""},{"line_number":244,"context_line":"        irmc_common.parse_driver_info(task.node)"},{"line_number":245,"context_line":"        irmc_common.parse_snmp_driver_info(task.node)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    @METRICS.timer(\u0027IRMCInspect.inspect_hardware\u0027)"},{"line_number":248,"context_line":"    def inspect_hardware(self, task):"}],"source_content_type":"text/x-python","patch_set":2,"id":"8c3e45ef_178b43ef","line":245,"range":{"start_line":245,"start_character":0,"end_line":245,"end_character":53},"in_reply_to":"3a90cdc2_bb54b1d6","updated":"2022-09-29 11:24:44.000000000","message":"I have removed this part of code","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"}],"ironic/drivers/modules/irmc/power.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"73553868e53043574468664caf7cead9f26c5fb8","unresolved":true,"context_lines":[{"line_number":93,"context_line":"    \"\"\""},{"line_number":94,"context_line":"    node \u003d task.node"},{"line_number":95,"context_line":"    d_info \u003d irmc_common.parse_driver_info(node)"},{"line_number":96,"context_line":"    d_info.update(irmc_common.parse_snmp_driver_info(node))"},{"line_number":97,"context_line":"    snmp_client \u003d snmp.SNMPClient("},{"line_number":98,"context_line":"        address\u003dd_info[\u0027irmc_address\u0027],"},{"line_number":99,"context_line":"        port\u003dd_info[\u0027irmc_snmp_port\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"8444f23b_0b58d03f","line":96,"updated":"2022-09-16 13:51:14.000000000","message":"Why does this need to be called before powers state changes?\n\nIn order to reach here, if I have just enrolled the node, I believe this would have been called twice (each validate method), and then introspection (which presently calls it twice on it\u0027s own.\n\nWhich means any deployment of a node, at present, means it gets called at least four times, and if the user requests a reboot through the API, a fifth. This seems excessive, and I think it would really help us why it needs to be executed so aggressively, and why a simpler fail fast approach cannot be taken instead","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"},{"author":{"_account_id":28806,"name":"Shukun Song","display_name":"Shukun Song","email":"song.shukun@jp.fujitsu.com","username":"song"},"change_message_id":"224c27cef0901af110bda461b667ba3cb77d9912","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    \"\"\""},{"line_number":94,"context_line":"    node \u003d task.node"},{"line_number":95,"context_line":"    d_info \u003d irmc_common.parse_driver_info(node)"},{"line_number":96,"context_line":"    d_info.update(irmc_common.parse_snmp_driver_info(node))"},{"line_number":97,"context_line":"    snmp_client \u003d snmp.SNMPClient("},{"line_number":98,"context_line":"        address\u003dd_info[\u0027irmc_address\u0027],"},{"line_number":99,"context_line":"        port\u003dd_info[\u0027irmc_snmp_port\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"e177aa88_840cd521","line":96,"in_reply_to":"8444f23b_0b58d03f","updated":"2022-09-29 11:24:44.000000000","message":"I have removed this part of code","commit_id":"2473deda6b2e236794821760f23ae67f3db034be"}],"ironic/tests/unit/drivers/modules/irmc/test_common.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"73553868e53043574468664caf7cead9f26c5fb8","unresolved":true,"context_lines":[{"line_number":158,"context_line":"        self.assertIn(\u0027irmc_password\u0027, str(e))"},{"line_number":159,"context_line":"        self.assertIn(\u0027irmc_address\u0027, str(e))"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def test_parse_driver_info_invalid_snmp_version(self):"},{"line_number":162,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3x\u0027"},{"line_number":163,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":164,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @mock.patch.object(utils, \u0027is_fips_enabled\u0027,"},{"line_number":167,"context_line":"                       return_value\u003dTrue, autospec\u003dTrue)"},{"line_number":168,"context_line":"    def test_parse_driver_info_invalid_snmp_version_fips(self,"},{"line_number":169,"context_line":"                                                         mock_check_fips):"},{"line_number":170,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":171,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":172,"context_line":"        self.assertEqual(1, mock_check_fips.call_count)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def test_parse_driver_info_invalid_snmp_port(self):"},{"line_number":175,"context_line":"        self.node.driver_info[\u0027irmc_snmp_port\u0027] \u003d \u0027161p\u0027"},{"line_number":176,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":177,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def test_parse_driver_info_invalid_snmp_community(self):"},{"line_number":180,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v2c\u0027"},{"line_number":181,"context_line":"        self.node.driver_info[\u0027irmc_snmp_community\u0027] \u003d 100"},{"line_number":182,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":183,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def test_parse_driver_info_missing_snmp_user(self):"},{"line_number":186,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":187,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":188,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":189,"context_line":"        self.assertRaises(exception.MissingParameterValue,"},{"line_number":190,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def test_parse_driver_info_missing_snmp_auth_password(self):"},{"line_number":193,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":194,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":195,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":196,"context_line":"        self.assertRaises(exception.MissingParameterValue,"},{"line_number":197,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def test_parse_driver_info_missing_snmp_priv_password(self):"},{"line_number":200,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":201,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":202,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":203,"context_line":"        self.assertRaises(exception.MissingParameterValue,"},{"line_number":204,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def test_parse_driver_info_using_snmp_security(self):"},{"line_number":207,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":208,"context_line":"        self.node.driver_info[\u0027irmc_snmp_security\u0027] \u003d \u0027admin0\u0027"},{"line_number":209,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":210,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":211,"context_line":"        info \u003d irmc_common.parse_driver_info(self.node)"},{"line_number":212,"context_line":"        self.assertEqual(\u0027admin0\u0027, info[\u0027irmc_snmp_user\u0027])"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def test_parse_driver_info_invalid_snmp_security(self):"},{"line_number":215,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":216,"context_line":"        self.node.driver_info[\u0027irmc_snmp_security\u0027] \u003d 100"},{"line_number":217,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":218,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":219,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":220,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def test_parse_driver_info_invalid_snmp_user(self):"},{"line_number":223,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":224,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d 100"},{"line_number":225,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":226,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":227,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":228,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def test_parse_driver_info_invalid_snmp_auth_password(self):"},{"line_number":231,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":232,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":233,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d 100"},{"line_number":234,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":235,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":236,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test_parse_driver_info_short_snmp_auth_password(self):"},{"line_number":239,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":240,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":241,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027short\u0027"},{"line_number":242,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":243,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":244,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def test_parse_driver_info_invalid_snmp_priv_password(self):"},{"line_number":247,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":248,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":249,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":250,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d 100"},{"line_number":251,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":252,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def test_parse_driver_info_short_snmp_priv_password(self):"},{"line_number":255,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":256,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":257,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":258,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027short\u0027"},{"line_number":259,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":260,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def test_parse_driver_info_invalid_snmp_auth_proto(self):"},{"line_number":263,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":264,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":265,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":266,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":267,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_proto\u0027] \u003d \u0027invalid\u0027"},{"line_number":268,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":269,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_parse_driver_info_invalid_snmp_priv_proto(self):"},{"line_number":272,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":273,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":274,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":275,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":276,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_proto\u0027] \u003d \u0027invalid\u0027"},{"line_number":277,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":278,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    @mock.patch.object(os.path, \u0027isabs\u0027, return_value\u003dTrue, autospec\u003dTrue)"},{"line_number":281,"context_line":"    @mock.patch.object(os.path, \u0027isdir\u0027, return_value\u003dTrue, autospec\u003dTrue)"},{"line_number":282,"context_line":"    def test_parse_driver_info_dir_path_verify_ca(self, mock_isdir,"}],"source_content_type":"text/x-python","patch_set":2,"id":"00a1c6e5_af44f644","side":"PARENT","line":279,"range":{"start_line":161,"start_character":0,"end_line":279,"end_character":0},"updated":"2022-09-16 13:51:14.000000000","message":"Are these tests just no longer valid?\n\nTests being removed makes me uncomfortable knowing there is a desire to backport this patch.","commit_id":"b796d7b833f5e8589401418e0c4d967bab7a7d81"},{"author":{"_account_id":28806,"name":"Shukun Song","display_name":"Shukun Song","email":"song.shukun@jp.fujitsu.com","username":"song"},"change_message_id":"2c130d5ce47fd90b5e02fa9a7ca89953d8d4ee3b","unresolved":true,"context_lines":[{"line_number":158,"context_line":"        self.assertIn(\u0027irmc_password\u0027, str(e))"},{"line_number":159,"context_line":"        self.assertIn(\u0027irmc_address\u0027, str(e))"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def test_parse_driver_info_invalid_snmp_version(self):"},{"line_number":162,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3x\u0027"},{"line_number":163,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":164,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @mock.patch.object(utils, \u0027is_fips_enabled\u0027,"},{"line_number":167,"context_line":"                       return_value\u003dTrue, autospec\u003dTrue)"},{"line_number":168,"context_line":"    def test_parse_driver_info_invalid_snmp_version_fips(self,"},{"line_number":169,"context_line":"                                                         mock_check_fips):"},{"line_number":170,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":171,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":172,"context_line":"        self.assertEqual(1, mock_check_fips.call_count)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def test_parse_driver_info_invalid_snmp_port(self):"},{"line_number":175,"context_line":"        self.node.driver_info[\u0027irmc_snmp_port\u0027] \u003d \u0027161p\u0027"},{"line_number":176,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":177,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def test_parse_driver_info_invalid_snmp_community(self):"},{"line_number":180,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v2c\u0027"},{"line_number":181,"context_line":"        self.node.driver_info[\u0027irmc_snmp_community\u0027] \u003d 100"},{"line_number":182,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":183,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def test_parse_driver_info_missing_snmp_user(self):"},{"line_number":186,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":187,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":188,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":189,"context_line":"        self.assertRaises(exception.MissingParameterValue,"},{"line_number":190,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def test_parse_driver_info_missing_snmp_auth_password(self):"},{"line_number":193,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":194,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":195,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":196,"context_line":"        self.assertRaises(exception.MissingParameterValue,"},{"line_number":197,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def test_parse_driver_info_missing_snmp_priv_password(self):"},{"line_number":200,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":201,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":202,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":203,"context_line":"        self.assertRaises(exception.MissingParameterValue,"},{"line_number":204,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def test_parse_driver_info_using_snmp_security(self):"},{"line_number":207,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":208,"context_line":"        self.node.driver_info[\u0027irmc_snmp_security\u0027] \u003d \u0027admin0\u0027"},{"line_number":209,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":210,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":211,"context_line":"        info \u003d irmc_common.parse_driver_info(self.node)"},{"line_number":212,"context_line":"        self.assertEqual(\u0027admin0\u0027, info[\u0027irmc_snmp_user\u0027])"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def test_parse_driver_info_invalid_snmp_security(self):"},{"line_number":215,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":216,"context_line":"        self.node.driver_info[\u0027irmc_snmp_security\u0027] \u003d 100"},{"line_number":217,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":218,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":219,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":220,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def test_parse_driver_info_invalid_snmp_user(self):"},{"line_number":223,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":224,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d 100"},{"line_number":225,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":226,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":227,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":228,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def test_parse_driver_info_invalid_snmp_auth_password(self):"},{"line_number":231,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":232,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":233,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d 100"},{"line_number":234,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":235,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":236,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test_parse_driver_info_short_snmp_auth_password(self):"},{"line_number":239,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":240,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":241,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027short\u0027"},{"line_number":242,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":243,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":244,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def test_parse_driver_info_invalid_snmp_priv_password(self):"},{"line_number":247,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":248,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":249,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":250,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d 100"},{"line_number":251,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":252,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def test_parse_driver_info_short_snmp_priv_password(self):"},{"line_number":255,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":256,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":257,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":258,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027short\u0027"},{"line_number":259,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":260,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def test_parse_driver_info_invalid_snmp_auth_proto(self):"},{"line_number":263,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":264,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":265,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":266,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":267,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_proto\u0027] \u003d \u0027invalid\u0027"},{"line_number":268,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":269,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_parse_driver_info_invalid_snmp_priv_proto(self):"},{"line_number":272,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":273,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":274,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":275,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":276,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_proto\u0027] \u003d \u0027invalid\u0027"},{"line_number":277,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":278,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    @mock.patch.object(os.path, \u0027isabs\u0027, return_value\u003dTrue, autospec\u003dTrue)"},{"line_number":281,"context_line":"    @mock.patch.object(os.path, \u0027isdir\u0027, return_value\u003dTrue, autospec\u003dTrue)"},{"line_number":282,"context_line":"    def test_parse_driver_info_dir_path_verify_ca(self, mock_isdir,"}],"source_content_type":"text/x-python","patch_set":2,"id":"94a68f12_bf96d860","side":"PARENT","line":279,"range":{"start_line":161,"start_character":0,"end_line":279,"end_character":0},"in_reply_to":"00a1c6e5_af44f644","updated":"2022-09-22 10:40:10.000000000","message":"The tests here are not removed but renamed, but I will change them back to their origin name as parse_snmp_driver_info no longer need to get irmc firmware version so it no longer need to be separated from parse_driver_info","commit_id":"b796d7b833f5e8589401418e0c4d967bab7a7d81"},{"author":{"_account_id":28806,"name":"Shukun Song","display_name":"Shukun Song","email":"song.shukun@jp.fujitsu.com","username":"song"},"change_message_id":"224c27cef0901af110bda461b667ba3cb77d9912","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        self.assertIn(\u0027irmc_password\u0027, str(e))"},{"line_number":159,"context_line":"        self.assertIn(\u0027irmc_address\u0027, str(e))"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def test_parse_driver_info_invalid_snmp_version(self):"},{"line_number":162,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3x\u0027"},{"line_number":163,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":164,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @mock.patch.object(utils, \u0027is_fips_enabled\u0027,"},{"line_number":167,"context_line":"                       return_value\u003dTrue, autospec\u003dTrue)"},{"line_number":168,"context_line":"    def test_parse_driver_info_invalid_snmp_version_fips(self,"},{"line_number":169,"context_line":"                                                         mock_check_fips):"},{"line_number":170,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":171,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":172,"context_line":"        self.assertEqual(1, mock_check_fips.call_count)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def test_parse_driver_info_invalid_snmp_port(self):"},{"line_number":175,"context_line":"        self.node.driver_info[\u0027irmc_snmp_port\u0027] \u003d \u0027161p\u0027"},{"line_number":176,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":177,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def test_parse_driver_info_invalid_snmp_community(self):"},{"line_number":180,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v2c\u0027"},{"line_number":181,"context_line":"        self.node.driver_info[\u0027irmc_snmp_community\u0027] \u003d 100"},{"line_number":182,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":183,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def test_parse_driver_info_missing_snmp_user(self):"},{"line_number":186,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":187,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":188,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":189,"context_line":"        self.assertRaises(exception.MissingParameterValue,"},{"line_number":190,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def test_parse_driver_info_missing_snmp_auth_password(self):"},{"line_number":193,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":194,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":195,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":196,"context_line":"        self.assertRaises(exception.MissingParameterValue,"},{"line_number":197,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def test_parse_driver_info_missing_snmp_priv_password(self):"},{"line_number":200,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":201,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":202,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":203,"context_line":"        self.assertRaises(exception.MissingParameterValue,"},{"line_number":204,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def test_parse_driver_info_using_snmp_security(self):"},{"line_number":207,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":208,"context_line":"        self.node.driver_info[\u0027irmc_snmp_security\u0027] \u003d \u0027admin0\u0027"},{"line_number":209,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":210,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":211,"context_line":"        info \u003d irmc_common.parse_driver_info(self.node)"},{"line_number":212,"context_line":"        self.assertEqual(\u0027admin0\u0027, info[\u0027irmc_snmp_user\u0027])"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def test_parse_driver_info_invalid_snmp_security(self):"},{"line_number":215,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":216,"context_line":"        self.node.driver_info[\u0027irmc_snmp_security\u0027] \u003d 100"},{"line_number":217,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":218,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":219,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":220,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def test_parse_driver_info_invalid_snmp_user(self):"},{"line_number":223,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":224,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d 100"},{"line_number":225,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":226,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":227,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":228,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def test_parse_driver_info_invalid_snmp_auth_password(self):"},{"line_number":231,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":232,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":233,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d 100"},{"line_number":234,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":235,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":236,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test_parse_driver_info_short_snmp_auth_password(self):"},{"line_number":239,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":240,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":241,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027short\u0027"},{"line_number":242,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":243,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":244,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def test_parse_driver_info_invalid_snmp_priv_password(self):"},{"line_number":247,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":248,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":249,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":250,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d 100"},{"line_number":251,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":252,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def test_parse_driver_info_short_snmp_priv_password(self):"},{"line_number":255,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":256,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":257,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":258,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027short\u0027"},{"line_number":259,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":260,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def test_parse_driver_info_invalid_snmp_auth_proto(self):"},{"line_number":263,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":264,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":265,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":266,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":267,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_proto\u0027] \u003d \u0027invalid\u0027"},{"line_number":268,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":269,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_parse_driver_info_invalid_snmp_priv_proto(self):"},{"line_number":272,"context_line":"        self.node.driver_info[\u0027irmc_snmp_version\u0027] \u003d \u0027v3\u0027"},{"line_number":273,"context_line":"        self.node.driver_info[\u0027irmc_snmp_user\u0027] \u003d \u0027admin0\u0027"},{"line_number":274,"context_line":"        self.node.driver_info[\u0027irmc_snmp_auth_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":275,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_password\u0027] \u003d \u0027valid_key\u0027"},{"line_number":276,"context_line":"        self.node.driver_info[\u0027irmc_snmp_priv_proto\u0027] \u003d \u0027invalid\u0027"},{"line_number":277,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":278,"context_line":"                          irmc_common.parse_driver_info, self.node)"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    @mock.patch.object(os.path, \u0027isabs\u0027, return_value\u003dTrue, autospec\u003dTrue)"},{"line_number":281,"context_line":"    @mock.patch.object(os.path, \u0027isdir\u0027, return_value\u003dTrue, autospec\u003dTrue)"},{"line_number":282,"context_line":"    def test_parse_driver_info_dir_path_verify_ca(self, mock_isdir,"}],"source_content_type":"text/x-python","patch_set":2,"id":"a99d96c5_f6c96b01","side":"PARENT","line":279,"range":{"start_line":161,"start_character":0,"end_line":279,"end_character":0},"in_reply_to":"94a68f12_bf96d860","updated":"2022-09-29 11:24:44.000000000","message":"Done","commit_id":"b796d7b833f5e8589401418e0c4d967bab7a7d81"}]}
