)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"b751bc2721b7391500683494950bc36431cca37e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0cd3647e_b753fe5e","updated":"2022-01-05 16:10:59.000000000","message":"Julia, thanks for the review. I have some questions and comments inline before I make further updates. Please take a look if you have anything to add.","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"faa54f7e3ecb6c2d996c953fc31505c4f88ae0fa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"06a08740_827f7b4a","updated":"2022-01-12 08:55:04.000000000","message":"recheck","commit_id":"0a6153cba0906af6521b22b8c9654fcea4ecaf94"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2f249eb2c86aa23f465dd7fe8395f14fb6dba3b5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c4065fc3_8ad5566f","updated":"2022-01-14 19:04:46.000000000","message":"Question in-line, but also need to walk through it with stronger coffee. So far LGTM.","commit_id":"08114cb2fe6071959905c0802f67227c89da78b6"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"5226f0b2726d6e8faa5a62650f494da2d0818ec1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"08eb64dd_9f941184","updated":"2022-01-17 13:21:59.000000000","message":"recheck","commit_id":"960f10a902a9286b93ab953d96023b8c1d978fe3"}],"doc/source/admin/drivers/redfish.rst":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6c4c3590342a6c536dda02474282b80b864c1fa3","unresolved":true,"context_lines":[{"line_number":419,"context_line":""},{"line_number":420,"context_line":"The ``url`` argument in the firmware image dictionary is mandatory, while the"},{"line_number":421,"context_line":"``checksum``, ``source``, and ``wait`` arguments are optional."},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"For ``url`` currently ``http``, ``https``, ``swift`` and ``file`` schemes are"},{"line_number":424,"context_line":"supported."},{"line_number":425,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"a36c0e39_14f76c6a","line":422,"updated":"2022-01-04 15:23:57.000000000","message":"I have mixed feelings on making checksum checking optional.","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"307fe1ddafeaf86ac5dc1bea04ffdb6aba2c71a4","unresolved":false,"context_lines":[{"line_number":419,"context_line":""},{"line_number":420,"context_line":"The ``url`` argument in the firmware image dictionary is mandatory, while the"},{"line_number":421,"context_line":"``checksum``, ``source``, and ``wait`` arguments are optional."},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"For ``url`` currently ``http``, ``https``, ``swift`` and ``file`` schemes are"},{"line_number":424,"context_line":"supported."},{"line_number":425,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"8816e2ce_6f3d1da0","line":422,"in_reply_to":"8132e744_fcbb0702","updated":"2022-01-07 11:45:22.000000000","message":"Done","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"b751bc2721b7391500683494950bc36431cca37e","unresolved":true,"context_lines":[{"line_number":419,"context_line":""},{"line_number":420,"context_line":"The ``url`` argument in the firmware image dictionary is mandatory, while the"},{"line_number":421,"context_line":"``checksum``, ``source``, and ``wait`` arguments are optional."},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"For ``url`` currently ``http``, ``https``, ``swift`` and ``file`` schemes are"},{"line_number":424,"context_line":"supported."},{"line_number":425,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"8132e744_fcbb0702","line":422,"in_reply_to":"a36c0e39_14f76c6a","updated":"2022-01-05 16:10:59.000000000","message":"ok, let\u0027s make it mandatory. ilo also has it as mandatory.\n\nShould make it mandatory for all cases? Also for those that do not copy from one place to another? If it\u0027s mandatory for all, it\u0027s kind of easier for user not to think about if need to provide it or not and give it for all cases. This, however, will require that upon upgrade users will need to add checksum arg for their existing steps if there are any. Is this OK?","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6c4c3590342a6c536dda02474282b80b864c1fa3","unresolved":true,"context_lines":[{"line_number":422,"context_line":""},{"line_number":423,"context_line":"For ``url`` currently ``http``, ``https``, ``swift`` and ``file`` schemes are"},{"line_number":424,"context_line":"supported."},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"``source`` corresponds to ``[redfish]firmware_source`` and by setting it here,"},{"line_number":427,"context_line":"it is possible to override global setting per firmware image in clean step"},{"line_number":428,"context_line":"arguments."},{"line_number":429,"context_line":""},{"line_number":430,"context_line":""},{"line_number":431,"context_line":".. note::"},{"line_number":432,"context_line":"   At the present time, targets for the firmware update cannot be specified."}],"source_content_type":"text/x-rst","patch_set":1,"id":"a579b0a6_34756f52","line":429,"range":{"start_line":425,"start_character":0,"end_line":429,"end_character":0},"updated":"2022-01-04 15:23:57.000000000","message":"I have mixed feelings on this and think others opinions are likely required here. Step level override which explicitly requires knowledge of how the underlying deployment is configured. Which *can* also create situations where someone copies/pastes examples not entirely understanding the impact of the setting which may, or may not work in an environment.\n\nThat seems like a source of confusion and frustration to me.","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"307fe1ddafeaf86ac5dc1bea04ffdb6aba2c71a4","unresolved":true,"context_lines":[{"line_number":422,"context_line":""},{"line_number":423,"context_line":"For ``url`` currently ``http``, ``https``, ``swift`` and ``file`` schemes are"},{"line_number":424,"context_line":"supported."},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"``source`` corresponds to ``[redfish]firmware_source`` and by setting it here,"},{"line_number":427,"context_line":"it is possible to override global setting per firmware image in clean step"},{"line_number":428,"context_line":"arguments."},{"line_number":429,"context_line":""},{"line_number":430,"context_line":""},{"line_number":431,"context_line":".. note::"},{"line_number":432,"context_line":"   At the present time, targets for the firmware update cannot be specified."}],"source_content_type":"text/x-rst","patch_set":1,"id":"a0b074c4_f742e955","line":429,"range":{"start_line":425,"start_character":0,"end_line":429,"end_character":0},"in_reply_to":"15b1c4ba_8ba96c5c","updated":"2022-01-07 11:45:22.000000000","message":"waiting for more input","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3d2792d481c87814359a18b22afc88f314708563","unresolved":true,"context_lines":[{"line_number":422,"context_line":""},{"line_number":423,"context_line":"For ``url`` currently ``http``, ``https``, ``swift`` and ``file`` schemes are"},{"line_number":424,"context_line":"supported."},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"``source`` corresponds to ``[redfish]firmware_source`` and by setting it here,"},{"line_number":427,"context_line":"it is possible to override global setting per firmware image in clean step"},{"line_number":428,"context_line":"arguments."},{"line_number":429,"context_line":""},{"line_number":430,"context_line":""},{"line_number":431,"context_line":".. note::"},{"line_number":432,"context_line":"   At the present time, targets for the firmware update cannot be specified."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fdb20ccb_6c99b746","line":429,"range":{"start_line":425,"start_character":0,"end_line":429,"end_character":0},"in_reply_to":"a0b074c4_f742e955","updated":"2022-02-14 22:28:32.000000000","message":"I guess, as currently represented it makes sense to just state source and explicitly label it as optional.","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"b751bc2721b7391500683494950bc36431cca37e","unresolved":true,"context_lines":[{"line_number":422,"context_line":""},{"line_number":423,"context_line":"For ``url`` currently ``http``, ``https``, ``swift`` and ``file`` schemes are"},{"line_number":424,"context_line":"supported."},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"``source`` corresponds to ``[redfish]firmware_source`` and by setting it here,"},{"line_number":427,"context_line":"it is possible to override global setting per firmware image in clean step"},{"line_number":428,"context_line":"arguments."},{"line_number":429,"context_line":""},{"line_number":430,"context_line":""},{"line_number":431,"context_line":".. note::"},{"line_number":432,"context_line":"   At the present time, targets for the firmware update cannot be specified."}],"source_content_type":"text/x-rst","patch_set":1,"id":"15b1c4ba_8ba96c5c","line":429,"range":{"start_line":425,"start_character":0,"end_line":429,"end_character":0},"in_reply_to":"a579b0a6_34756f52","updated":"2022-01-05 16:10:59.000000000","message":"this was not in original RFE, but was added after feedback from the first RFE review. Either I misunderstood the requirement or I need to remove this again?\n\nThere is similar approach with other settings that can be overridden per node, e.g., ramdisk_image_download_source.\n\nMaybe it\u0027s not good to have different names with source/firmware_source and should go with firmware_source also in the step (I removed \u0027firmware\u0027 to make it shorter as it was already in context of \u0027firmware_images\u0027)","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"75c6375c5c7631da1a21ce1387917257e8dfeeb1","unresolved":false,"context_lines":[{"line_number":422,"context_line":""},{"line_number":423,"context_line":"For ``url`` currently ``http``, ``https``, ``swift`` and ``file`` schemes are"},{"line_number":424,"context_line":"supported."},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"``source`` corresponds to ``[redfish]firmware_source`` and by setting it here,"},{"line_number":427,"context_line":"it is possible to override global setting per firmware image in clean step"},{"line_number":428,"context_line":"arguments."},{"line_number":429,"context_line":""},{"line_number":430,"context_line":""},{"line_number":431,"context_line":".. note::"},{"line_number":432,"context_line":"   At the present time, targets for the firmware update cannot be specified."}],"source_content_type":"text/x-rst","patch_set":1,"id":"4250524c_df714332","line":429,"range":{"start_line":425,"start_character":0,"end_line":429,"end_character":0},"in_reply_to":"fdb20ccb_6c99b746","updated":"2022-03-01 09:01:52.000000000","message":"it says source is optional on line 389, 416, 421. That should be enough. Here it gives more details what it is.","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"}],"ironic/conf/redfish.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":"6c4c3590342a6c536dda02474282b80b864c1fa3","unresolved":true,"context_lines":[{"line_number":96,"context_line":"                                   \u0027copy to ironic\\\u0027s HTTP server.\u0027)),"},{"line_number":97,"context_line":"                        (\u0027local\u0027, _(\u0027Download from original location and \u0027"},{"line_number":98,"context_line":"                                    \u0027server from ironic\\\u0027s HTTP server.\u0027)),"},{"line_number":99,"context_line":"                        (\u0027swift\u0027, _(\u0027If firmware source URL is also Swift, \u0027"},{"line_number":100,"context_line":"                                    \u0027serve from original location, otherwise \u0027"},{"line_number":101,"context_line":"                                    \u0027copy to ironic\\\u0027s Swift server. \u0027"},{"line_number":102,"context_line":"                                    \u0027Default.\u0027))],"},{"line_number":103,"context_line":"               default\u003d\u0027swift\u0027,"},{"line_number":104,"context_line":"               mutable\u003dTrue,"},{"line_number":105,"context_line":"               help\u003d_(\u0027Specifies how firmware image should be served. Whether \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"330a7f41_0f80229d","line":102,"range":{"start_line":99,"start_character":0,"end_line":102,"end_character":50},"updated":"2022-01-04 15:23:57.000000000","message":"I have a concern. We\u0027re pushing forward on this, to land a what a follow-up patch indicates is broken. https://review.opendev.org/c/openstack/ironic/+/822782/1/doc/source/admin/drivers/idrac.rst\n\nAnd then we\u0027re also setting it as the default, which seems wrong if it doesn\u0027t work. Perhaps, the default be the original behaivor or as close to it as possible and *then* indicate the default is going to change later? Or maybe not require swift as a default.","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"307fe1ddafeaf86ac5dc1bea04ffdb6aba2c71a4","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                                   \u0027copy to ironic\\\u0027s HTTP server.\u0027)),"},{"line_number":97,"context_line":"                        (\u0027local\u0027, _(\u0027Download from original location and \u0027"},{"line_number":98,"context_line":"                                    \u0027server from ironic\\\u0027s HTTP server.\u0027)),"},{"line_number":99,"context_line":"                        (\u0027swift\u0027, _(\u0027If firmware source URL is also Swift, \u0027"},{"line_number":100,"context_line":"                                    \u0027serve from original location, otherwise \u0027"},{"line_number":101,"context_line":"                                    \u0027copy to ironic\\\u0027s Swift server. \u0027"},{"line_number":102,"context_line":"                                    \u0027Default.\u0027))],"},{"line_number":103,"context_line":"               default\u003d\u0027swift\u0027,"},{"line_number":104,"context_line":"               mutable\u003dTrue,"},{"line_number":105,"context_line":"               help\u003d_(\u0027Specifies how firmware image should be served. Whether \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ce8d170a_5df6503d","line":102,"range":{"start_line":99,"start_character":0,"end_line":102,"end_character":50},"in_reply_to":"0c849c45_8ac33073","updated":"2022-01-07 11:45:22.000000000","message":"Done","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"b751bc2721b7391500683494950bc36431cca37e","unresolved":true,"context_lines":[{"line_number":96,"context_line":"                                   \u0027copy to ironic\\\u0027s HTTP server.\u0027)),"},{"line_number":97,"context_line":"                        (\u0027local\u0027, _(\u0027Download from original location and \u0027"},{"line_number":98,"context_line":"                                    \u0027server from ironic\\\u0027s HTTP server.\u0027)),"},{"line_number":99,"context_line":"                        (\u0027swift\u0027, _(\u0027If firmware source URL is also Swift, \u0027"},{"line_number":100,"context_line":"                                    \u0027serve from original location, otherwise \u0027"},{"line_number":101,"context_line":"                                    \u0027copy to ironic\\\u0027s Swift server. \u0027"},{"line_number":102,"context_line":"                                    \u0027Default.\u0027))],"},{"line_number":103,"context_line":"               default\u003d\u0027swift\u0027,"},{"line_number":104,"context_line":"               mutable\u003dTrue,"},{"line_number":105,"context_line":"               help\u003d_(\u0027Specifies how firmware image should be served. Whether \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"0c849c45_8ac33073","line":102,"range":{"start_line":99,"start_character":0,"end_line":102,"end_character":50},"in_reply_to":"330a7f41_0f80229d","updated":"2022-01-05 16:10:59.000000000","message":"that issue is only for iDRAC and this is generic Redfish. AFAIK, other vendors should be OK with Swift.\n\nBut, OK, I will switch this to default \u0027http\u0027 to continue to work the same way for those already using this feature.","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6c4c3590342a6c536dda02474282b80b864c1fa3","unresolved":true,"context_lines":[{"line_number":100,"context_line":"                                    \u0027serve from original location, otherwise \u0027"},{"line_number":101,"context_line":"                                    \u0027copy to ironic\\\u0027s Swift server. \u0027"},{"line_number":102,"context_line":"                                    \u0027Default.\u0027))],"},{"line_number":103,"context_line":"               default\u003d\u0027swift\u0027,"},{"line_number":104,"context_line":"               mutable\u003dTrue,"},{"line_number":105,"context_line":"               help\u003d_(\u0027Specifies how firmware image should be served. Whether \u0027"},{"line_number":106,"context_line":"                      \u0027from its original location using the firmware source \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3576b143_c69b0494","line":103,"range":{"start_line":103,"start_character":0,"end_line":103,"end_character":31},"updated":"2022-01-04 15:23:57.000000000","message":"So this entirely changes the default behavior. It must be in the release note quite verbosely. It also forces us to increment major version.\n\nI kind of object to swift being the default given a solid half of our issues are reported by \"standalone users\" who are not using swift. This just adds an additional configuration burden to be aware of which makes the software harder to use if we ship it with such a default moving forward.","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"307fe1ddafeaf86ac5dc1bea04ffdb6aba2c71a4","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                                    \u0027serve from original location, otherwise \u0027"},{"line_number":101,"context_line":"                                    \u0027copy to ironic\\\u0027s Swift server. \u0027"},{"line_number":102,"context_line":"                                    \u0027Default.\u0027))],"},{"line_number":103,"context_line":"               default\u003d\u0027swift\u0027,"},{"line_number":104,"context_line":"               mutable\u003dTrue,"},{"line_number":105,"context_line":"               help\u003d_(\u0027Specifies how firmware image should be served. Whether \u0027"},{"line_number":106,"context_line":"                      \u0027from its original location using the firmware source \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"100d6e91_d8636053","line":103,"range":{"start_line":103,"start_character":0,"end_line":103,"end_character":31},"in_reply_to":"0af625c1_c5cf03a8","updated":"2022-01-07 11:45:22.000000000","message":"Done","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"b751bc2721b7391500683494950bc36431cca37e","unresolved":true,"context_lines":[{"line_number":100,"context_line":"                                    \u0027serve from original location, otherwise \u0027"},{"line_number":101,"context_line":"                                    \u0027copy to ironic\\\u0027s Swift server. \u0027"},{"line_number":102,"context_line":"                                    \u0027Default.\u0027))],"},{"line_number":103,"context_line":"               default\u003d\u0027swift\u0027,"},{"line_number":104,"context_line":"               mutable\u003dTrue,"},{"line_number":105,"context_line":"               help\u003d_(\u0027Specifies how firmware image should be served. Whether \u0027"},{"line_number":106,"context_line":"                      \u0027from its original location using the firmware source \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"0af625c1_c5cf03a8","line":103,"range":{"start_line":103,"start_character":0,"end_line":103,"end_character":31},"in_reply_to":"3576b143_c69b0494","updated":"2022-01-05 16:10:59.000000000","message":"the reason why I chose swift is because there is [redfish]use_swift\u003dtrue that is used by virtual media. It would be better that by default every feature uses the same location - be it swift/http or smth else.\n\nIf there are issues with swift already being default, then should address it for virtual media boot and possibly other features.\n\nAs mentioned above, I\u0027ll update to default to http to match current behavior, though not entirely sure that swift users will be happy. Maybe now they start reporting issues 😊.","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"}],"ironic/drivers/modules/redfish/firmware_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":"a24535fc26603da60fc1a43b624fcff001507643","unresolved":true,"context_lines":[{"line_number":177,"context_line":"        try:"},{"line_number":178,"context_line":"            os.link(temp_file, staged_path)"},{"line_number":179,"context_line":"            os.chmod(temp_file, CONF.redfish.file_permission)"},{"line_number":180,"context_line":"        except OSError as oserror:"},{"line_number":181,"context_line":"            LOG.debug(\"Could not hardlink file %(temp_file)s to location \""},{"line_number":182,"context_line":"                      \"%(staged_path)s. Will try to copy it. Error: %(error)s\","},{"line_number":183,"context_line":"                      {\u0027temp_file\u0027: temp_file, \u0027staged_path\u0027: staged_path,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9128a7a6_1a3ef33d","line":180,"updated":"2022-01-14 19:03:04.000000000","message":"is the fallback because you can\u0027t hardlink across filesystem mounts?","commit_id":"08114cb2fe6071959905c0802f67227c89da78b6"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"61daa94d3a23e2b605fb4f1177d2c3b566f55cbc","unresolved":true,"context_lines":[{"line_number":177,"context_line":"        try:"},{"line_number":178,"context_line":"            os.link(temp_file, staged_path)"},{"line_number":179,"context_line":"            os.chmod(temp_file, CONF.redfish.file_permission)"},{"line_number":180,"context_line":"        except OSError as oserror:"},{"line_number":181,"context_line":"            LOG.debug(\"Could not hardlink file %(temp_file)s to location \""},{"line_number":182,"context_line":"                      \"%(staged_path)s. Will try to copy it. Error: %(error)s\","},{"line_number":183,"context_line":"                      {\u0027temp_file\u0027: temp_file, \u0027staged_path\u0027: staged_path,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fcf31bd8_c12b140b","line":180,"in_reply_to":"9128a7a6_1a3ef33d","updated":"2022-01-17 08:32:35.000000000","message":"it\u0027s following image_utils pattern [1] that has same/similar workflow. I\u0027m guessing that\u0027s for systems not supporting symlinks.\n\n[1] https://opendev.org/openstack/ironic/src/commit/097ec2f8eefec6ac8ae3bbc547d5b9975b9750ba/ironic/drivers/modules/image_utils.py#L212","commit_id":"08114cb2fe6071959905c0802f67227c89da78b6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3d2792d481c87814359a18b22afc88f314708563","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        try:"},{"line_number":178,"context_line":"            os.link(temp_file, staged_path)"},{"line_number":179,"context_line":"            os.chmod(temp_file, CONF.redfish.file_permission)"},{"line_number":180,"context_line":"        except OSError as oserror:"},{"line_number":181,"context_line":"            LOG.debug(\"Could not hardlink file %(temp_file)s to location \""},{"line_number":182,"context_line":"                      \"%(staged_path)s. Will try to copy it. Error: %(error)s\","},{"line_number":183,"context_line":"                      {\u0027temp_file\u0027: temp_file, \u0027staged_path\u0027: staged_path,"}],"source_content_type":"text/x-python","patch_set":5,"id":"f0bdb2f5_baae3aff","line":180,"in_reply_to":"fcf31bd8_c12b140b","updated":"2022-02-14 22:28:32.000000000","message":"Okay, so the method actually does a hard link, but you can\u0027t cross filesystem mount points with hard links, which is where symlinks come in as they are relative redirections to other filesystems.\nAnyway, thanks!","commit_id":"08114cb2fe6071959905c0802f67227c89da78b6"}],"ironic/drivers/modules/redfish/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":"6c4c3590342a6c536dda02474282b80b864c1fa3","unresolved":true,"context_lines":[{"line_number":1066,"context_line":"                return temp_url, None"},{"line_number":1067,"context_line":""},{"line_number":1068,"context_line":"            # For remaining, download the image to temporary location"},{"line_number":1069,"context_line":"            temp_file \u003d firmware_utils.download_to_temp(node, url)"},{"line_number":1070,"context_line":""},{"line_number":1071,"context_line":"            firmware_utils.verify_checksum("},{"line_number":1072,"context_line":"                node, firmware_update.get(\u0027checksum\u0027), temp_file)"}],"source_content_type":"text/x-python","patch_set":1,"id":"688b8ce1_792ad567","line":1069,"range":{"start_line":1069,"start_character":0,"end_line":1069,"end_character":66},"updated":"2022-01-04 15:23:57.000000000","message":"So if we\u0027re downloading the asset and we\u0027re adding a checksum parameter, would it be better security wise to check/enforce checksums?","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"b751bc2721b7391500683494950bc36431cca37e","unresolved":true,"context_lines":[{"line_number":1066,"context_line":"                return temp_url, None"},{"line_number":1067,"context_line":""},{"line_number":1068,"context_line":"            # For remaining, download the image to temporary location"},{"line_number":1069,"context_line":"            temp_file \u003d firmware_utils.download_to_temp(node, url)"},{"line_number":1070,"context_line":""},{"line_number":1071,"context_line":"            firmware_utils.verify_checksum("},{"line_number":1072,"context_line":"                node, firmware_update.get(\u0027checksum\u0027), temp_file)"}],"source_content_type":"text/x-python","patch_set":1,"id":"99f2378f_db583b7d","line":1069,"range":{"start_line":1069,"start_character":0,"end_line":1069,"end_character":66},"in_reply_to":"688b8ce1_792ad567","updated":"2022-01-05 16:10:59.000000000","message":"as mentioned in doc file, will make it mandatory.","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"307fe1ddafeaf86ac5dc1bea04ffdb6aba2c71a4","unresolved":false,"context_lines":[{"line_number":1066,"context_line":"                return temp_url, None"},{"line_number":1067,"context_line":""},{"line_number":1068,"context_line":"            # For remaining, download the image to temporary location"},{"line_number":1069,"context_line":"            temp_file \u003d firmware_utils.download_to_temp(node, url)"},{"line_number":1070,"context_line":""},{"line_number":1071,"context_line":"            firmware_utils.verify_checksum("},{"line_number":1072,"context_line":"                node, firmware_update.get(\u0027checksum\u0027), temp_file)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fbeeb451_9c964a74","line":1069,"range":{"start_line":1069,"start_character":0,"end_line":1069,"end_character":66},"in_reply_to":"99f2378f_db583b7d","updated":"2022-01-07 11:45:22.000000000","message":"Done","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"}],"releasenotes/notes/add-more-sources-redfish-firmware-update-3da89f10dc0f8d21.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":"6c4c3590342a6c536dda02474282b80b864c1fa3","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds more options to serve and stage files for ``redfish`` hardware type"},{"line_number":5,"context_line":"    and management interface ``firmware_update`` clean step. Now it is possible"},{"line_number":6,"context_line":"    to serve files from Swift, HTTP service and file system that can be staged"},{"line_number":7,"context_line":"    from Ironic\u0027s HTTP or Swift service. Includes option to verify checksum"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7c4fb3d8_807e50aa","line":4,"range":{"start_line":4,"start_character":9,"end_line":4,"end_character":61},"updated":"2022-01-04 15:23:57.000000000","message":"So, most people will only actually read the first line of what is rendered to understand what the feature is. I feel like saying \"Adds more options\" doesn\u0027t really convey what has changed where as the additional details are below.","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"307fe1ddafeaf86ac5dc1bea04ffdb6aba2c71a4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds more options to serve and stage files for ``redfish`` hardware type"},{"line_number":5,"context_line":"    and management interface ``firmware_update`` clean step. Now it is possible"},{"line_number":6,"context_line":"    to serve files from Swift, HTTP service and file system that can be staged"},{"line_number":7,"context_line":"    from Ironic\u0027s HTTP or Swift service. Includes option to verify checksum"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"5777a4d9_6e39d54f","line":4,"range":{"start_line":4,"start_character":9,"end_line":4,"end_character":61},"in_reply_to":"7c4fb3d8_807e50aa","updated":"2022-01-07 11:45:22.000000000","message":"Done","commit_id":"dbef694553f8ea4d9502af37f1dddeb451cd0f57"}]}
