)]}'
{"/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":"6ad043eb41e8031481c925772163168b61be2d0e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"[WIP] Add import, export configuration to idrac-redfish"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Depends-On: https://review.opendev.org/#/c/759425/"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I10dbc30614d8654dda540ffaa5e61e7a9f03c7b3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f65232a_2d63971c","line":10,"updated":"2020-10-23 19:33:13.000000000","message":"You\u0027ll want story and task tags here. :)","commit_id":"fe5bfafaf6623e91e459eecc98076e832b7ceb69"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"b2e09344c1280065f8a18178270d0968c7cf97f0","unresolved":false,"context_lines":[{"line_number":7,"context_line":"[WIP] Add import, export configuration to idrac-redfish"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Depends-On: https://review.opendev.org/#/c/759425/"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I10dbc30614d8654dda540ffaa5e61e7a9f03c7b3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"2da01d4d_ebdb993e","line":10,"in_reply_to":"3f65232a_2d63971c","updated":"2021-01-20 10:25:59.000000000","message":"done","commit_id":"fe5bfafaf6623e91e459eecc98076e832b7ceb69"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":15,"context_line":"Task: 40622"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Depends-On: https://review.opendev.org/#/c/759425/"},{"line_number":18,"context_line":"Depends-On: https://review.opendev.org/#/c/770614/"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I10dbc30614d8654dda540ffaa5e61e7a9f03c7b3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"385cd602_7fea78a4","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":50},"updated":"2021-03-11 23:19:32.000000000","message":"Remove this line, it is semi-implied by the prior line and the chained relationship.","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Task: 40622"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Depends-On: https://review.opendev.org/#/c/759425/"},{"line_number":18,"context_line":"Depends-On: https://review.opendev.org/#/c/770614/"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I10dbc30614d8654dda540ffaa5e61e7a9f03c7b3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"b9480a32_7c3c24dc","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":50},"in_reply_to":"385cd602_7fea78a4","updated":"2021-03-17 17:40:52.000000000","message":"Done","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e15a3f95084de4eeacef81bd5180f8f68c03f49a","unresolved":true,"context_lines":[{"line_number":14,"context_line":"Story: 2003594"},{"line_number":15,"context_line":"Task: 40622"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Depends-On: https://review.opendev.org/#/c/759425/"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I10dbc30614d8654dda540ffaa5e61e7a9f03c7b3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"c322b507_f03964ae","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":50},"updated":"2021-03-18 14:25:10.000000000","message":"FYI This patch is still open.","commit_id":"9aec0fb2f17d8775a84af8d2422b9ca39c683a8c"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"b88ed71253214fe00fa0856caf305f7eee38c189","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Story: 2003594"},{"line_number":15,"context_line":"Task: 40622"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Depends-On: https://review.opendev.org/#/c/759425/"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I10dbc30614d8654dda540ffaa5e61e7a9f03c7b3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ac9cbb89_385a40ba","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":50},"in_reply_to":"c322b507_f03964ae","updated":"2021-03-19 16:04:56.000000000","message":"Done","commit_id":"9aec0fb2f17d8775a84af8d2422b9ca39c683a8c"}],"driver-requirements.txt":[{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"b88ed71253214fe00fa0856caf305f7eee38c189","unresolved":true,"context_lines":[{"line_number":20,"context_line":"python-ibmcclient\u003e\u003d0.2.2,\u003c0.3.0"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Dell EMC iDRAC sushy OEM extension"},{"line_number":23,"context_line":"sushy-oem-idrac\u003e\u003d2.0.0,\u003c3.0.0"}],"source_content_type":"text/plain","patch_set":6,"id":"c5a3c817_5532d82d","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":29},"updated":"2021-03-19 16:04:56.000000000","message":"added here as soon to be released; until then driver libs tests will fail.\nRichard, please recheck this patch, once you\u0027ve released.","commit_id":"de226586c3301dd693bbb42b2513e397df4d62c9"}],"ironic/drivers/modules/drac/management.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":"6ad043eb41e8031481c925772163168b61be2d0e","unresolved":false,"context_lines":[{"line_number":308,"context_line":"    \"\"\"iDRAC Redfish interface for management-related actions.\"\"\""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    EXPORT_CONFIGURATION_ARGSINFO \u003d {"},{"line_number":311,"context_line":"        \"configuration_full_path\": {"},{"line_number":312,"context_line":"            \"description\": \"Full path of file to save the configuration to.\","},{"line_number":313,"context_line":"            \"required\": True,"},{"line_number":314,"context_line":"        }"},{"line_number":315,"context_line":"    }"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    IMPORT_CONFIGURATION_ARGSINFO \u003d {"},{"line_number":318,"context_line":"        \"configuration_full_path\": {"},{"line_number":319,"context_line":"            \"description\": \"Full path of file to use the configuration from.\","},{"line_number":320,"context_line":"            \"required\": True,"},{"line_number":321,"context_line":"        }"},{"line_number":322,"context_line":"    }"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    IMPORT_EXPORT_CONFIGURATION_ARGSINFO \u003d {"},{"line_number":325,"context_line":"        \"import_configuration_full_path\": {"},{"line_number":326,"context_line":"            \"description\": \"Full path of file to save the configuration to.\","},{"line_number":327,"context_line":"            \"required\": True"},{"line_number":328,"context_line":"        },"},{"line_number":329,"context_line":"        \"export_configuration_full_path\": {"},{"line_number":330,"context_line":"            \"description\": \"Full path of file to use the configuration from.\","},{"line_number":331,"context_line":"            \"required\": True"},{"line_number":332,"context_line":"        }"},{"line_number":333,"context_line":"    }"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    @base.deploy_step(priority\u003d0, argsinfo\u003dEXPORT_CONFIGURATION_ARGSINFO)"},{"line_number":336,"context_line":"    @base.clean_step(priority\u003d0, argsinfo\u003dEXPORT_CONFIGURATION_ARGSINFO)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_6db8ef75","line":333,"range":{"start_line":311,"start_character":0,"end_line":333,"end_character":5},"updated":"2020-10-23 19:33:13.000000000","message":"The full path cannot be used because the conductor can be operating as a privileged process and potentially place content on the disk in locations that are inappropriate or an attacker could potentially request content from an inappropriate location allowing themselves to possibly from from compromising the application to compromising the entire system.\n\nWhat may be an option is to allow file name or reference or something that is not an absolute path on disk, and _then_ sanitize the provided input to prevent escape attempts.\n\n{\"export_configuration\": \"../../tmp/../etc/shadow\"}","commit_id":"fe5bfafaf6623e91e459eecc98076e832b7ceb69"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"2ea4c74a5f618c0f5f1329fabc4bf15149e91340","unresolved":false,"context_lines":[{"line_number":308,"context_line":"    \"\"\"iDRAC Redfish interface for management-related actions.\"\"\""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    EXPORT_CONFIGURATION_ARGSINFO \u003d {"},{"line_number":311,"context_line":"        \"configuration_full_path\": {"},{"line_number":312,"context_line":"            \"description\": \"Full path of file to save the configuration to.\","},{"line_number":313,"context_line":"            \"required\": True,"},{"line_number":314,"context_line":"        }"},{"line_number":315,"context_line":"    }"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    IMPORT_CONFIGURATION_ARGSINFO \u003d {"},{"line_number":318,"context_line":"        \"configuration_full_path\": {"},{"line_number":319,"context_line":"            \"description\": \"Full path of file to use the configuration from.\","},{"line_number":320,"context_line":"            \"required\": True,"},{"line_number":321,"context_line":"        }"},{"line_number":322,"context_line":"    }"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    IMPORT_EXPORT_CONFIGURATION_ARGSINFO \u003d {"},{"line_number":325,"context_line":"        \"import_configuration_full_path\": {"},{"line_number":326,"context_line":"            \"description\": \"Full path of file to save the configuration to.\","},{"line_number":327,"context_line":"            \"required\": True"},{"line_number":328,"context_line":"        },"},{"line_number":329,"context_line":"        \"export_configuration_full_path\": {"},{"line_number":330,"context_line":"            \"description\": \"Full path of file to use the configuration from.\","},{"line_number":331,"context_line":"            \"required\": True"},{"line_number":332,"context_line":"        }"},{"line_number":333,"context_line":"    }"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    @base.deploy_step(priority\u003d0, argsinfo\u003dEXPORT_CONFIGURATION_ARGSINFO)"},{"line_number":336,"context_line":"    @base.clean_step(priority\u003d0, argsinfo\u003dEXPORT_CONFIGURATION_ARGSINFO)"}],"source_content_type":"text/x-python","patch_set":1,"id":"b4375d8a_b0e65425","line":333,"range":{"start_line":311,"start_character":0,"end_line":333,"end_character":5},"in_reply_to":"3f65232a_6db8ef75","updated":"2021-01-08 14:43:14.000000000","message":"Storage moved to another patch - https://review.opendev.org/c/openstack/ironic/+/769928; filesytem not used there.","commit_id":"fe5bfafaf6623e91e459eecc98076e832b7ceb69"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":319,"context_line":"    }"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    IMPORT_CONFIGURATION_ARGSINFO \u003d {"},{"line_number":322,"context_line":"        \"configuration_location\": {"},{"line_number":323,"context_line":"            \"description\": \"URL of location to fetch desired configuration \""},{"line_number":324,"context_line":"                           \"from.\","},{"line_number":325,"context_line":"            \"required\": True,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ee5d11b8_7c35ebde","line":322,"updated":"2021-03-11 23:19:32.000000000","message":"It might be less confusing and cleaner in the grand scheme of the universe to use the same paramter name.","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"04dd307ac830ebaedd2047295f9b502ed8e2a128","unresolved":false,"context_lines":[{"line_number":319,"context_line":"    }"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    IMPORT_CONFIGURATION_ARGSINFO \u003d {"},{"line_number":322,"context_line":"        \"configuration_location\": {"},{"line_number":323,"context_line":"            \"description\": \"URL of location to fetch desired configuration \""},{"line_number":324,"context_line":"                           \"from.\","},{"line_number":325,"context_line":"            \"required\": True,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a8e23b8_3df0c35e","line":322,"in_reply_to":"88305e44_243d6441","updated":"2021-03-18 10:08:22.000000000","message":"Done","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":true,"context_lines":[{"line_number":319,"context_line":"    }"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    IMPORT_CONFIGURATION_ARGSINFO \u003d {"},{"line_number":322,"context_line":"        \"configuration_location\": {"},{"line_number":323,"context_line":"            \"description\": \"URL of location to fetch desired configuration \""},{"line_number":324,"context_line":"                           \"from.\","},{"line_number":325,"context_line":"            \"required\": True,"}],"source_content_type":"text/x-python","patch_set":3,"id":"88305e44_243d6441","line":322,"in_reply_to":"ee5d11b8_7c35ebde","updated":"2021-03-17 17:40:52.000000000","message":"to clarify - to have here import_configuration_location and above export_configuration_location in order to match the names below?","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":335,"context_line":"        \"export_configuration_location\": {"},{"line_number":336,"context_line":"            \"description\": \"URL of location to save the configuration to.\","},{"line_number":337,"context_line":"            \"required\": True"},{"line_number":338,"context_line":"        }"},{"line_number":339,"context_line":"    }"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    @base.deploy_step(priority\u003d0, argsinfo\u003dEXPORT_CONFIGURATION_ARGSINFO)"}],"source_content_type":"text/x-python","patch_set":3,"id":"e5869c51_7a17cb2a","line":338,"updated":"2021-03-11 23:19:32.000000000","message":"This is going to sounds like a nitpick, but maybe composite this together so you define each item, and then create combined one from both?\n\nJust so text stays consistent, at least in the long run.","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":true,"context_lines":[{"line_number":335,"context_line":"        \"export_configuration_location\": {"},{"line_number":336,"context_line":"            \"description\": \"URL of location to save the configuration to.\","},{"line_number":337,"context_line":"            \"required\": True"},{"line_number":338,"context_line":"        }"},{"line_number":339,"context_line":"    }"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    @base.deploy_step(priority\u003d0, argsinfo\u003dEXPORT_CONFIGURATION_ARGSINFO)"}],"source_content_type":"text/x-python","patch_set":3,"id":"e6c892a9_6e3fae70","line":338,"in_reply_to":"e5869c51_7a17cb2a","updated":"2021-03-17 17:40:52.000000000","message":"ok, would be possible if amending the names.","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"04dd307ac830ebaedd2047295f9b502ed8e2a128","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        \"export_configuration_location\": {"},{"line_number":336,"context_line":"            \"description\": \"URL of location to save the configuration to.\","},{"line_number":337,"context_line":"            \"required\": True"},{"line_number":338,"context_line":"        }"},{"line_number":339,"context_line":"    }"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    @base.deploy_step(priority\u003d0, argsinfo\u003dEXPORT_CONFIGURATION_ARGSINFO)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5bdf46_05981d47","line":338,"in_reply_to":"e6c892a9_6e3fae70","updated":"2021-03-18 10:08:22.000000000","message":"Done","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":361,"context_line":"        \"\"\""},{"line_number":362,"context_line":"        if not configuration_location:"},{"line_number":363,"context_line":"            raise exception.MissingParameterValue(\u0027Configuration location \u0027"},{"line_number":364,"context_line":"                                                  \u0027missing\u0027)"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        system \u003d redfish_utils.get_system(task.node)"},{"line_number":367,"context_line":"        configuration \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"306a39b6_02c0d981","line":364,"updated":"2021-03-11 23:19:32.000000000","message":"Two items, this goes through translation so the string should be wrapped in _() and the actual string should include the name of the parameter which is missing. \"Parameter configuration_location is missing and required.\"","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":false,"context_lines":[{"line_number":361,"context_line":"        \"\"\""},{"line_number":362,"context_line":"        if not configuration_location:"},{"line_number":363,"context_line":"            raise exception.MissingParameterValue(\u0027Configuration location \u0027"},{"line_number":364,"context_line":"                                                  \u0027missing\u0027)"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        system \u003d redfish_utils.get_system(task.node)"},{"line_number":367,"context_line":"        configuration \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"9d22316a_ace56518","line":364,"in_reply_to":"306a39b6_02c0d981","updated":"2021-03-17 17:40:52.000000000","message":"Done","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        if not system.managers:"},{"line_number":370,"context_line":"            raise exception.DracOperationError("},{"line_number":371,"context_line":"                error\u003d(\"No managers found for %(node)s\","},{"line_number":372,"context_line":"                       {\u0027node\u0027: task.node.uuid}))"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        for manager in system.managers:"}],"source_content_type":"text/x-python","patch_set":3,"id":"d68290e2_86d2c300","line":371,"range":{"start_line":371,"start_character":22,"end_line":371,"end_character":56},"updated":"2021-03-11 23:19:32.000000000","message":"i18n please :) i.e. _(\"string %(value)s\")","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":false,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        if not system.managers:"},{"line_number":370,"context_line":"            raise exception.DracOperationError("},{"line_number":371,"context_line":"                error\u003d(\"No managers found for %(node)s\","},{"line_number":372,"context_line":"                       {\u0027node\u0027: task.node.uuid}))"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        for manager in system.managers:"}],"source_content_type":"text/x-python","patch_set":3,"id":"e8e6163f_c415a31f","line":371,"range":{"start_line":371,"start_character":22,"end_line":371,"end_character":56},"in_reply_to":"d68290e2_86d2c300","updated":"2021-03-17 17:40:52.000000000","message":"Done","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":411,"context_line":"                                                 configuration)"},{"line_number":412,"context_line":"        else:"},{"line_number":413,"context_line":"            raise exception.DracOperationError("},{"line_number":414,"context_line":"                error\u003d(\"No configuration exported for node %(node)s\","},{"line_number":415,"context_line":"                       {\u0027node\u0027: task.node.uuid}))"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    @base.deploy_step(priority\u003d0, argsinfo\u003dIMPORT_CONFIGURATION_ARGSINFO)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f48ab67_d052f90b","line":414,"range":{"start_line":414,"start_character":22,"end_line":414,"end_character":69},"updated":"2021-03-11 23:19:32.000000000","message":"i18n since I\u0027m 95% sure this gets returned as an error which is api consumer visible.","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                                                 configuration)"},{"line_number":412,"context_line":"        else:"},{"line_number":413,"context_line":"            raise exception.DracOperationError("},{"line_number":414,"context_line":"                error\u003d(\"No configuration exported for node %(node)s\","},{"line_number":415,"context_line":"                       {\u0027node\u0027: task.node.uuid}))"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    @base.deploy_step(priority\u003d0, argsinfo\u003dIMPORT_CONFIGURATION_ARGSINFO)"}],"source_content_type":"text/x-python","patch_set":3,"id":"c30a9074_21258aa7","line":414,"range":{"start_line":414,"start_character":22,"end_line":414,"end_character":69},"in_reply_to":"7f48ab67_d052f90b","updated":"2021-03-17 17:40:52.000000000","message":"Done","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":431,"context_line":"            to fetch the configuration from"},{"line_number":432,"context_line":"        \"\"\""},{"line_number":433,"context_line":"        if not configuration_location:"},{"line_number":434,"context_line":"            raise exception.MissingParameterValue(\u0027Configuration name missing\u0027)"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"        configuration \u003d driver_utils.get_configuration_mold("},{"line_number":437,"context_line":"            task.node, configuration_location)"}],"source_content_type":"text/x-python","patch_set":3,"id":"c6614d33_13430417","line":434,"range":{"start_line":434,"start_character":51,"end_line":434,"end_character":79},"updated":"2021-03-11 23:19:32.000000000","message":"Same item as above regarding the missing parameter value.","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":false,"context_lines":[{"line_number":431,"context_line":"            to fetch the configuration from"},{"line_number":432,"context_line":"        \"\"\""},{"line_number":433,"context_line":"        if not configuration_location:"},{"line_number":434,"context_line":"            raise exception.MissingParameterValue(\u0027Configuration name missing\u0027)"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"        configuration \u003d driver_utils.get_configuration_mold("},{"line_number":437,"context_line":"            task.node, configuration_location)"}],"source_content_type":"text/x-python","patch_set":3,"id":"172b174b_d7f4cbb4","line":434,"range":{"start_line":434,"start_character":51,"end_line":434,"end_character":79},"in_reply_to":"c6614d33_13430417","updated":"2021-03-17 17:40:52.000000000","message":"Done","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":437,"context_line":"            task.node, configuration_location)"},{"line_number":438,"context_line":"        if not configuration:"},{"line_number":439,"context_line":"            raise exception.DracOperationError("},{"line_number":440,"context_line":"                error\u003d(\"No configuration found for node %(node)s by name \""},{"line_number":441,"context_line":"                       \"%(configuration_name)s\","},{"line_number":442,"context_line":"                       {\u0027node\u0027: task.node.uuid,"},{"line_number":443,"context_line":"                        \u0027configuration_name\u0027: configuration_location}))"},{"line_number":444,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"b81bed80_da4343e7","line":441,"range":{"start_line":440,"start_character":23,"end_line":441,"end_character":47},"updated":"2021-03-11 23:19:32.000000000","message":"i18n","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":false,"context_lines":[{"line_number":437,"context_line":"            task.node, configuration_location)"},{"line_number":438,"context_line":"        if not configuration:"},{"line_number":439,"context_line":"            raise exception.DracOperationError("},{"line_number":440,"context_line":"                error\u003d(\"No configuration found for node %(node)s by name \""},{"line_number":441,"context_line":"                       \"%(configuration_name)s\","},{"line_number":442,"context_line":"                       {\u0027node\u0027: task.node.uuid,"},{"line_number":443,"context_line":"                        \u0027configuration_name\u0027: configuration_location}))"},{"line_number":444,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"2be89809_35fa5254","line":441,"range":{"start_line":440,"start_character":23,"end_line":441,"end_character":47},"in_reply_to":"b81bed80_da4343e7","updated":"2021-03-17 17:40:52.000000000","message":"Done","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":445,"context_line":"        interface \u003d configuration[\"oem\"][\"interface\"]"},{"line_number":446,"context_line":"        if interface !\u003d \"idrac-redfish\":"},{"line_number":447,"context_line":"            raise exception.DracOperationError("},{"line_number":448,"context_line":"                error\u003d(\"Invalid configuration for node %(node)s \""},{"line_number":449,"context_line":"                       \"in %(configuration_name)s. Supports only \""},{"line_number":450,"context_line":"                       \"idrac-redfish, but found %(interface)s\","},{"line_number":451,"context_line":"                       {\u0027node\u0027: task.node.uuid,"},{"line_number":452,"context_line":"                        \u0027configuration_name\u0027: configuration_location,"},{"line_number":453,"context_line":"                        \u0027interface\u0027: interface}))"}],"source_content_type":"text/x-python","patch_set":3,"id":"24b6e0b3_3989b024","line":450,"range":{"start_line":448,"start_character":23,"end_line":450,"end_character":64},"updated":"2021-03-11 23:19:32.000000000","message":"i18n","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":false,"context_lines":[{"line_number":445,"context_line":"        interface \u003d configuration[\"oem\"][\"interface\"]"},{"line_number":446,"context_line":"        if interface !\u003d \"idrac-redfish\":"},{"line_number":447,"context_line":"            raise exception.DracOperationError("},{"line_number":448,"context_line":"                error\u003d(\"Invalid configuration for node %(node)s \""},{"line_number":449,"context_line":"                       \"in %(configuration_name)s. Supports only \""},{"line_number":450,"context_line":"                       \"idrac-redfish, but found %(interface)s\","},{"line_number":451,"context_line":"                       {\u0027node\u0027: task.node.uuid,"},{"line_number":452,"context_line":"                        \u0027configuration_name\u0027: configuration_location,"},{"line_number":453,"context_line":"                        \u0027interface\u0027: interface}))"}],"source_content_type":"text/x-python","patch_set":3,"id":"d40e220c_7960414e","line":450,"range":{"start_line":448,"start_character":23,"end_line":450,"end_character":64},"in_reply_to":"24b6e0b3_3989b024","updated":"2021-03-17 17:40:52.000000000","message":"Done","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":459,"context_line":"                error\u003d(\"No managers found for %(node)s\","},{"line_number":460,"context_line":"                       {\u0027node\u0027: task.node.uuid}))"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        for manager in system.managers:"},{"line_number":463,"context_line":"            try:"},{"line_number":464,"context_line":"                manager_oem \u003d manager.get_oem_extension(\u0027Dell\u0027)"},{"line_number":465,"context_line":"            except sushy.exceptions.OEMExtensionNotFoundError as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"513eedf0_b6f99d36","line":462,"range":{"start_line":462,"start_character":8,"end_line":462,"end_character":39},"updated":"2021-03-11 23:19:32.000000000","message":"Nice touch, is this an expected condition? If so, how does one know they are capturing the correct machine? How do we know we got the right machine? More curious than anything else.","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":false,"context_lines":[{"line_number":459,"context_line":"                error\u003d(\"No managers found for %(node)s\","},{"line_number":460,"context_line":"                       {\u0027node\u0027: task.node.uuid}))"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        for manager in system.managers:"},{"line_number":463,"context_line":"            try:"},{"line_number":464,"context_line":"                manager_oem \u003d manager.get_oem_extension(\u0027Dell\u0027)"},{"line_number":465,"context_line":"            except sushy.exceptions.OEMExtensionNotFoundError as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"42c5ded0_baa997e4","line":462,"range":{"start_line":462,"start_character":8,"end_line":462,"end_character":39},"in_reply_to":"513eedf0_b6f99d36","updated":"2021-03-17 17:40:52.000000000","message":"Ack; will look into this. This pattern is \"inherited\" from virtual media boot, the first OEM extension, and re-used for other cases, not only here, but it needs revisiting and see if utility can be created for all cases to avoid repetition.","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":484,"context_line":"                    skip_current_step\u003dTrue,"},{"line_number":485,"context_line":"                    polling\u003dTrue)"},{"line_number":486,"context_line":"                deploy_opts \u003d deploy_utils.build_agent_options(task.node)"},{"line_number":487,"context_line":"                task.driver.boot.prepare_ramdisk(task, deploy_opts)"},{"line_number":488,"context_line":"                manager_utils.node_power_action(task, states.REBOOT)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"                return deploy_utils.get_async_step_return_state(task.node)"}],"source_content_type":"text/x-python","patch_set":3,"id":"12d0cca7_c8e75465","line":487,"updated":"2021-03-11 23:19:32.000000000","message":"Why are we preparing the ramdisk? I ask because preparing it may cause a re-download to occur *and* we call manager_utils.node_set_boot_device to PXE. This may be redundant in the end... Or it could be necessary.   Just thinking through it, I\u0027d add a comment in the code explaining why, which I\u0027m guessing is \"The imported template overrides the boot mode config, and we need the node to come back in the ramdisk (Or at least kind of want it to).\"\n\n...\n\nAlternatively maybe just set it to PXE?! I don\u0027t know.","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":false,"context_lines":[{"line_number":484,"context_line":"                    skip_current_step\u003dTrue,"},{"line_number":485,"context_line":"                    polling\u003dTrue)"},{"line_number":486,"context_line":"                deploy_opts \u003d deploy_utils.build_agent_options(task.node)"},{"line_number":487,"context_line":"                task.driver.boot.prepare_ramdisk(task, deploy_opts)"},{"line_number":488,"context_line":"                manager_utils.node_power_action(task, states.REBOOT)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"                return deploy_utils.get_async_step_return_state(task.node)"}],"source_content_type":"text/x-python","patch_set":3,"id":"4fa497cc_08efe9b0","line":487,"in_reply_to":"12d0cca7_c8e75465","updated":"2021-03-17 17:40:52.000000000","message":"this is not new to ironic, used also in redfish, ilo.\n\nNecessary for steps that reboot the system. Without this, the system may not boot back into IPA, because that was one time setting. Without booting back to IPA, next steps can fail if they need IPA (deploy steps especially).\n(This will not be necessary if/when this step is added to support and run in IPA-free manual cleaning, but that\u0027s for future).\n\nCan\u0027t set PXE directly as it could be virtual media boot.","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":502,"context_line":"                continue"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        raise exception.DracOperationError("},{"line_number":505,"context_line":"            error\u003d(\"Failed to import configuration for node %(node)s\","},{"line_number":506,"context_line":"                   {\u0027node\u0027: task.node.uuid}))"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    @base.clean_step(priority\u003d0,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5be282fe_5f650796","line":505,"range":{"start_line":505,"start_character":19,"end_line":505,"end_character":70},"updated":"2021-03-11 23:19:32.000000000","message":"i18n","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":false,"context_lines":[{"line_number":502,"context_line":"                continue"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        raise exception.DracOperationError("},{"line_number":505,"context_line":"            error\u003d(\"Failed to import configuration for node %(node)s\","},{"line_number":506,"context_line":"                   {\u0027node\u0027: task.node.uuid}))"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    @base.clean_step(priority\u003d0,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f00fbd2_f1e1dd6f","line":505,"range":{"start_line":505,"start_character":19,"end_line":505,"end_character":70},"in_reply_to":"5be282fe_5f650796","updated":"2021-03-17 17:40:52.000000000","message":"Done","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":594,"context_line":"                          \u0027task_monitor_url\u0027: task_monitor_url})"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"                # If import executed as part of import_export_configuration"},{"line_number":597,"context_line":"                if (\u0027export_config_loc\u0027"},{"line_number":598,"context_line":"                        in node.driver_internal_info):"},{"line_number":599,"context_line":"                    # then do sync export configuration before finishing"},{"line_number":600,"context_line":"                    loc \u003d node.driver_internal_info.get(\u0027export_config_loc\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"a9dbec1d_b02f14d0","line":597,"updated":"2021-03-11 23:19:32.000000000","message":"it is likely cleaner to just attempt to get the location instead of perform the search and then get the value. i.e. set the loc variable and then do \"if loc\"","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":false,"context_lines":[{"line_number":594,"context_line":"                          \u0027task_monitor_url\u0027: task_monitor_url})"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"                # If import executed as part of import_export_configuration"},{"line_number":597,"context_line":"                if (\u0027export_config_loc\u0027"},{"line_number":598,"context_line":"                        in node.driver_internal_info):"},{"line_number":599,"context_line":"                    # then do sync export configuration before finishing"},{"line_number":600,"context_line":"                    loc \u003d node.driver_internal_info.get(\u0027export_config_loc\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9647c652_dec0f72c","line":597,"in_reply_to":"a9dbec1d_b02f14d0","updated":"2021-03-17 17:40:52.000000000","message":"Done","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    def _cleanup_export_substep(self, node):"},{"line_number":647,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":648,"context_line":"        driver_internal_info.pop(\u0027export_config_loc\u0027, None)"},{"line_number":649,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":650,"context_line":"        node.save()"},{"line_number":651,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"a3004175_5a9d9088","line":648,"range":{"start_line":648,"start_character":34,"end_line":648,"end_character":52},"updated":"2021-03-11 23:19:32.000000000","message":"This is kind of nitpicky but it would help readability. Could a full parameter name be used?\n\nIf the worry is about line length, the pattern is typically d_ii \u003d node.driver_internal_info to keep the variable name kind of short while editing the dictionary.","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":false,"context_lines":[{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    def _cleanup_export_substep(self, node):"},{"line_number":647,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":648,"context_line":"        driver_internal_info.pop(\u0027export_config_loc\u0027, None)"},{"line_number":649,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":650,"context_line":"        node.save()"},{"line_number":651,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"37c371cd_af510e4a","line":648,"range":{"start_line":648,"start_character":34,"end_line":648,"end_character":52},"in_reply_to":"a3004175_5a9d9088","updated":"2021-03-17 17:40:52.000000000","message":"Done","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":647,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":648,"context_line":"        driver_internal_info.pop(\u0027export_config_loc\u0027, None)"},{"line_number":649,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":650,"context_line":"        node.save()"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"class DracWSManManagement(base.ManagementInterface):"}],"source_content_type":"text/x-python","patch_set":3,"id":"32fb8868_449b517c","line":650,"updated":"2021-03-11 23:19:32.000000000","message":"I\u0027m wondering if all of the save()\u0027s are needed. Specifically because while data is changing, the task successfully wrapping things up is going to save things as well, and each save is an interaction with the database.","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":true,"context_lines":[{"line_number":647,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":648,"context_line":"        driver_internal_info.pop(\u0027export_config_loc\u0027, None)"},{"line_number":649,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":650,"context_line":"        node.save()"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"class DracWSManManagement(base.ManagementInterface):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7bc544fb_45d4443a","line":650,"in_reply_to":"32fb8868_449b517c","updated":"2021-03-17 17:40:52.000000000","message":"have to check, currently in this class there is no save afterwards, so better keep it for now.","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e15a3f95084de4eeacef81bd5180f8f68c03f49a","unresolved":true,"context_lines":[{"line_number":327,"context_line":"    }"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    IMPORT_EXPORT_CONFIGURATION_ARGSINFO \u003d {**EXPORT_CONFIGURATION_ARGSINFO,"},{"line_number":330,"context_line":"                                            **IMPORT_CONFIGURATION_ARGSINFO}"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    @base.deploy_step(priority\u003d0, argsinfo\u003dEXPORT_CONFIGURATION_ARGSINFO)"},{"line_number":333,"context_line":"    @base.clean_step(priority\u003d0, argsinfo\u003dEXPORT_CONFIGURATION_ARGSINFO)"}],"source_content_type":"text/x-python","patch_set":5,"id":"154c7cb8_1867fee7","line":330,"range":{"start_line":330,"start_character":44,"end_line":330,"end_character":46},"updated":"2021-03-18 14:25:10.000000000","message":"I\u0027m not sure you need to do this...","commit_id":"9aec0fb2f17d8775a84af8d2422b9ca39c683a8c"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"b88ed71253214fe00fa0856caf305f7eee38c189","unresolved":true,"context_lines":[{"line_number":327,"context_line":"    }"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    IMPORT_EXPORT_CONFIGURATION_ARGSINFO \u003d {**EXPORT_CONFIGURATION_ARGSINFO,"},{"line_number":330,"context_line":"                                            **IMPORT_CONFIGURATION_ARGSINFO}"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    @base.deploy_step(priority\u003d0, argsinfo\u003dEXPORT_CONFIGURATION_ARGSINFO)"},{"line_number":333,"context_line":"    @base.clean_step(priority\u003d0, argsinfo\u003dEXPORT_CONFIGURATION_ARGSINFO)"}],"source_content_type":"text/x-python","patch_set":5,"id":"4352955c_01b7927e","line":330,"range":{"start_line":330,"start_character":44,"end_line":330,"end_character":46},"in_reply_to":"154c7cb8_1867fee7","updated":"2021-03-19 16:04:56.000000000","message":"without this, it does not work. Any other suggestions?","commit_id":"9aec0fb2f17d8775a84af8d2422b9ca39c683a8c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e15a3f95084de4eeacef81bd5180f8f68c03f49a","unresolved":true,"context_lines":[{"line_number":584,"context_line":""},{"line_number":585,"context_line":"                # If import executed as part of import_export_configuration"},{"line_number":586,"context_line":"                export_configuration_location \u003d\\"},{"line_number":587,"context_line":"                    info.get(\u0027export_configuration_location\u0027)"},{"line_number":588,"context_line":"                if export_configuration_location:"},{"line_number":589,"context_line":"                    # then do sync export configuration before finishing"},{"line_number":590,"context_line":"                    self._cleanup_export_substep(node)"}],"source_content_type":"text/x-python","patch_set":5,"id":"e78f121e_49c4f7d0","line":587,"updated":"2021-03-18 14:25:10.000000000","message":"So the node.save from line 575 likely ought to move here, that way we\u0027re not doing extra saves on all of the other paths on succss/failure.","commit_id":"9aec0fb2f17d8775a84af8d2422b9ca39c683a8c"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"b88ed71253214fe00fa0856caf305f7eee38c189","unresolved":false,"context_lines":[{"line_number":584,"context_line":""},{"line_number":585,"context_line":"                # If import executed as part of import_export_configuration"},{"line_number":586,"context_line":"                export_configuration_location \u003d\\"},{"line_number":587,"context_line":"                    info.get(\u0027export_configuration_location\u0027)"},{"line_number":588,"context_line":"                if export_configuration_location:"},{"line_number":589,"context_line":"                    # then do sync export configuration before finishing"},{"line_number":590,"context_line":"                    self._cleanup_export_substep(node)"}],"source_content_type":"text/x-python","patch_set":5,"id":"a57a3687_6679dea4","line":587,"in_reply_to":"e78f121e_49c4f7d0","updated":"2021-03-19 16:04:56.000000000","message":"moved to ln 616","commit_id":"9aec0fb2f17d8775a84af8d2422b9ca39c683a8c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e15a3f95084de4eeacef81bd5180f8f68c03f49a","unresolved":true,"context_lines":[{"line_number":619,"context_line":"            LOG.debug(\u0027Import configuration %(task_monitor_url)s in progress \u0027"},{"line_number":620,"context_line":"                      \u0027for node %(node)s\u0027,"},{"line_number":621,"context_line":"                      {\u0027node\u0027: node.uuid,"},{"line_number":622,"context_line":"                       \u0027task_monitor_url\u0027: task_monitor_url})"},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"    def _set_success(self, task):"},{"line_number":625,"context_line":"        if task.node.clean_step:"}],"source_content_type":"text/x-python","patch_set":5,"id":"58f67583_414e2059","line":622,"updated":"2021-03-18 14:25:10.000000000","message":"Likely need a node.save() here if moved off of line 575. Database load is a huge thing and repeated un-needed saves are not helping DB performance overall since it is much more taxing for the database to save records.","commit_id":"9aec0fb2f17d8775a84af8d2422b9ca39c683a8c"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"b88ed71253214fe00fa0856caf305f7eee38c189","unresolved":false,"context_lines":[{"line_number":619,"context_line":"            LOG.debug(\u0027Import configuration %(task_monitor_url)s in progress \u0027"},{"line_number":620,"context_line":"                      \u0027for node %(node)s\u0027,"},{"line_number":621,"context_line":"                      {\u0027node\u0027: node.uuid,"},{"line_number":622,"context_line":"                       \u0027task_monitor_url\u0027: task_monitor_url})"},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"    def _set_success(self, task):"},{"line_number":625,"context_line":"        if task.node.clean_step:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ae5cafbf_0c98c9ff","line":622,"in_reply_to":"58f67583_414e2059","updated":"2021-03-19 16:04:56.000000000","message":"moved to 616, here it would save even if there are no changes made when task is still processing.","commit_id":"9aec0fb2f17d8775a84af8d2422b9ca39c683a8c"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"64a3ba6eee3ec9af71cc9f06767070066c822a45","unresolved":true,"context_lines":[{"line_number":312,"context_line":"    \"\"\"iDRAC Redfish interface for management-related actions.\"\"\""},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    EXPORT_CONFIGURATION_ARGSINFO \u003d {"},{"line_number":315,"context_line":"        \"export_configuration_location\": {"},{"line_number":316,"context_line":"            \"description\": \"URL of location to save the configuration to.\","},{"line_number":317,"context_line":"            \"required\": True,"},{"line_number":318,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":8,"id":"1861712e_5bfc2373","line":315,"range":{"start_line":315,"start_character":8,"end_line":315,"end_character":41},"updated":"2021-03-23 18:11:59.000000000","message":"fixed the names after renaming","commit_id":"30f44e679c37ebb35d98239e275b069e967e0501"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fa548ba71e02ee2d60face9dafdf45e16714f9b7","unresolved":true,"context_lines":[{"line_number":341,"context_line":"        library to get ALL configuration for cloning."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        :param task: A task from TaskManager."},{"line_number":344,"context_line":"        :param export_configuration_location: URL of location to save the"},{"line_number":345,"context_line":"            configuration to."},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        :raises: MissingParameterValue if missing configuration name of a file"}],"source_content_type":"text/x-python","patch_set":8,"id":"23660770_179352d4","line":344,"updated":"2021-03-29 09:54:29.000000000","message":"I know the ship has long sailed on this one, but requiring a storage instead of just providing the configuration verbatim is a potential road blocker. For example, it will complicate (or likely make it impossible) to use molds in metal3.","commit_id":"30f44e679c37ebb35d98239e275b069e967e0501"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"692120887851c9c029119f4db2e9e10c7a2fe39d","unresolved":true,"context_lines":[{"line_number":341,"context_line":"        library to get ALL configuration for cloning."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        :param task: A task from TaskManager."},{"line_number":344,"context_line":"        :param export_configuration_location: URL of location to save the"},{"line_number":345,"context_line":"            configuration to."},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        :raises: MissingParameterValue if missing configuration name of a file"}],"source_content_type":"text/x-python","patch_set":8,"id":"b0d8f119_1a70d216","line":344,"in_reply_to":"23660770_179352d4","updated":"2021-03-29 16:38:17.000000000","message":"inline config molds can be added in future releases besides this external storage. Inline for import would work OK, but have to think about what to do with export - clean steps don\u0027t have any output (storing on node could be an option, but not ideal).","commit_id":"30f44e679c37ebb35d98239e275b069e967e0501"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"af9648ef9381edef332b6660e0cf31ca56253cfc","unresolved":true,"context_lines":[{"line_number":530,"context_line":"    def _query_import_configuration_status(self, manager, context):"},{"line_number":531,"context_line":"        \"\"\"Period job to check import configuration task.\"\"\""},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        filters \u003d {\u0027reserved\u0027: False, \u0027maintenance\u0027: False}"},{"line_number":534,"context_line":"        fields \u003d [\u0027driver_internal_info\u0027]"},{"line_number":535,"context_line":"        node_list \u003d manager.iter_nodes(fields\u003dfields, filters\u003dfilters)"},{"line_number":536,"context_line":"        for (node_uuid, driver, conductor_group,"}],"source_content_type":"text/x-python","patch_set":8,"id":"0ffdbb58_ca0e6521","line":533,"updated":"2021-03-24 15:28:59.000000000","message":"We really should limit this down further somehow... :\\","commit_id":"30f44e679c37ebb35d98239e275b069e967e0501"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cca25512b26c5c2e56ba6e4352a2ba6b3a6829fc","unresolved":true,"context_lines":[{"line_number":329,"context_line":"    IMPORT_EXPORT_CONFIGURATION_ARGSINFO \u003d {**EXPORT_CONFIGURATION_ARGSINFO,"},{"line_number":330,"context_line":"                                            **IMPORT_CONFIGURATION_ARGSINFO}"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    @base.deploy_step(priority\u003d0, argsinfo\u003dEXPORT_CONFIGURATION_ARGSINFO)"},{"line_number":333,"context_line":"    @base.clean_step(priority\u003d0, argsinfo\u003dEXPORT_CONFIGURATION_ARGSINFO)"},{"line_number":334,"context_line":"    def export_configuration(self, task, export_configuration_location):"},{"line_number":335,"context_line":"        \"\"\"Export the configuration of the server."}],"source_content_type":"text/x-python","patch_set":9,"id":"a466d0aa_af0a8f90","line":332,"updated":"2021-03-30 14:07:11.000000000","message":"nit: I wonder why anybody would use export as a deploy step..","commit_id":"457d0cd70bdb02b37cb8cd87c13d51bee1a7e8cb"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"5c6819e7bfd9217c24fcc0ec39d3344b1bd85bc1","unresolved":false,"context_lines":[{"line_number":329,"context_line":"    IMPORT_EXPORT_CONFIGURATION_ARGSINFO \u003d {**EXPORT_CONFIGURATION_ARGSINFO,"},{"line_number":330,"context_line":"                                            **IMPORT_CONFIGURATION_ARGSINFO}"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    @base.deploy_step(priority\u003d0, argsinfo\u003dEXPORT_CONFIGURATION_ARGSINFO)"},{"line_number":333,"context_line":"    @base.clean_step(priority\u003d0, argsinfo\u003dEXPORT_CONFIGURATION_ARGSINFO)"},{"line_number":334,"context_line":"    def export_configuration(self, task, export_configuration_location):"},{"line_number":335,"context_line":"        \"\"\"Export the configuration of the server."}],"source_content_type":"text/x-python","patch_set":9,"id":"15976120_3f7d6ef4","line":332,"in_reply_to":"a466d0aa_af0a8f90","updated":"2021-04-01 07:22:56.000000000","message":"could use as last deploy step to get inventory after all the deployment","commit_id":"457d0cd70bdb02b37cb8cd87c13d51bee1a7e8cb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cca25512b26c5c2e56ba6e4352a2ba6b3a6829fc","unresolved":true,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        if not system.managers:"},{"line_number":361,"context_line":"            raise exception.DracOperationError("},{"line_number":362,"context_line":"                error\u003d(_(\"No managers found for %(node)s\"),"},{"line_number":363,"context_line":"                       {\u0027node\u0027: task.node.uuid}))"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        for manager in system.managers:"}],"source_content_type":"text/x-python","patch_set":9,"id":"21fb00bf_207e1076","line":362,"updated":"2021-03-30 14:07:11.000000000","message":"You\u0027re creating a tuple, you need % instead of , (commas only work in logging)","commit_id":"457d0cd70bdb02b37cb8cd87c13d51bee1a7e8cb"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"5c6819e7bfd9217c24fcc0ec39d3344b1bd85bc1","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        if not system.managers:"},{"line_number":361,"context_line":"            raise exception.DracOperationError("},{"line_number":362,"context_line":"                error\u003d(_(\"No managers found for %(node)s\"),"},{"line_number":363,"context_line":"                       {\u0027node\u0027: task.node.uuid}))"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        for manager in system.managers:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3cb15a43_92eb6b39","line":362,"in_reply_to":"21fb00bf_207e1076","updated":"2021-04-01 07:22:56.000000000","message":"Done","commit_id":"457d0cd70bdb02b37cb8cd87c13d51bee1a7e8cb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cca25512b26c5c2e56ba6e4352a2ba6b3a6829fc","unresolved":true,"context_lines":[{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        if not system.managers:"},{"line_number":448,"context_line":"            raise exception.DracOperationError("},{"line_number":449,"context_line":"                error\u003d(_(\"No managers found for %(node)s\"),"},{"line_number":450,"context_line":"                       {\u0027node\u0027: task.node.uuid}))"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        for manager in system.managers:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5268a1bb_d198ef37","line":449,"updated":"2021-03-30 14:07:11.000000000","message":"ditto","commit_id":"457d0cd70bdb02b37cb8cd87c13d51bee1a7e8cb"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"5c6819e7bfd9217c24fcc0ec39d3344b1bd85bc1","unresolved":false,"context_lines":[{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        if not system.managers:"},{"line_number":448,"context_line":"            raise exception.DracOperationError("},{"line_number":449,"context_line":"                error\u003d(_(\"No managers found for %(node)s\"),"},{"line_number":450,"context_line":"                       {\u0027node\u0027: task.node.uuid}))"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        for manager in system.managers:"}],"source_content_type":"text/x-python","patch_set":9,"id":"7dcbeb5b_720d6418","line":449,"in_reply_to":"5268a1bb_d198ef37","updated":"2021-04-01 07:22:56.000000000","message":"Done","commit_id":"457d0cd70bdb02b37cb8cd87c13d51bee1a7e8cb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cca25512b26c5c2e56ba6e4352a2ba6b3a6829fc","unresolved":true,"context_lines":[{"line_number":475,"context_line":"                    polling\u003dTrue)"},{"line_number":476,"context_line":"                deploy_opts \u003d deploy_utils.build_agent_options(task.node)"},{"line_number":477,"context_line":"                task.driver.boot.prepare_ramdisk(task, deploy_opts)"},{"line_number":478,"context_line":"                manager_utils.node_power_action(task, states.REBOOT)"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"                return deploy_utils.get_async_step_return_state(task.node)"},{"line_number":481,"context_line":"            except sushy.exceptions.SushyError as e:"}],"source_content_type":"text/x-python","patch_set":9,"id":"a7e681bd_876132ad","line":478,"updated":"2021-03-30 14:07:11.000000000","message":"Thinking aloud: we need a helper function for this pattern.","commit_id":"457d0cd70bdb02b37cb8cd87c13d51bee1a7e8cb"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"5c6819e7bfd9217c24fcc0ec39d3344b1bd85bc1","unresolved":false,"context_lines":[{"line_number":475,"context_line":"                    polling\u003dTrue)"},{"line_number":476,"context_line":"                deploy_opts \u003d deploy_utils.build_agent_options(task.node)"},{"line_number":477,"context_line":"                task.driver.boot.prepare_ramdisk(task, deploy_opts)"},{"line_number":478,"context_line":"                manager_utils.node_power_action(task, states.REBOOT)"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"                return deploy_utils.get_async_step_return_state(task.node)"},{"line_number":481,"context_line":"            except sushy.exceptions.SushyError as e:"}],"source_content_type":"text/x-python","patch_set":9,"id":"a2a92863_5d1d441f","line":478,"in_reply_to":"a7e681bd_876132ad","updated":"2021-04-01 07:22:56.000000000","message":"can look into that. Also when steps are supporting IPA-free mode, then prepare_ramdisk is not necessary. That handling could be part of helper function (thinking aloud).","commit_id":"457d0cd70bdb02b37cb8cd87c13d51bee1a7e8cb"}],"ironic/drivers/utils.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":"6ad043eb41e8031481c925772163168b61be2d0e","unresolved":false,"context_lines":[{"line_number":370,"context_line":"                      {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"def save_configuration(name, data):"},{"line_number":374,"context_line":"    \"\"\"Store configuration"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"    :param name: Full path of the configuration item to save to."}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_4dbd3364","line":373,"updated":"2020-10-23 19:33:13.000000000","message":"It might be better to just explicitly call this method what it does, saves json in intended dumped format, however you wish to explain that.","commit_id":"fe5bfafaf6623e91e459eecc98076e832b7ceb69"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"2ea4c74a5f618c0f5f1329fabc4bf15149e91340","unresolved":false,"context_lines":[{"line_number":370,"context_line":"                      {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"def save_configuration(name, data):"},{"line_number":374,"context_line":"    \"\"\"Store configuration"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"    :param name: Full path of the configuration item to save to."}],"source_content_type":"text/x-python","patch_set":1,"id":"357e7eb7_318331c2","line":373,"in_reply_to":"3f65232a_4dbd3364","updated":"2021-01-08 14:43:14.000000000","message":"in the patch the similar name is kept as it uses conf mold storage setting names, but sure can generalize this if we agreed on the names of CONF properties that are not conf mold specific.","commit_id":"fe5bfafaf6623e91e459eecc98076e832b7ceb69"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6ad043eb41e8031481c925772163168b61be2d0e","unresolved":false,"context_lines":[{"line_number":377,"context_line":"    :param data: Content of the data to save."},{"line_number":378,"context_line":"    \"\"\""},{"line_number":379,"context_line":"    with open(name, \"w\") as f:"},{"line_number":380,"context_line":"        f.write(json.dumps(data, indent\u003d2))"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"def get_configuration(name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_8dae2b2c","line":380,"updated":"2020-10-23 19:33:13.000000000","message":"indented for human readability?","commit_id":"fe5bfafaf6623e91e459eecc98076e832b7ceb69"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"2ea4c74a5f618c0f5f1329fabc4bf15149e91340","unresolved":false,"context_lines":[{"line_number":377,"context_line":"    :param data: Content of the data to save."},{"line_number":378,"context_line":"    \"\"\""},{"line_number":379,"context_line":"    with open(name, \"w\") as f:"},{"line_number":380,"context_line":"        f.write(json.dumps(data, indent\u003d2))"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"def get_configuration(name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"eaff23b2_4a62707c","line":380,"in_reply_to":"3f65232a_8dae2b2c","updated":"2021-01-08 14:43:14.000000000","message":"yes","commit_id":"fe5bfafaf6623e91e459eecc98076e832b7ceb69"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6ad043eb41e8031481c925772163168b61be2d0e","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        f.write(json.dumps(data, indent\u003d2))"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"def get_configuration(name):"},{"line_number":384,"context_line":"    \"\"\"Gets configuration"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    :param name: Full path of the configuration item to get."}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_0d197bd6","line":383,"updated":"2020-10-23 19:33:13.000000000","message":"fwiw, this allows any path to be retried, functionally this method, as written could just be \"read_json_file_from_disk(name)\"","commit_id":"fe5bfafaf6623e91e459eecc98076e832b7ceb69"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"2ea4c74a5f618c0f5f1329fabc4bf15149e91340","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        f.write(json.dumps(data, indent\u003d2))"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"def get_configuration(name):"},{"line_number":384,"context_line":"    \"\"\"Gets configuration"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    :param name: Full path of the configuration item to get."}],"source_content_type":"text/x-python","patch_set":1,"id":"d7a0ee2f_b20afe8f","line":383,"in_reply_to":"3f65232a_0d197bd6","updated":"2021-01-08 14:43:14.000000000","message":"ditto save_configuration","commit_id":"fe5bfafaf6623e91e459eecc98076e832b7ceb69"}],"ironic/tests/unit/drivers/modules/drac/test_management.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":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":1236,"context_line":"        mock_import_task \u003d mock.Mock()"},{"line_number":1237,"context_line":"        mock_import_task.task_state \u003d sushy.TASK_STATE_COMPLETED"},{"line_number":1238,"context_line":"        mock_import_task.task_status \u003d \u0027Failed\u0027"},{"line_number":1239,"context_line":"        type(mock_import_task).messages \u003d messages"},{"line_number":1240,"context_line":"        mock_task_monitor \u003d mock.Mock()"},{"line_number":1241,"context_line":"        mock_task_monitor.is_processing \u003d False"},{"line_number":1242,"context_line":"        mock_task_monitor.get_task.return_value \u003d mock_import_task"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a255a3d_38f27487","line":1239,"range":{"start_line":1239,"start_character":8,"end_line":1239,"end_character":50},"updated":"2021-03-11 23:19:32.000000000","message":"Huh?","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":false,"context_lines":[{"line_number":1236,"context_line":"        mock_import_task \u003d mock.Mock()"},{"line_number":1237,"context_line":"        mock_import_task.task_state \u003d sushy.TASK_STATE_COMPLETED"},{"line_number":1238,"context_line":"        mock_import_task.task_status \u003d \u0027Failed\u0027"},{"line_number":1239,"context_line":"        type(mock_import_task).messages \u003d messages"},{"line_number":1240,"context_line":"        mock_task_monitor \u003d mock.Mock()"},{"line_number":1241,"context_line":"        mock_task_monitor.is_processing \u003d False"},{"line_number":1242,"context_line":"        mock_task_monitor.get_task.return_value \u003d mock_import_task"}],"source_content_type":"text/x-python","patch_set":3,"id":"d3415e21_0744297f","line":1239,"range":{"start_line":1239,"start_character":8,"end_line":1239,"end_character":50},"in_reply_to":"7a255a3d_38f27487","updated":"2021-03-17 17:40:52.000000000","message":"there was something, but does not make sense. Fixed.","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cca25512b26c5c2e56ba6e4352a2ba6b3a6829fc","unresolved":true,"context_lines":[{"line_number":862,"context_line":"        fake_manager1.get_oem_extension.side_effect \u003d ("},{"line_number":863,"context_line":"            sushy.exceptions.OEMExtensionNotFoundError)"},{"line_number":864,"context_line":"        fake_system \u003d mock.Mock(managers\u003d[fake_manager1])"},{"line_number":865,"context_line":"        mock_get_system.return_value \u003d fake_system"},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"        self.assertRaises(exception.RedfishError,"},{"line_number":868,"context_line":"                          self.management.export_configuration, task, \u0027edge\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"b6588787_9eec92cd","line":865,"updated":"2021-03-30 14:07:11.000000000","message":"nit: The pattern\n\n some_mock.return_value \u003d another_mock\n\nis nearly always suboptimal. The return_value is already a mock, just use it:\n\n some_mock.return_value.managers \u003d [..]","commit_id":"457d0cd70bdb02b37cb8cd87c13d51bee1a7e8cb"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"5c6819e7bfd9217c24fcc0ec39d3344b1bd85bc1","unresolved":false,"context_lines":[{"line_number":862,"context_line":"        fake_manager1.get_oem_extension.side_effect \u003d ("},{"line_number":863,"context_line":"            sushy.exceptions.OEMExtensionNotFoundError)"},{"line_number":864,"context_line":"        fake_system \u003d mock.Mock(managers\u003d[fake_manager1])"},{"line_number":865,"context_line":"        mock_get_system.return_value \u003d fake_system"},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"        self.assertRaises(exception.RedfishError,"},{"line_number":868,"context_line":"                          self.management.export_configuration, task, \u0027edge\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"b6051f26_e4f89753","line":865,"in_reply_to":"b6588787_9eec92cd","updated":"2021-04-01 07:22:56.000000000","message":"Done","commit_id":"457d0cd70bdb02b37cb8cd87c13d51bee1a7e8cb"}],"releasenotes/notes/add-config-mold-steps-idrac-1773d81953209964.yaml":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"efc4a12d9587789eb3cc2db8d7de0dc3b30525a7","unresolved":true,"context_lines":[{"line_number":5,"context_line":"    ``import_export_configuration`` steps to ``idrac-redfish`` management"},{"line_number":6,"context_line":"    interface. These steps allow to use configuration from another system as"},{"line_number":7,"context_line":"    template and replicate that configuration to other, similarly capable,"},{"line_number":8,"context_line":"    systems."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"cc980239_6069953d","line":8,"updated":"2021-03-11 23:19:32.000000000","message":"Cool, lets note the version of sushy-oem-idrac that is required for this. \n\nThis is a hint, BTW :)  I can explain it in IRC when I\u0027ve had coffee.","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d2b5cf9e916205ecd2360d8237198e884b7989af","unresolved":true,"context_lines":[{"line_number":5,"context_line":"    ``import_export_configuration`` steps to ``idrac-redfish`` management"},{"line_number":6,"context_line":"    interface. These steps allow to use configuration from another system as"},{"line_number":7,"context_line":"    template and replicate that configuration to other, similarly capable,"},{"line_number":8,"context_line":"    systems."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"f9a37d46_17ed82b9","line":8,"in_reply_to":"cc980239_6069953d","updated":"2021-03-17 17:40:52.000000000","message":"still todo","commit_id":"f3a525614ad290ab1e6ff2c316692dbf3a188f7d"}]}
