)]}'
{"/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":"440c7d6486effc312e8e02209f862994f83d3444","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2018-07-31 06:41:25 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Configuring mellanox interfaces using ironic python agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Icfaffd7c58c3c73c3fa28cfc2a6c954d2c93c16e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f7c97a3_017944f9","line":8,"updated":"2018-07-31 20:10:30.000000000","message":"Do we have a story # for this?","commit_id":"1d88a74241522b8df782033134772a968a30699c"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"9cbf76fbdc6ffab195165b4187b99a9dc08e9231","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2018-07-31 06:41:25 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Configuring mellanox interfaces using ironic python agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Icfaffd7c58c3c73c3fa28cfc2a6c954d2c93c16e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f79a3b5_24058946","line":8,"in_reply_to":"5f7c97a3_017944f9","updated":"2018-08-13 19:53:15.000000000","message":"Done","commit_id":"1d88a74241522b8df782033134772a968a30699c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3aab581e82a6889a60e18bcdeaac139f4c8be142","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Configuring mellanox interfaces using ironic python agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Story: #2003417"},{"line_number":10,"context_line":"Change-Id: Icfaffd7c58c3c73c3fa28cfc2a6c954d2c93c16e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3f79a3b5_671a38c7","line":9,"updated":"2018-09-25 02:35:26.000000000","message":"Ideally you\u0027ll also want to have a task so we don\u0027t have to manually go reconcile stories later on.","commit_id":"09f67ac1b325c609eff412de547bb676ac711031"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"47d01982aafd8ce3ec03a17be33185722f6b7857","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     waleedm \u003cwaleedm@nvidia.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-06-28 07:52:09 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update and configure nvidia nics fw by ironic-python-agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add update_nvidia_fw clean step to MellanoxDeviceHardwareManager."},{"line_number":10,"context_line":"With adding this step, we have the ability to update and configure"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"a0c79579_18a2ceed","line":7,"range":{"start_line":7,"start_character":21,"end_line":7,"end_character":28},"updated":"2022-06-30 18:22:07.000000000","message":"s/nvidia/Nvidia","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c871c6361d0b1ef335e429c161e4b2f122a12ca1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     waleedm \u003cwaleedm@nvidia.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-06-28 07:52:09 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update and configure nvidia nics fw by ironic-python-agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add update_nvidia_fw clean step to MellanoxDeviceHardwareManager."},{"line_number":10,"context_line":"With adding this step, we have the ability to update and configure"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"3a09b0c6_f9f62977","line":7,"range":{"start_line":7,"start_character":21,"end_line":7,"end_character":28},"in_reply_to":"a0c79579_18a2ceed","updated":"2022-07-04 09:27:41.000000000","message":"Done","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"4b08e470590c158232c2bb2814d91d9c2ab4dd07","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"62148ae7_87e1555b","updated":"2022-08-17 11:04:28.000000000","message":"I agree with Jay for the unit tests,and I believe we should have them here or at least see a followup with the tests before merging this","commit_id":"f8435cccbe726cba89ee940a70ac08fc83863f79"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"271831aa2afa012873a366816e021d1af860790d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"0628ec4a_dc333461","updated":"2022-08-11 21:48:54.000000000","message":"I strongly recommend the addition of unit tests, covering the nvidia firmware update bits specifically.","commit_id":"f8435cccbe726cba89ee940a70ac08fc83863f79"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"00bb1661dce2b0149da7acc8c29b54886c848127","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"66ec26cc_580b3d6c","in_reply_to":"62148ae7_87e1555b","updated":"2022-08-29 08:32:41.000000000","message":"I\u0027ll work on a follow-up patch to cover firmware update bits","commit_id":"f8435cccbe726cba89ee940a70ac08fc83863f79"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"792f65274a9cf373059690f2d788c0a3edd6351e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"be309999_0ec49559","updated":"2022-09-22 14:44:59.000000000","message":"-1 to highlight the need to change the name of the step, please update and add a releasenote and docs \u003d)","commit_id":"59cc0f040b5f22d1e595a41bd9140302e1f854c2"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"332e19074e0dd6b8345b88a21b7d84722fc1f228","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"696c0ec9_7daf21f9","updated":"2022-09-20 19:20:25.000000000","message":"Code wise, I think it looks good, but a good question has been raised with the step name.","commit_id":"59cc0f040b5f22d1e595a41bd9140302e1f854c2"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"4ac862a7a0fb579fa11f3f6587ec744b230caf3d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"209930fb_068223b7","updated":"2022-09-22 11:49:13.000000000","message":"I see the problem with the name","commit_id":"59cc0f040b5f22d1e595a41bd9140302e1f854c2"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"22abc419d4f3d3207f0ac5b10c44e0cbc0c04a03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"8d08cc0b_b0c4e5b6","updated":"2022-09-22 14:45:34.000000000","message":"Just being explicit: I don\u0027t think this should merge without a release note or that firmware update step being renamed.","commit_id":"59cc0f040b5f22d1e595a41bd9140302e1f854c2"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"c176a85ca8891c9090e90a9e9d70bbdccf22054b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"a2cdca86_ce1de868","updated":"2022-09-07 19:00:48.000000000","message":"The new test looks good, but I wonder if we could add more if we\u0027re doing the effort? Just checking expected clean steps doesn\u0027t give you much coverage. \n\nWDYT rpittau?","commit_id":"59cc0f040b5f22d1e595a41bd9140302e1f854c2"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"194131b77c82279683acaa1ea4721375519c9cbb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"1d795e3b_27791e9e","updated":"2022-11-17 08:44:27.000000000","message":"honestly I feel like this change is worth at least a Story in Storyboard, if not a spec\nif others are ok with just a release note, I\u0027ll follow","commit_id":"59cc0f040b5f22d1e595a41bd9140302e1f854c2"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"d9f4c1c96b5a5a5bbe18d61317c85472bcfed79e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"3d3b1fc6_533b8eb9","in_reply_to":"1d795e3b_27791e9e","updated":"2022-11-17 17:06:16.000000000","message":"I\u0027m OK with just a release note; but right now this patch has been idle for 2 months so I\u0027m not paying too much attention to it :)","commit_id":"59cc0f040b5f22d1e595a41bd9140302e1f854c2"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"8689f392cde66188c011814b25b40c88b643aef4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"3da5b42c_624eadb0","in_reply_to":"3d3b1fc6_533b8eb9","updated":"2022-11-21 07:10:41.000000000","message":"I was on a long vacation :)\nI\u0027m back to finalize it with full unit tests soon","commit_id":"59cc0f040b5f22d1e595a41bd9140302e1f854c2"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"253cf45c6ff1211cd911785b224501f12ac87bb7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"838426b1_e1d8f3b3","updated":"2023-01-10 15:22:25.000000000","message":"Overall looks good, I\u0027d really like to see some documentation in a follow-up patch, even if it is just really high level. Mainly to help prevent people explorng the feature to have to resort to digesting the code to understand usage.","commit_id":"fbde381271bc43f1c17eeb65cb410e1a4165c296"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1d51201b7d2818f3cb7e8bdabb8f2db47bd1a93a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"57ba3415_26f7b7e5","updated":"2023-01-31 17:50:31.000000000","message":"It is a *MUST* that a docs patch come in as a follow up to this. ","commit_id":"2c7f95e3ace162118ef3249cdfedb60a7dc2d652"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"754a41f33d9a0993e18004a434be2cba61f56adb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"9404af0f_92a4fd50","updated":"2023-01-17 14:27:42.000000000","message":"LGTM.","commit_id":"2c7f95e3ace162118ef3249cdfedb60a7dc2d652"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"4a8f96371569bb5866a5986d81dcc6ba08062fd1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"fa69604d_7f9c4773","updated":"2023-01-11 14:14:46.000000000","message":"Thanks, Julia, I agree with you, we are going to provide all needed documentation in a follow-up patch.\nAlso, regarding exposing all configuration settings, we are going to provide a solution in a follow-up patch to expose them somehow.","commit_id":"2c7f95e3ace162118ef3249cdfedb60a7dc2d652"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"754a41f33d9a0993e18004a434be2cba61f56adb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"a7354a7e_a74b313b","in_reply_to":"fa69604d_7f9c4773","updated":"2023-01-17 14:27:42.000000000","message":"Okay, awesome!","commit_id":"2c7f95e3ace162118ef3249cdfedb60a7dc2d652"}],"ironic_python_agent/hardware_managers/mlnx.py":[{"author":{"_account_id":14807,"name":"Lenny","email":"lennyb@mellanox.com","username":"lennyb"},"change_message_id":"1faf00255f6611008716e88423ac8f738e21f588","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                for key, value in port[\u0027extra\u0027].get(\u0027mstconfig\u0027):"},{"line_number":137,"context_line":"                    try:"},{"line_number":138,"context_line":"                        utils.execute("},{"line_number":139,"context_line":"                            \u0027mstconfig -d {} set {}\u003d{}\u0027.format(port_pci,"},{"line_number":140,"context_line":"                                                               key,"},{"line_number":141,"context_line":"                                                               value))"},{"line_number":142,"context_line":"                    except (processutils.ProcessExecutionError, OSError):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_90c21b33","line":139,"updated":"2018-05-07 11:56:54.000000000","message":"mstconfig is part of mstflint package.\nare you checking that it\u0027s installed?\nare you require it as prereq?\nis it possible to use common tools like flint?","commit_id":"c8762bf02a071792c9738b3d973fc7f8bcec2428"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"44121e6fcc391e32a51b2906443e31127e7e6b45","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                 \u0027priority\u0027: 91,"},{"line_number":126,"context_line":"                 \u0027interface\u0027: \u0027deploy\u0027,"},{"line_number":127,"context_line":"                 \u0027reboot_requested\u0027: True,"},{"line_number":128,"context_line":"                 \u0027abortable\u0027: True}]"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def add_mstconfig(self, node, ports):"},{"line_number":131,"context_line":"        for port in ports:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_eecd6cba","line":128,"updated":"2018-07-16 17:53:44.000000000","message":"I think we are going to need a release note to provide operator insight.","commit_id":"69747428519ce25a28d9798ca659034745e0d74f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"44121e6fcc391e32a51b2906443e31127e7e6b45","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                for key, value in port[\u0027extra\u0027].get(\u0027mstconfig\u0027):"},{"line_number":137,"context_line":"                    try:"},{"line_number":138,"context_line":"                        utils.execute("},{"line_number":139,"context_line":"                            \u0027mstconfig -d {} set {}\u003d{}\u0027.format(port_pci,"},{"line_number":140,"context_line":"                                                               key,"},{"line_number":141,"context_line":"                                                               value))"},{"line_number":142,"context_line":"                    except (processutils.ProcessExecutionError, OSError):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_ee7fac66","line":139,"range":{"start_line":139,"start_character":29,"end_line":139,"end_character":38},"updated":"2018-07-16 17:53:44.000000000","message":"Likely needs to be added to the bindep file and mentioned in a release note.","commit_id":"69747428519ce25a28d9798ca659034745e0d74f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"44121e6fcc391e32a51b2906443e31127e7e6b45","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                                                               key,"},{"line_number":141,"context_line":"                                                               value))"},{"line_number":142,"context_line":"                    except (processutils.ProcessExecutionError, OSError):"},{"line_number":143,"context_line":"                        pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_6ed87c7f","line":143,"updated":"2018-07-16 17:53:44.000000000","message":"It would be good to log the failure... but with this being a cleaning step... should we not fail?","commit_id":"69747428519ce25a28d9798ca659034745e0d74f"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"ab9b579b6d64c34c5e583485e6ec9e8e96ea0a00","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                                                               key,"},{"line_number":141,"context_line":"                                                               value))"},{"line_number":142,"context_line":"                    except (processutils.ProcessExecutionError, OSError):"},{"line_number":143,"context_line":"                        pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_71775d90","line":143,"in_reply_to":"5f7c97a3_6ed87c7f","updated":"2018-07-23 20:34:42.000000000","message":"Yes but I think it\u0027s better to raise an exception for the cleanup failures","commit_id":"69747428519ce25a28d9798ca659034745e0d74f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"440c7d6486effc312e8e02209f862994f83d3444","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        for port in ports:"},{"line_number":152,"context_line":"            port_name \u003d netutils.get_interface_name(port[\u0027address\u0027])"},{"line_number":153,"context_line":"            vendor \u003d netutils.get_vendor_id(port_name)"},{"line_number":154,"context_line":"            LOG.info(\"Extra info is %s \", port[\"extra\"])"},{"line_number":155,"context_line":"            LOG.info(\"Port name is %s\", port_name)"},{"line_number":156,"context_line":"            LOG.info(\"Vendor name is %s\", vendor)"},{"line_number":157,"context_line":"            if vendor \u003d\u003d MLNX_VENDOR_ID:"},{"line_number":158,"context_line":"                port_pci \u003d netutils.get_pci_address(port_name)"},{"line_number":159,"context_line":"                mstconfig_dict \u003d self.get_mstconfig_dict(port_pci)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_6152786a","line":156,"range":{"start_line":154,"start_character":0,"end_line":156,"end_character":49},"updated":"2018-07-31 20:10:30.000000000","message":"Any particular reason for info? debug seems more appropriate.","commit_id":"1d88a74241522b8df782033134772a968a30699c"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"baeb1e5dbc98ffd0828ed3299d3fe185d1a930ba","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        for port in ports:"},{"line_number":152,"context_line":"            port_name \u003d netutils.get_interface_name(port[\u0027address\u0027])"},{"line_number":153,"context_line":"            vendor \u003d netutils.get_vendor_id(port_name)"},{"line_number":154,"context_line":"            LOG.info(\"Extra info is %s \", port[\"extra\"])"},{"line_number":155,"context_line":"            LOG.info(\"Port name is %s\", port_name)"},{"line_number":156,"context_line":"            LOG.info(\"Vendor name is %s\", vendor)"},{"line_number":157,"context_line":"            if vendor \u003d\u003d MLNX_VENDOR_ID:"},{"line_number":158,"context_line":"                port_pci \u003d netutils.get_pci_address(port_name)"},{"line_number":159,"context_line":"                mstconfig_dict \u003d self.get_mstconfig_dict(port_pci)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_e4e31133","line":156,"range":{"start_line":154,"start_character":0,"end_line":156,"end_character":49},"in_reply_to":"5f7c97a3_6152786a","updated":"2018-08-13 19:13:09.000000000","message":"Done","commit_id":"1d88a74241522b8df782033134772a968a30699c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"440c7d6486effc312e8e02209f862994f83d3444","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                                                 key,"},{"line_number":175,"context_line":"                                                 value))"},{"line_number":176,"context_line":"                    else:"},{"line_number":177,"context_line":"                        LOG.info(\"This\u0027s the mstconfig %s\", mst_config)"},{"line_number":178,"context_line":"                        for key, value in mst_config.iteritems():"},{"line_number":179,"context_line":"                            args \u003d \"%s\u003d%s\" % (key, value)"},{"line_number":180,"context_line":"                            try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_814d54c6","line":177,"updated":"2018-07-31 20:10:30.000000000","message":"ditto","commit_id":"1d88a74241522b8df782033134772a968a30699c"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"9cbf76fbdc6ffab195165b4187b99a9dc08e9231","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                                                 key,"},{"line_number":175,"context_line":"                                                 value))"},{"line_number":176,"context_line":"                    else:"},{"line_number":177,"context_line":"                        LOG.info(\"This\u0027s the mstconfig %s\", mst_config)"},{"line_number":178,"context_line":"                        for key, value in mst_config.iteritems():"},{"line_number":179,"context_line":"                            args \u003d \"%s\u003d%s\" % (key, value)"},{"line_number":180,"context_line":"                            try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_c4c4d5f7","line":177,"in_reply_to":"5f7c97a3_814d54c6","updated":"2018-08-13 19:53:15.000000000","message":"Done","commit_id":"1d88a74241522b8df782033134772a968a30699c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"440c7d6486effc312e8e02209f862994f83d3444","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                                              port_pci,"},{"line_number":185,"context_line":"                                              \u0027set\u0027,"},{"line_number":186,"context_line":"                                              args)"},{"line_number":187,"context_line":"                                LOG.info(\"Running this command mstconfig \""},{"line_number":188,"context_line":"                                         \"-y -d %s set %s\", port_pci, args)"},{"line_number":189,"context_line":"                            except processutils.ProcessExecutionError as e:"},{"line_number":190,"context_line":"                                raise Exception(\"Failed to run this command\""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_214800b2","line":187,"updated":"2018-07-31 20:10:30.000000000","message":"ditto","commit_id":"1d88a74241522b8df782033134772a968a30699c"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"9cbf76fbdc6ffab195165b4187b99a9dc08e9231","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                                              port_pci,"},{"line_number":185,"context_line":"                                              \u0027set\u0027,"},{"line_number":186,"context_line":"                                              args)"},{"line_number":187,"context_line":"                                LOG.info(\"Running this command mstconfig \""},{"line_number":188,"context_line":"                                         \"-y -d %s set %s\", port_pci, args)"},{"line_number":189,"context_line":"                            except processutils.ProcessExecutionError as e:"},{"line_number":190,"context_line":"                                raise Exception(\"Failed to run this command\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_64b5c17d","line":187,"in_reply_to":"5f7c97a3_214800b2","updated":"2018-08-13 19:53:15.000000000","message":"Done","commit_id":"1d88a74241522b8df782033134772a968a30699c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"440c7d6486effc312e8e02209f862994f83d3444","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                                LOG.info(\"Running this command mstconfig \""},{"line_number":188,"context_line":"                                         \"-y -d %s set %s\", port_pci, args)"},{"line_number":189,"context_line":"                            except processutils.ProcessExecutionError as e:"},{"line_number":190,"context_line":"                                raise Exception(\"Failed to run this command\""},{"line_number":191,"context_line":"                                                \" mstconfig -y -d %s set \""},{"line_number":192,"context_line":"                                                \"%s\\n%s\" % (port_pci,"},{"line_number":193,"context_line":"                                                            args,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_e1c3e804","line":190,"range":{"start_line":190,"start_character":38,"end_line":190,"end_character":48},"updated":"2018-07-31 20:10:30.000000000","message":"Wouldn\u0027t it make sense to raise a specific exception?","commit_id":"1d88a74241522b8df782033134772a968a30699c"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"9cbf76fbdc6ffab195165b4187b99a9dc08e9231","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                                LOG.info(\"Running this command mstconfig \""},{"line_number":188,"context_line":"                                         \"-y -d %s set %s\", port_pci, args)"},{"line_number":189,"context_line":"                            except processutils.ProcessExecutionError as e:"},{"line_number":190,"context_line":"                                raise Exception(\"Failed to run this command\""},{"line_number":191,"context_line":"                                                \" mstconfig -y -d %s set \""},{"line_number":192,"context_line":"                                                \"%s\\n%s\" % (port_pci,"},{"line_number":193,"context_line":"                                                            args,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_a4643923","line":190,"range":{"start_line":190,"start_character":38,"end_line":190,"end_character":48},"in_reply_to":"5f7c97a3_e1c3e804","updated":"2018-08-13 19:53:15.000000000","message":"Done","commit_id":"1d88a74241522b8df782033134772a968a30699c"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"3b9c8185b5765a90ec0e5a3c0a9e2bd601d9824a","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        for port in ports:"},{"line_number":153,"context_line":"            port_name \u003d netutils.get_interface_name(port[\u0027address\u0027])"},{"line_number":154,"context_line":"            vendor \u003d netutils.get_vendor_id(port_name)"},{"line_number":155,"context_line":"            if vendor \u003d\u003d MLNX_VENDOR_ID:"},{"line_number":156,"context_line":"                port_pci \u003d netutils.get_pci_address(port_name)"},{"line_number":157,"context_line":"                mstconfig_dict \u003d self.get_mstconfig_dict(port_pci)"},{"line_number":158,"context_line":"                if \"mstconfig\" in port[\"extra\"].keys():"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_ba20d0ad","line":155,"updated":"2018-08-13 21:45:09.000000000","message":"It\u0027s probably better to just move some code into separate functions here, or at the very least inverse the if statements to reduce the indentation.\n\ne.g.\n\n\u003e if vendor !\u003d MLNX_VENDOR_ID:\n\u003e     continue","commit_id":"7bb29bbeccee0bde612499d4773c1b543c0c9292"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"71a83839a8eca098fdbbbf11d744d7d0f0093be9","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        for port in ports:"},{"line_number":153,"context_line":"            port_name \u003d netutils.get_interface_name(port[\u0027address\u0027])"},{"line_number":154,"context_line":"            vendor \u003d netutils.get_vendor_id(port_name)"},{"line_number":155,"context_line":"            if vendor \u003d\u003d MLNX_VENDOR_ID:"},{"line_number":156,"context_line":"                port_pci \u003d netutils.get_pci_address(port_name)"},{"line_number":157,"context_line":"                mstconfig_dict \u003d self.get_mstconfig_dict(port_pci)"},{"line_number":158,"context_line":"                if \"mstconfig\" in port[\"extra\"].keys():"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_755c89ec","line":155,"in_reply_to":"3f79a3b5_ba20d0ad","updated":"2018-08-13 22:07:28.000000000","message":"Done","commit_id":"7bb29bbeccee0bde612499d4773c1b543c0c9292"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"3b9c8185b5765a90ec0e5a3c0a9e2bd601d9824a","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            if vendor \u003d\u003d MLNX_VENDOR_ID:"},{"line_number":156,"context_line":"                port_pci \u003d netutils.get_pci_address(port_name)"},{"line_number":157,"context_line":"                mstconfig_dict \u003d self.get_mstconfig_dict(port_pci)"},{"line_number":158,"context_line":"                if \"mstconfig\" in port[\"extra\"].keys():"},{"line_number":159,"context_line":"                    mstconfig_validate \u003d strutils.bool_from_string("},{"line_number":160,"context_line":"                        port[\"extra\"].get(\"mstconfig_validate\"))"},{"line_number":161,"context_line":"                    mst_config \u003d port[\"extra\"][\"mstconfig\"]"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_5a117c5c","line":158,"updated":"2018-08-13 21:45:09.000000000","message":"\u003e if \"mstconfig\" not in port[\"extra\"].keys():\n\u003e     continue","commit_id":"7bb29bbeccee0bde612499d4773c1b543c0c9292"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"71a83839a8eca098fdbbbf11d744d7d0f0093be9","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            if vendor \u003d\u003d MLNX_VENDOR_ID:"},{"line_number":156,"context_line":"                port_pci \u003d netutils.get_pci_address(port_name)"},{"line_number":157,"context_line":"                mstconfig_dict \u003d self.get_mstconfig_dict(port_pci)"},{"line_number":158,"context_line":"                if \"mstconfig\" in port[\"extra\"].keys():"},{"line_number":159,"context_line":"                    mstconfig_validate \u003d strutils.bool_from_string("},{"line_number":160,"context_line":"                        port[\"extra\"].get(\"mstconfig_validate\"))"},{"line_number":161,"context_line":"                    mst_config \u003d port[\"extra\"][\"mstconfig\"]"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_15751564","line":158,"in_reply_to":"3f79a3b5_5a117c5c","updated":"2018-08-13 22:07:28.000000000","message":"Done","commit_id":"7bb29bbeccee0bde612499d4773c1b543c0c9292"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"210b1927372ec7c25ff502dc3e8a9678e31040a7","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                else:"},{"line_number":146,"context_line":"                    mstconfig_dict[config_group[0]] \u003d config_group[1][:_index]"},{"line_number":147,"context_line":"            return mstconfig_dict"},{"line_number":148,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":149,"context_line":"            return"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def add_mstconfig(self, node, ports):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_7059f732","line":148,"updated":"2018-08-13 23:02:57.000000000","message":"Does this whole function really need to be wrapped in this try catch? Wouldn\u0027t it be enough to just wrap ?\n\u003e result \u003d utils.execute(\u0027mstconfig\u0027, \u0027-d\u0027, port_pci, \u0027q\u0027)","commit_id":"368f605836b474bc836ea6f496a418d9e59ee9fd"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"b3ddc333b0eced98de4846b44aa2a9c8ac4eccf6","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                else:"},{"line_number":146,"context_line":"                    mstconfig_dict[config_group[0]] \u003d config_group[1][:_index]"},{"line_number":147,"context_line":"            return mstconfig_dict"},{"line_number":148,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":149,"context_line":"            return"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def add_mstconfig(self, node, ports):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_a165d51f","line":148,"in_reply_to":"3f79a3b5_7059f732","updated":"2018-08-15 21:57:53.000000000","message":"Done","commit_id":"368f605836b474bc836ea6f496a418d9e59ee9fd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3aab581e82a6889a60e18bcdeaac139f4c8be142","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def get_mstconfig_dict(self, port_pci):"},{"line_number":133,"context_line":"        try:"},{"line_number":134,"context_line":"            result \u003d utils.execute(\u0027mstconfig\u0027, \u0027-d\u0027, port_pci, \u0027q\u0027)"},{"line_number":135,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":136,"context_line":"            return"},{"line_number":137,"context_line":"        mstconfig \u003d result[0]"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_a737f04b","line":134,"range":{"start_line":134,"start_character":12,"end_line":134,"end_character":68},"updated":"2018-09-25 02:35:26.000000000","message":"We need a test for this entire method since this is calling an external program.","commit_id":"09f67ac1b325c609eff412de547bb676ac711031"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3aab581e82a6889a60e18bcdeaac139f4c8be142","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                continue"},{"line_number":157,"context_line":"            port_pci \u003d netutils.get_pci_address(port_name)"},{"line_number":158,"context_line":"            mstconfig_dict \u003d self.get_mstconfig_dict(port_pci)"},{"line_number":159,"context_line":"            if \"mstconfig\" not in port[\"extra\"].keys():"},{"line_number":160,"context_line":"                continue"},{"line_number":161,"context_line":"            mstconfig_validate \u003d strutils.bool_from_string("},{"line_number":162,"context_line":"                port[\"extra\"].get(\"mstconfig_validate\"))"},{"line_number":163,"context_line":"            mst_config \u003d port[\"extra\"][\"mstconfig\"]"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_67ec78bb","line":160,"range":{"start_line":159,"start_character":12,"end_line":160,"end_character":24},"updated":"2018-09-25 02:35:26.000000000","message":"Nothing in ironic\u0027s code should be using the port extra field in terms of asserting desired state or configuration. Without documentation or tests, I\u0027m kind of unsure what is going on and why.","commit_id":"09f67ac1b325c609eff412de547bb676ac711031"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3aab581e82a6889a60e18bcdeaac139f4c8be142","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                for key, value in mst_config.iteritems():"},{"line_number":166,"context_line":"                    if str(value).upper() \u003d\u003d mstconfig_dict.get("},{"line_number":167,"context_line":"                            key).upper():"},{"line_number":168,"context_line":"                        LOG.info(\"Validate OK for %s \", key)"},{"line_number":169,"context_line":"                        continue"},{"line_number":170,"context_line":"                    else:"},{"line_number":171,"context_line":"                        raise Exception(\"Validate error, Expected \""}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_c7e22cd5","line":168,"updated":"2018-09-25 02:35:26.000000000","message":"Is this really needed? I guess I\u0027m just unsure why we\u0027re logging for each key/value pair if their contents are valid.","commit_id":"09f67ac1b325c609eff412de547bb676ac711031"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3aab581e82a6889a60e18bcdeaac139f4c8be142","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                        LOG.info(\"Validate OK for %s \", key)"},{"line_number":169,"context_line":"                        continue"},{"line_number":170,"context_line":"                    else:"},{"line_number":171,"context_line":"                        raise Exception(\"Validate error, Expected \""},{"line_number":172,"context_line":"                                        \"%s for %s but found %s \" %"},{"line_number":173,"context_line":"                                        (mstconfig_dict.get(key),"},{"line_number":174,"context_line":"                                         key,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_67d31803","line":171,"range":{"start_line":171,"start_character":30,"end_line":171,"end_character":39},"updated":"2018-09-25 02:35:26.000000000","message":"We should ideally be raising errors.something instead of just Exception.","commit_id":"09f67ac1b325c609eff412de547bb676ac711031"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3aab581e82a6889a60e18bcdeaac139f4c8be142","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                for key, value in mst_config.iteritems():"},{"line_number":179,"context_line":"                    args \u003d \"%s\u003d%s\" % (key, value)"},{"line_number":180,"context_line":"                    try:"},{"line_number":181,"context_line":"                        utils.execute(\u0027mstconfig\u0027,"},{"line_number":182,"context_line":"                                      \u0027-y\u0027,"},{"line_number":183,"context_line":"                                      \u0027-d\u0027,"},{"line_number":184,"context_line":"                                      port_pci,"},{"line_number":185,"context_line":"                                      \u0027set\u0027,"},{"line_number":186,"context_line":"                                      args)"},{"line_number":187,"context_line":"                        LOG.debug(\"Running this command mstconfig \""},{"line_number":188,"context_line":"                                  \"-y -d %s set %s\", port_pci, args)"},{"line_number":189,"context_line":"                    except processutils.ProcessExecutionError as e:"},{"line_number":190,"context_line":"                        raise errors.CommandExecutionError("}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_873af432","line":187,"range":{"start_line":181,"start_character":24,"end_line":187,"end_character":60},"updated":"2018-09-25 02:35:26.000000000","message":"Given we\u0027re calling external programs, we need to have unit tests to help document the expected behavior of the utility... in the event it changes.","commit_id":"09f67ac1b325c609eff412de547bb676ac711031"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"f286b367bcbb13cb1071abcb8ceb6afa131839d0","unresolved":true,"context_lines":[{"line_number":121,"context_line":"        :param ports: Port objects as provided by Ironic."},{"line_number":122,"context_line":"        :returns: A list of cleaning steps, as a list of dicts."},{"line_number":123,"context_line":"        \"\"\""},{"line_number":124,"context_line":"        return [{\u0027step\u0027: \u0027update_nvidia_firmware\u0027,"},{"line_number":125,"context_line":"                 \u0027priority\u0027: 91,"},{"line_number":126,"context_line":"                 \u0027interface\u0027: \u0027deploy\u0027,"},{"line_number":127,"context_line":"                 \u0027reboot_requested\u0027: True,"}],"source_content_type":"text/x-python","patch_set":17,"id":"c8712ae8_c5b10c65","line":124,"updated":"2022-06-30 16:41:38.000000000","message":"Are Mellanox NICs made by NVIDIA, or contain NVIDIA firmware? Just a little confused as to if this is the right hardware manager for this. If this is Mellanox NIC related still, can you put a note in the docstring so it\u0027s less confusing to people reading the code in the future?","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"271831aa2afa012873a366816e021d1af860790d","unresolved":true,"context_lines":[{"line_number":121,"context_line":"        :param ports: Port objects as provided by Ironic."},{"line_number":122,"context_line":"        :returns: A list of cleaning steps, as a list of dicts."},{"line_number":123,"context_line":"        \"\"\""},{"line_number":124,"context_line":"        return [{\u0027step\u0027: \u0027update_nvidia_firmware\u0027,"},{"line_number":125,"context_line":"                 \u0027priority\u0027: 91,"},{"line_number":126,"context_line":"                 \u0027interface\u0027: \u0027deploy\u0027,"},{"line_number":127,"context_line":"                 \u0027reboot_requested\u0027: True,"}],"source_content_type":"text/x-python","patch_set":17,"id":"fd14f0d8_24fc4f53","line":124,"in_reply_to":"2b6c1b97_d14baaa4","updated":"2022-08-11 21:48:54.000000000","message":"I don\u0027t know the best way, but it is confusing. Perhaps just a comment around why things are named as they are? If we can\u0027t find a way, it\u0027s not a huge deal.","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"976546db88ea6d4b907ddab1db4dd5b3fbcaedb1","unresolved":true,"context_lines":[{"line_number":121,"context_line":"        :param ports: Port objects as provided by Ironic."},{"line_number":122,"context_line":"        :returns: A list of cleaning steps, as a list of dicts."},{"line_number":123,"context_line":"        \"\"\""},{"line_number":124,"context_line":"        return [{\u0027step\u0027: \u0027update_nvidia_firmware\u0027,"},{"line_number":125,"context_line":"                 \u0027priority\u0027: 91,"},{"line_number":126,"context_line":"                 \u0027interface\u0027: \u0027deploy\u0027,"},{"line_number":127,"context_line":"                 \u0027reboot_requested\u0027: True,"}],"source_content_type":"text/x-python","patch_set":17,"id":"85a585c6_19df132c","line":124,"in_reply_to":"489aa727_c0784b14","updated":"2022-09-22 14:41:01.000000000","message":"I agree that update_nvidia_firmware is too generic. Honestly, this whole name change is going to confuse operators; but it\u0027s unreasonable of us upstream to ask them not to rebrand.\n\nupdate_nvidia_nic_firmware is probably the best middle-ground we\u0027re going to get.","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"cc38a4aec6e0ad05d11d816c9d0e3ed2c4a93ad8","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        :param ports: Port objects as provided by Ironic."},{"line_number":122,"context_line":"        :returns: A list of cleaning steps, as a list of dicts."},{"line_number":123,"context_line":"        \"\"\""},{"line_number":124,"context_line":"        return [{\u0027step\u0027: \u0027update_nvidia_firmware\u0027,"},{"line_number":125,"context_line":"                 \u0027priority\u0027: 91,"},{"line_number":126,"context_line":"                 \u0027interface\u0027: \u0027deploy\u0027,"},{"line_number":127,"context_line":"                 \u0027reboot_requested\u0027: True,"}],"source_content_type":"text/x-python","patch_set":17,"id":"3c666e58_91ad97c0","line":124,"in_reply_to":"85a585c6_19df132c","updated":"2022-12-29 15:16:41.000000000","message":"Done","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"3cdf265935015b1c33881a744d80e8240a77d4c1","unresolved":true,"context_lines":[{"line_number":121,"context_line":"        :param ports: Port objects as provided by Ironic."},{"line_number":122,"context_line":"        :returns: A list of cleaning steps, as a list of dicts."},{"line_number":123,"context_line":"        \"\"\""},{"line_number":124,"context_line":"        return [{\u0027step\u0027: \u0027update_nvidia_firmware\u0027,"},{"line_number":125,"context_line":"                 \u0027priority\u0027: 91,"},{"line_number":126,"context_line":"                 \u0027interface\u0027: \u0027deploy\u0027,"},{"line_number":127,"context_line":"                 \u0027reboot_requested\u0027: True,"}],"source_content_type":"text/x-python","patch_set":17,"id":"dfcc9cde_5663e26d","line":124,"in_reply_to":"9d13b606_0d037420","updated":"2022-09-20 21:22:25.000000000","message":"Digging in more. I see that after acquisition Mellanox has been rebranded as Nvidia. So to prevent confusion down the road, update_nvidia_firmware seems like a better name, maybe we could use something like: update_nvidia_nic_firmware, but that may be to much. I am good with the original name here as well.","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"ebec616fd62ed546813900b256eac0aa125c5bd7","unresolved":true,"context_lines":[{"line_number":121,"context_line":"        :param ports: Port objects as provided by Ironic."},{"line_number":122,"context_line":"        :returns: A list of cleaning steps, as a list of dicts."},{"line_number":123,"context_line":"        \"\"\""},{"line_number":124,"context_line":"        return [{\u0027step\u0027: \u0027update_nvidia_firmware\u0027,"},{"line_number":125,"context_line":"                 \u0027priority\u0027: 91,"},{"line_number":126,"context_line":"                 \u0027interface\u0027: \u0027deploy\u0027,"},{"line_number":127,"context_line":"                 \u0027reboot_requested\u0027: True,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9d13b606_0d037420","line":124,"in_reply_to":"a51f81de_9a0ffeb5","updated":"2022-09-20 20:59:43.000000000","message":"I am in agreement with Jay and Julia here. I would much prefer something along the lines of update_mlnx_firmware.. so that it is not confused with Nvidia systems like the DGX.","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c871c6361d0b1ef335e429c161e4b2f122a12ca1","unresolved":true,"context_lines":[{"line_number":121,"context_line":"        :param ports: Port objects as provided by Ironic."},{"line_number":122,"context_line":"        :returns: A list of cleaning steps, as a list of dicts."},{"line_number":123,"context_line":"        \"\"\""},{"line_number":124,"context_line":"        return [{\u0027step\u0027: \u0027update_nvidia_firmware\u0027,"},{"line_number":125,"context_line":"                 \u0027priority\u0027: 91,"},{"line_number":126,"context_line":"                 \u0027interface\u0027: \u0027deploy\u0027,"},{"line_number":127,"context_line":"                 \u0027reboot_requested\u0027: True,"}],"source_content_type":"text/x-python","patch_set":17,"id":"2b6c1b97_d14baaa4","line":124,"in_reply_to":"c8712ae8_c5b10c65","updated":"2022-07-04 09:27:41.000000000","message":"Mellanox was acquired by Nvidia, so do you suggest here for all Mellanox references in the code, to move it to Nvidia?","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"4ac862a7a0fb579fa11f3f6587ec744b230caf3d","unresolved":true,"context_lines":[{"line_number":121,"context_line":"        :param ports: Port objects as provided by Ironic."},{"line_number":122,"context_line":"        :returns: A list of cleaning steps, as a list of dicts."},{"line_number":123,"context_line":"        \"\"\""},{"line_number":124,"context_line":"        return [{\u0027step\u0027: \u0027update_nvidia_firmware\u0027,"},{"line_number":125,"context_line":"                 \u0027priority\u0027: 91,"},{"line_number":126,"context_line":"                 \u0027interface\u0027: \u0027deploy\u0027,"},{"line_number":127,"context_line":"                 \u0027reboot_requested\u0027: True,"}],"source_content_type":"text/x-python","patch_set":17,"id":"489aa727_c0784b14","line":124,"in_reply_to":"dfcc9cde_5663e26d","updated":"2022-09-22 11:49:13.000000000","message":"@JayF @Julia, do you think we should update the name? We have till today if we want this in Zed release.","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"332e19074e0dd6b8345b88a21b7d84722fc1f228","unresolved":true,"context_lines":[{"line_number":121,"context_line":"        :param ports: Port objects as provided by Ironic."},{"line_number":122,"context_line":"        :returns: A list of cleaning steps, as a list of dicts."},{"line_number":123,"context_line":"        \"\"\""},{"line_number":124,"context_line":"        return [{\u0027step\u0027: \u0027update_nvidia_firmware\u0027,"},{"line_number":125,"context_line":"                 \u0027priority\u0027: 91,"},{"line_number":126,"context_line":"                 \u0027interface\u0027: \u0027deploy\u0027,"},{"line_number":127,"context_line":"                 \u0027reboot_requested\u0027: True,"}],"source_content_type":"text/x-python","patch_set":17,"id":"a51f81de_9a0ffeb5","line":124,"in_reply_to":"fd14f0d8_24fc4f53","updated":"2022-09-20 19:20:25.000000000","message":"I think the answer is documentation. I noticed this patch has none, nor even a release note. Since these are our primary means of communication to users on how to use the software, I think we need to at least add some documentation to provide clarity.\n\nOne thing to keep in mind, A random poll of people in real life is that \"nvidia\" means graphics card. So maybe a different name?","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"47d01982aafd8ce3ec03a17be33185722f6b7857","unresolved":true,"context_lines":[{"line_number":133,"context_line":"                     },"},{"line_number":134,"context_line":"                     \u0027firmware_config\u0027: {"},{"line_number":135,"context_line":"                         \u0027description\u0027: \u0027url for yaml config\u0027,"},{"line_number":136,"context_line":"                         \u0027required\u0027: False,"},{"line_number":137,"context_line":"                     }, }"},{"line_number":138,"context_line":"                 }]"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"996d4f98_5a8de468","line":136,"updated":"2022-06-30 18:22:07.000000000","message":"why this required false and not True? What is the meaning of doing the clean step without args?","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c871c6361d0b1ef335e429c161e4b2f122a12ca1","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                     },"},{"line_number":134,"context_line":"                     \u0027firmware_config\u0027: {"},{"line_number":135,"context_line":"                         \u0027description\u0027: \u0027url for yaml config\u0027,"},{"line_number":136,"context_line":"                         \u0027required\u0027: False,"},{"line_number":137,"context_line":"                     }, }"},{"line_number":138,"context_line":"                 }]"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"a8b696ca_fb7feffc","line":136,"in_reply_to":"996d4f98_5a8de468","updated":"2022-07-04 09:27:41.000000000","message":"Done","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4471fa785ea17d48114cb041fd3c23732a18217f","unresolved":true,"context_lines":[{"line_number":132,"context_line":"                                        \u0027\"images\" and list of images, \u0027"},{"line_number":133,"context_line":"                                        \u0027each image contains a map of \u0027"},{"line_number":134,"context_line":"                                        \u0027url: to firmware image (file://, \u0027"},{"line_number":135,"context_line":"                                        \u0027http://, swift://), \u0027"},{"line_number":136,"context_line":"                                        \u0027checksum: of the provided image, \u0027"},{"line_number":137,"context_line":"                                        \u0027checksumType: md5/sha512/sha256, \u0027"},{"line_number":138,"context_line":"                                        \u0027componentID: PSID of the nic, \u0027"}],"source_content_type":"text/x-python","patch_set":27,"id":"1b5f9d5c_f4fe0721","line":135,"updated":"2022-12-26 07:56:06.000000000","message":"it doesn\u0027t look like you handle file:// or swift:// in the code","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c4fe5803a98f3658120bda7153bbb1bfb0ec0656","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                                        \u0027\"images\" and list of images, \u0027"},{"line_number":133,"context_line":"                                        \u0027each image contains a map of \u0027"},{"line_number":134,"context_line":"                                        \u0027url: to firmware image (file://, \u0027"},{"line_number":135,"context_line":"                                        \u0027http://, swift://), \u0027"},{"line_number":136,"context_line":"                                        \u0027checksum: of the provided image, \u0027"},{"line_number":137,"context_line":"                                        \u0027checksumType: md5/sha512/sha256, \u0027"},{"line_number":138,"context_line":"                                        \u0027componentID: PSID of the nic, \u0027"}],"source_content_type":"text/x-python","patch_set":27,"id":"d6cb55de_7bb1bfea","line":135,"in_reply_to":"1b5f9d5c_f4fe0721","updated":"2022-12-27 12:59:16.000000000","message":"file:// is handled, swift:// was removed","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"c6fcd2b0045655eaa09c368c4881b2a0435fcb0e","unresolved":true,"context_lines":[{"line_number":140,"context_line":"                     }, }"},{"line_number":141,"context_line":"                 },"},{"line_number":142,"context_line":"                {\u0027step\u0027: \u0027update_nvidia_nic_firmware_settings\u0027,"},{"line_number":143,"context_line":"                 \u0027priority\u0027: 0,"},{"line_number":144,"context_line":"                 \u0027interface\u0027: \u0027deploy\u0027,"},{"line_number":145,"context_line":"                 \u0027reboot_requested\u0027: True,"},{"line_number":146,"context_line":"                 \u0027abortable\u0027: False,"}],"source_content_type":"text/x-python","patch_set":32,"id":"e822b855_e9f54b0b","line":143,"updated":"2023-01-04 20:20:23.000000000","message":"will they run in the correct order if they are in the same priority?","commit_id":"f27cc8412b4b225a6b6103b7aa82387abd3bc3d1"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"bcf049fb6a169b700f8b3abc0c30fc06f3ed3ed1","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                     }, }"},{"line_number":141,"context_line":"                 },"},{"line_number":142,"context_line":"                {\u0027step\u0027: \u0027update_nvidia_nic_firmware_settings\u0027,"},{"line_number":143,"context_line":"                 \u0027priority\u0027: 0,"},{"line_number":144,"context_line":"                 \u0027interface\u0027: \u0027deploy\u0027,"},{"line_number":145,"context_line":"                 \u0027reboot_requested\u0027: True,"},{"line_number":146,"context_line":"                 \u0027abortable\u0027: False,"}],"source_content_type":"text/x-python","patch_set":32,"id":"4a4fe57c_25c888f5","line":143,"in_reply_to":"e822b855_e9f54b0b","updated":"2023-01-08 09:56:17.000000000","message":"0 priority, means that it\u0027s not going to be run within automated clean steps.\nFor manual cleaning, the cleaning steps should be specified in the desired order.","commit_id":"f27cc8412b4b225a6b6103b7aa82387abd3bc3d1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"253cf45c6ff1211cd911785b224501f12ac87bb7","unresolved":true,"context_lines":[{"line_number":148,"context_line":"                     \u0027settings\u0027: {"},{"line_number":149,"context_line":"                         \u0027description\u0027: \u0027Json blob contains a list of \u0027"},{"line_number":150,"context_line":"                                        \u0027settings per device ID, where each \u0027"},{"line_number":151,"context_line":"                                        \u0027settings contains a map of \u0027"},{"line_number":152,"context_line":"                                        \u0027deviceID: device ID \u0027"},{"line_number":153,"context_line":"                                        \u0027globalConfig: global config \u0027"},{"line_number":154,"context_line":"                                        \u0027function0Config: function 0 config \u0027"}],"source_content_type":"text/x-python","patch_set":34,"id":"5a679db3_4fc910a0","line":151,"updated":"2023-01-10 15:22:25.000000000","message":"I guess the one question I\u0027m wondering looking at this is where do I find out what is possible?","commit_id":"fbde381271bc43f1c17eeb65cb410e1a4165c296"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"4a8f96371569bb5866a5986d81dcc6ba08062fd1","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                     \u0027settings\u0027: {"},{"line_number":149,"context_line":"                         \u0027description\u0027: \u0027Json blob contains a list of \u0027"},{"line_number":150,"context_line":"                                        \u0027settings per device ID, where each \u0027"},{"line_number":151,"context_line":"                                        \u0027settings contains a map of \u0027"},{"line_number":152,"context_line":"                                        \u0027deviceID: device ID \u0027"},{"line_number":153,"context_line":"                                        \u0027globalConfig: global config \u0027"},{"line_number":154,"context_line":"                                        \u0027function0Config: function 0 config \u0027"}],"source_content_type":"text/x-python","patch_set":34,"id":"080f6a0d_9d0040c4","line":151,"in_reply_to":"5a679db3_4fc910a0","updated":"2023-01-11 14:14:46.000000000","message":"We\u0027ll provide that info in a follow-up patch","commit_id":"fbde381271bc43f1c17eeb65cb410e1a4165c296"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"253cf45c6ff1211cd911785b224501f12ac87bb7","unresolved":true,"context_lines":[{"line_number":153,"context_line":"                                        \u0027globalConfig: global config \u0027"},{"line_number":154,"context_line":"                                        \u0027function0Config: function 0 config \u0027"},{"line_number":155,"context_line":"                                        \u0027function1Config: function 1 config\u0027,"},{"line_number":156,"context_line":"                         \u0027required\u0027: True,"},{"line_number":157,"context_line":"                     }, }"},{"line_number":158,"context_line":"                 }"},{"line_number":159,"context_line":"                ]"}],"source_content_type":"text/x-python","patch_set":34,"id":"5cd6dd70_3388f92f","line":156,"updated":"2023-01-10 15:22:25.000000000","message":"I guess my one piece of feedback is that we\u0027re largely missing end user consumable documentation in terms of example clean steps and how they are going to use them and ultimately what additional options might exist. Granted, I think that is a fairly high bar to require that given that the configuration is dynamic to the software running in the card. This raises a larger question of more so, how do I get the current configuration, and that may be obvious to someone who works on the cards every day, but not to upstream developers nor users looking to explore the capability upfront.","commit_id":"fbde381271bc43f1c17eeb65cb410e1a4165c296"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1d51201b7d2818f3cb7e8bdabb8f2db47bd1a93a","unresolved":true,"context_lines":[{"line_number":153,"context_line":"                                        \u0027globalConfig: global config \u0027"},{"line_number":154,"context_line":"                                        \u0027function0Config: function 0 config \u0027"},{"line_number":155,"context_line":"                                        \u0027function1Config: function 1 config\u0027,"},{"line_number":156,"context_line":"                         \u0027required\u0027: True,"},{"line_number":157,"context_line":"                     }, }"},{"line_number":158,"context_line":"                 }"},{"line_number":159,"context_line":"                ]"}],"source_content_type":"text/x-python","patch_set":34,"id":"45aee259_3af3b294","line":156,"in_reply_to":"5cd6dd70_3388f92f","updated":"2023-01-31 17:50:31.000000000","message":"Yes, this is a requirement. Please do this in a follow up.","commit_id":"fbde381271bc43f1c17eeb65cb410e1a4165c296"}],"ironic_python_agent/hardware_managers/nvidia/nvidia_fw_update.py":[{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"24cb23dd82eaeb88e574bf04971e2dd7aeacaf4e","unresolved":true,"context_lines":[{"line_number":206,"context_line":"        :return: bool, True if reset is needed"},{"line_number":207,"context_line":"        \"\"\""},{"line_number":208,"context_line":"        if force_update:"},{"line_number":209,"context_line":"            return True"},{"line_number":210,"context_line":"        self.query_device(force\u003dTrue)"},{"line_number":211,"context_line":"        is_image_changed \u003d \u0027running_fw_ver\u0027 in self.dev_info and \\"},{"line_number":212,"context_line":"                           self.dev_info[\u0027running_fw_ver\u0027] !\u003d \\"}],"source_content_type":"text/x-python","patch_set":20,"id":"370ea894_a016aa74","line":209,"updated":"2022-07-07 07:36:45.000000000","message":"it this logic correct? \nimage change will happen.\n1. running_fw_ver\u003cfw_ver and force_update\u003dfalse\n2. running_fw_ver!\u003d fw_ver and force_update\u003dtrue\n\nAlso maybe rename the method to is_image_changed.","commit_id":"4ec2a770cde8eb460bfb1f1eab6f3405389103c4"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"7ebf996d057ce8340224dedaea93a867c3d46e04","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        :return: bool, True if reset is needed"},{"line_number":207,"context_line":"        \"\"\""},{"line_number":208,"context_line":"        if force_update:"},{"line_number":209,"context_line":"            return True"},{"line_number":210,"context_line":"        self.query_device(force\u003dTrue)"},{"line_number":211,"context_line":"        is_image_changed \u003d \u0027running_fw_ver\u0027 in self.dev_info and \\"},{"line_number":212,"context_line":"                           self.dev_info[\u0027running_fw_ver\u0027] !\u003d \\"}],"source_content_type":"text/x-python","patch_set":20,"id":"3bdf901d_48fdfb3d","line":209,"in_reply_to":"370ea894_a016aa74","updated":"2022-07-13 10:48:22.000000000","message":"you are right, currently, we need reset if the image was changed","commit_id":"4ec2a770cde8eb460bfb1f1eab6f3405389103c4"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4471fa785ea17d48114cb041fd3c23732a18217f","unresolved":true,"context_lines":[{"line_number":357,"context_line":"        self.image_info \u003d {}"},{"line_number":358,"context_line":"        self._file_name \u003d self._get_file_name()"},{"line_number":359,"context_line":"        self.dest_file_path \u003d os.path.join(tempfile.mkdtemp("},{"line_number":360,"context_line":"            suffix\u003d\u0027openstack_nvidia_firmware\u0027), self._file_name)"},{"line_number":361,"context_line":"        self._download_file_from_url()"},{"line_number":362,"context_line":"        self._validate_image_psid()"},{"line_number":363,"context_line":"        self._validate_image_firmware_version()"}],"source_content_type":"text/x-python","patch_set":27,"id":"7417a086_d3d8f89d","line":360,"updated":"2022-12-26 07:56:06.000000000","message":"why not nvidia_firmware?","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c4fe5803a98f3658120bda7153bbb1bfb0ec0656","unresolved":false,"context_lines":[{"line_number":357,"context_line":"        self.image_info \u003d {}"},{"line_number":358,"context_line":"        self._file_name \u003d self._get_file_name()"},{"line_number":359,"context_line":"        self.dest_file_path \u003d os.path.join(tempfile.mkdtemp("},{"line_number":360,"context_line":"            suffix\u003d\u0027openstack_nvidia_firmware\u0027), self._file_name)"},{"line_number":361,"context_line":"        self._download_file_from_url()"},{"line_number":362,"context_line":"        self._validate_image_psid()"},{"line_number":363,"context_line":"        self._validate_image_firmware_version()"}],"source_content_type":"text/x-python","patch_set":27,"id":"6ed48068_ee4cfd2d","line":360,"in_reply_to":"7417a086_d3d8f89d","updated":"2022-12-27 12:59:16.000000000","message":"Done","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4471fa785ea17d48114cb041fd3c23732a18217f","unresolved":true,"context_lines":[{"line_number":372,"context_line":"        :return: None"},{"line_number":373,"context_line":"        \"\"\""},{"line_number":374,"context_line":"        if os.path.exists(os.path.dirname(self.dest_file_path)):"},{"line_number":375,"context_line":"            shutil.rmtree(os.path.dirname(self.dest_file_path))"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    def _get_file_name(self):"},{"line_number":378,"context_line":"        \"\"\"Get the firmware image file name from the url of the image"}],"source_content_type":"text/x-python","patch_set":27,"id":"deb715d6_71829b0f","line":375,"updated":"2022-12-26 07:56:06.000000000","message":"who will catch the exception that can be raised by shutil.rmtree https://docs.python.org/3/library/shutil.html","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c4fe5803a98f3658120bda7153bbb1bfb0ec0656","unresolved":false,"context_lines":[{"line_number":372,"context_line":"        :return: None"},{"line_number":373,"context_line":"        \"\"\""},{"line_number":374,"context_line":"        if os.path.exists(os.path.dirname(self.dest_file_path)):"},{"line_number":375,"context_line":"            shutil.rmtree(os.path.dirname(self.dest_file_path))"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    def _get_file_name(self):"},{"line_number":378,"context_line":"        \"\"\"Get the firmware image file name from the url of the image"}],"source_content_type":"text/x-python","patch_set":27,"id":"619db884_63a1a7c6","line":375,"in_reply_to":"deb715d6_71829b0f","updated":"2022-12-27 12:59:16.000000000","message":"Done","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4471fa785ea17d48114cb041fd3c23732a18217f","unresolved":true,"context_lines":[{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        :return: string, the firmware image file name"},{"line_number":381,"context_line":"        \"\"\""},{"line_number":382,"context_line":"        file_apth \u003d urlparse(self.url).path"},{"line_number":383,"context_line":"        file_name \u003d os.path.basename(str(file_apth))"},{"line_number":384,"context_line":"        return file_name"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"3ab4ab96_9629191d","line":382,"updated":"2022-12-26 07:56:06.000000000","message":"is the code doing validation on the url? the urlparse can raise exception","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c4fe5803a98f3658120bda7153bbb1bfb0ec0656","unresolved":false,"context_lines":[{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        :return: string, the firmware image file name"},{"line_number":381,"context_line":"        \"\"\""},{"line_number":382,"context_line":"        file_apth \u003d urlparse(self.url).path"},{"line_number":383,"context_line":"        file_name \u003d os.path.basename(str(file_apth))"},{"line_number":384,"context_line":"        return file_name"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"97a8be8f_ace5051b","line":382,"in_reply_to":"3ab4ab96_9629191d","updated":"2022-12-27 12:59:16.000000000","message":"yes now, but in general urlparse doesn\u0027t raise exception","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4471fa785ea17d48114cb041fd3c23732a18217f","unresolved":true,"context_lines":[{"line_number":425,"context_line":"            LOG.error(err)"},{"line_number":426,"context_line":"            raise MissMatchFWVersion(error_msg\u003d_(err))"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def _download_file_from_url(self):"},{"line_number":429,"context_line":"        \"\"\"Download the firmware image file from the provided url"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        :return: none"}],"source_content_type":"text/x-python","patch_set":27,"id":"61cd1966_15873681","line":428,"updated":"2022-12-26 07:56:06.000000000","message":"how will this works if the prefix is file:// or swift://?","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c4fe5803a98f3658120bda7153bbb1bfb0ec0656","unresolved":false,"context_lines":[{"line_number":425,"context_line":"            LOG.error(err)"},{"line_number":426,"context_line":"            raise MissMatchFWVersion(error_msg\u003d_(err))"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def _download_file_from_url(self):"},{"line_number":429,"context_line":"        \"\"\"Download the firmware image file from the provided url"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        :return: none"}],"source_content_type":"text/x-python","patch_set":27,"id":"f2ea8403_a785939e","line":428,"in_reply_to":"61cd1966_15873681","updated":"2022-12-27 12:59:16.000000000","message":"Done","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4471fa785ea17d48114cb041fd3c23732a18217f","unresolved":true,"context_lines":[{"line_number":450,"context_line":"        calculated_checksum \u003d fileutils.compute_file_checksum("},{"line_number":451,"context_line":"            self.dest_file_path, algorithm\u003dself.checksum_type)"},{"line_number":452,"context_line":"        if self.checksum !\u003d calculated_checksum:"},{"line_number":453,"context_line":"            err \u003d \u0027Invalid provided checksum %s for image %s\u0027 % ("},{"line_number":454,"context_line":"                self.checksum, self.url)"},{"line_number":455,"context_line":"            LOG.error(err)"},{"line_number":456,"context_line":"            raise InvalidChecksum(error_msg\u003d_(err))"}],"source_content_type":"text/x-python","patch_set":27,"id":"9ecdc86e_57a5d35f","line":453,"updated":"2022-12-26 07:56:06.000000000","message":"checksum error can mean also that the file is corrupted. So change the error message to checksum mismatch error","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c4fe5803a98f3658120bda7153bbb1bfb0ec0656","unresolved":false,"context_lines":[{"line_number":450,"context_line":"        calculated_checksum \u003d fileutils.compute_file_checksum("},{"line_number":451,"context_line":"            self.dest_file_path, algorithm\u003dself.checksum_type)"},{"line_number":452,"context_line":"        if self.checksum !\u003d calculated_checksum:"},{"line_number":453,"context_line":"            err \u003d \u0027Invalid provided checksum %s for image %s\u0027 % ("},{"line_number":454,"context_line":"                self.checksum, self.url)"},{"line_number":455,"context_line":"            LOG.error(err)"},{"line_number":456,"context_line":"            raise InvalidChecksum(error_msg\u003d_(err))"}],"source_content_type":"text/x-python","patch_set":27,"id":"752b4621_11e01272","line":453,"in_reply_to":"9ecdc86e_57a5d35f","updated":"2022-12-27 12:59:16.000000000","message":"Done","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4471fa785ea17d48114cb041fd3c23732a18217f","unresolved":true,"context_lines":[{"line_number":453,"context_line":"            err \u003d \u0027Invalid provided checksum %s for image %s\u0027 % ("},{"line_number":454,"context_line":"                self.checksum, self.url)"},{"line_number":455,"context_line":"            LOG.error(err)"},{"line_number":456,"context_line":"            raise InvalidChecksum(error_msg\u003d_(err))"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"class NvidiaFirmwareImages(object):"}],"source_content_type":"text/x-python","patch_set":27,"id":"620f7936_74ac16df","line":456,"updated":"2022-12-26 07:56:06.000000000","message":"I will check the exception to ChecksumMismatchError","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c4fe5803a98f3658120bda7153bbb1bfb0ec0656","unresolved":false,"context_lines":[{"line_number":453,"context_line":"            err \u003d \u0027Invalid provided checksum %s for image %s\u0027 % ("},{"line_number":454,"context_line":"                self.checksum, self.url)"},{"line_number":455,"context_line":"            LOG.error(err)"},{"line_number":456,"context_line":"            raise InvalidChecksum(error_msg\u003d_(err))"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"class NvidiaFirmwareImages(object):"}],"source_content_type":"text/x-python","patch_set":27,"id":"1c2c5d8e_13bcd80f","line":456,"in_reply_to":"620f7936_74ac16df","updated":"2022-12-27 12:59:16.000000000","message":"Done","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4471fa785ea17d48114cb041fd3c23732a18217f","unresolved":true,"context_lines":[{"line_number":544,"context_line":"        :param data: mstconfig query output"},{"line_number":545,"context_line":"        :return: dict of nic configuration"},{"line_number":546,"context_line":"        \"\"\""},{"line_number":547,"context_line":"        #"},{"line_number":548,"context_line":"        data \u003d list(filter(None, data.split(\u0027\\n\u0027)))"},{"line_number":549,"context_line":"        r \u003d {}"},{"line_number":550,"context_line":"        c \u003d 0"}],"source_content_type":"text/x-python","patch_set":27,"id":"87ad9e6b_7d9f199c","line":547,"updated":"2022-12-26 07:56:06.000000000","message":"why is this?","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c4fe5803a98f3658120bda7153bbb1bfb0ec0656","unresolved":false,"context_lines":[{"line_number":544,"context_line":"        :param data: mstconfig query output"},{"line_number":545,"context_line":"        :return: dict of nic configuration"},{"line_number":546,"context_line":"        \"\"\""},{"line_number":547,"context_line":"        #"},{"line_number":548,"context_line":"        data \u003d list(filter(None, data.split(\u0027\\n\u0027)))"},{"line_number":549,"context_line":"        r \u003d {}"},{"line_number":550,"context_line":"        c \u003d 0"}],"source_content_type":"text/x-python","patch_set":27,"id":"0f2a0549_6dbf2f74","line":547,"in_reply_to":"87ad9e6b_7d9f199c","updated":"2022-12-27 12:59:16.000000000","message":"by mistake","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4471fa785ea17d48114cb041fd3c23732a18217f","unresolved":true,"context_lines":[{"line_number":547,"context_line":"        #"},{"line_number":548,"context_line":"        data \u003d list(filter(None, data.split(\u0027\\n\u0027)))"},{"line_number":549,"context_line":"        r \u003d {}"},{"line_number":550,"context_line":"        c \u003d 0"},{"line_number":551,"context_line":"        for line in data:"},{"line_number":552,"context_line":"            c +\u003d 1"},{"line_number":553,"context_line":"            if \u0027Configurations:\u0027 in line:"}],"source_content_type":"text/x-python","patch_set":27,"id":"02b24c73_56be3c04","line":550,"updated":"2022-12-26 07:56:06.000000000","message":"can we have meaningful names instead of r,c,d","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c4fe5803a98f3658120bda7153bbb1bfb0ec0656","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        #"},{"line_number":548,"context_line":"        data \u003d list(filter(None, data.split(\u0027\\n\u0027)))"},{"line_number":549,"context_line":"        r \u003d {}"},{"line_number":550,"context_line":"        c \u003d 0"},{"line_number":551,"context_line":"        for line in data:"},{"line_number":552,"context_line":"            c +\u003d 1"},{"line_number":553,"context_line":"            if \u0027Configurations:\u0027 in line:"}],"source_content_type":"text/x-python","patch_set":27,"id":"3677b141_54e691bf","line":550,"in_reply_to":"02b24c73_56be3c04","updated":"2022-12-27 12:59:16.000000000","message":"Done","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"2b6e8b3af5ff4ab4f5d7a9537d33cce5ab8b8d1a","unresolved":true,"context_lines":[{"line_number":38,"context_line":"Example of Nvidia NIC Firmware images list:"},{"line_number":39,"context_line":"["},{"line_number":40,"context_line":"  {"},{"line_number":41,"context_line":"    \"url\": \"file:///firmware_images/fw1.bin\","},{"line_number":42,"context_line":"    \"checksum\": \"a94e683ea16d9ae44768f0a65942234d\","},{"line_number":43,"context_line":"    \"checksumType\": \"md5\","},{"line_number":44,"context_line":"    \"componentProfile\": \"MT_0000000540\","}],"source_content_type":"text/x-python","patch_set":30,"id":"20e98987_5841e059","line":41,"updated":"2022-12-28 20:15:26.000000000","message":"you can give one example with http","commit_id":"8e432b44739542b44390c79067d403bb76ecf131"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"cc38a4aec6e0ad05d11d816c9d0e3ed2c4a93ad8","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Example of Nvidia NIC Firmware images list:"},{"line_number":39,"context_line":"["},{"line_number":40,"context_line":"  {"},{"line_number":41,"context_line":"    \"url\": \"file:///firmware_images/fw1.bin\","},{"line_number":42,"context_line":"    \"checksum\": \"a94e683ea16d9ae44768f0a65942234d\","},{"line_number":43,"context_line":"    \"checksumType\": \"md5\","},{"line_number":44,"context_line":"    \"componentProfile\": \"MT_0000000540\","}],"source_content_type":"text/x-python","patch_set":30,"id":"692726ef_74e0d384","line":41,"in_reply_to":"20e98987_5841e059","updated":"2022-12-29 15:16:41.000000000","message":"Done","commit_id":"8e432b44739542b44390c79067d403bb76ecf131"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"2b6e8b3af5ff4ab4f5d7a9537d33cce5ab8b8d1a","unresolved":true,"context_lines":[{"line_number":105,"context_line":"        raise e"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"def run_command(*cmd, **kwargs):"},{"line_number":109,"context_line":"    out, err \u003d processutils.execute(*cmd, **kwargs)"},{"line_number":110,"context_line":"    processutils.execute()"},{"line_number":111,"context_line":"    if err:"}],"source_content_type":"text/x-python","patch_set":30,"id":"08b4d19d_5129a35f","line":108,"updated":"2022-12-28 20:15:26.000000000","message":"why we need this method and can\u0027t use this one https://github.com/openstack/ironic-python-agent/blob/master/ironic_python_agent/utils.py#L87","commit_id":"8e432b44739542b44390c79067d403bb76ecf131"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"cc38a4aec6e0ad05d11d816c9d0e3ed2c4a93ad8","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        raise e"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"def run_command(*cmd, **kwargs):"},{"line_number":109,"context_line":"    out, err \u003d processutils.execute(*cmd, **kwargs)"},{"line_number":110,"context_line":"    processutils.execute()"},{"line_number":111,"context_line":"    if err:"}],"source_content_type":"text/x-python","patch_set":30,"id":"7859bf4c_b76506ca","line":108,"in_reply_to":"08b4d19d_5129a35f","updated":"2022-12-29 15:16:41.000000000","message":"Done","commit_id":"8e432b44739542b44390c79067d403bb76ecf131"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"2b6e8b3af5ff4ab4f5d7a9537d33cce5ab8b8d1a","unresolved":true,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"def run_command(*cmd, **kwargs):"},{"line_number":109,"context_line":"    out, err \u003d processutils.execute(*cmd, **kwargs)"},{"line_number":110,"context_line":"    processutils.execute()"},{"line_number":111,"context_line":"    if err:"},{"line_number":112,"context_line":"        LOG.warning(\u0027Got stderr output: %s\u0027, err)"},{"line_number":113,"context_line":"    LOG.debug(out)"}],"source_content_type":"text/x-python","patch_set":30,"id":"9a8f557a_96f29072","line":110,"updated":"2022-12-28 20:15:26.000000000","message":"why it called again  processutils.execute()?","commit_id":"8e432b44739542b44390c79067d403bb76ecf131"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"cc38a4aec6e0ad05d11d816c9d0e3ed2c4a93ad8","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"def run_command(*cmd, **kwargs):"},{"line_number":109,"context_line":"    out, err \u003d processutils.execute(*cmd, **kwargs)"},{"line_number":110,"context_line":"    processutils.execute()"},{"line_number":111,"context_line":"    if err:"},{"line_number":112,"context_line":"        LOG.warning(\u0027Got stderr output: %s\u0027, err)"},{"line_number":113,"context_line":"    LOG.debug(out)"}],"source_content_type":"text/x-python","patch_set":30,"id":"cf98114b_1caf6a95","line":110,"in_reply_to":"9a8f557a_96f29072","updated":"2022-12-29 15:16:41.000000000","message":"Done","commit_id":"8e432b44739542b44390c79067d403bb76ecf131"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"2b6e8b3af5ff4ab4f5d7a9537d33cce5ab8b8d1a","unresolved":true,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"class DuplicateCompenentID(IronicException):"},{"line_number":138,"context_line":"    _msg_fmt \u003d _(\u0027Duplicate Compenent ID for the firmware image: \u0027"},{"line_number":139,"context_line":"                 \u0027%(error_msg)s\u0027)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"7b22de31_04dc5f0a","line":138,"updated":"2022-12-28 20:15:26.000000000","message":"s/ID/Profile/","commit_id":"8e432b44739542b44390c79067d403bb76ecf131"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"cc38a4aec6e0ad05d11d816c9d0e3ed2c4a93ad8","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"class DuplicateCompenentID(IronicException):"},{"line_number":138,"context_line":"    _msg_fmt \u003d _(\u0027Duplicate Compenent ID for the firmware image: \u0027"},{"line_number":139,"context_line":"                 \u0027%(error_msg)s\u0027)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"157347a0_31160eb6","line":138,"in_reply_to":"7b22de31_04dc5f0a","updated":"2022-12-29 15:16:41.000000000","message":"Done","commit_id":"8e432b44739542b44390c79067d403bb76ecf131"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"2b6e8b3af5ff4ab4f5d7a9537d33cce5ab8b8d1a","unresolved":true,"context_lines":[{"line_number":388,"context_line":"        try:"},{"line_number":389,"context_line":"            LOG.info(\u0027Copying file: %s to %s\u0027, self.url,"},{"line_number":390,"context_line":"                     self.dest_file_path)"},{"line_number":391,"context_line":"            shutil.copyfile(src_file, self.dest_file_path)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        except Exception as e:"},{"line_number":394,"context_line":"            LOG.error(\u0027Failed to copy file: %s\u0027, str(e))"}],"source_content_type":"text/x-python","patch_set":30,"id":"569e61d2_e864101b","line":391,"updated":"2022-12-28 20:15:26.000000000","message":"why you need to copy can we just move it?","commit_id":"8e432b44739542b44390c79067d403bb76ecf131"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"cc38a4aec6e0ad05d11d816c9d0e3ed2c4a93ad8","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        try:"},{"line_number":389,"context_line":"            LOG.info(\u0027Copying file: %s to %s\u0027, self.url,"},{"line_number":390,"context_line":"                     self.dest_file_path)"},{"line_number":391,"context_line":"            shutil.copyfile(src_file, self.dest_file_path)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        except Exception as e:"},{"line_number":394,"context_line":"            LOG.error(\u0027Failed to copy file: %s\u0027, str(e))"}],"source_content_type":"text/x-python","patch_set":30,"id":"60749130_b0290c87","line":391,"in_reply_to":"569e61d2_e864101b","updated":"2022-12-29 15:16:41.000000000","message":"Done","commit_id":"8e432b44739542b44390c79067d403bb76ecf131"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"2b6e8b3af5ff4ab4f5d7a9537d33cce5ab8b8d1a","unresolved":true,"context_lines":[{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        :param psids_list:  list of psids of machines nics"},{"line_number":530,"context_line":"        :returns:           None"},{"line_number":531,"context_line":"        :raises:            DuplicateCompenentID"},{"line_number":532,"context_line":"        \"\"\""},{"line_number":533,"context_line":"        for image in self.firmware_images:"},{"line_number":534,"context_line":"            if image.get(\u0027componentProfile\u0027) in psids_list:"}],"source_content_type":"text/x-python","patch_set":30,"id":"a886aef1_d0c18076","line":531,"updated":"2022-12-28 20:15:26.000000000","message":"DuplicateCompenentProfile","commit_id":"8e432b44739542b44390c79067d403bb76ecf131"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"cc38a4aec6e0ad05d11d816c9d0e3ed2c4a93ad8","unresolved":false,"context_lines":[{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        :param psids_list:  list of psids of machines nics"},{"line_number":530,"context_line":"        :returns:           None"},{"line_number":531,"context_line":"        :raises:            DuplicateCompenentID"},{"line_number":532,"context_line":"        \"\"\""},{"line_number":533,"context_line":"        for image in self.firmware_images:"},{"line_number":534,"context_line":"            if image.get(\u0027componentProfile\u0027) in psids_list:"}],"source_content_type":"text/x-python","patch_set":30,"id":"bb3fcc95_989cb636","line":531,"in_reply_to":"a886aef1_d0c18076","updated":"2022-12-29 15:16:41.000000000","message":"Done","commit_id":"8e432b44739542b44390c79067d403bb76ecf131"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"2b6e8b3af5ff4ab4f5d7a9537d33cce5ab8b8d1a","unresolved":true,"context_lines":[{"line_number":537,"context_line":"                    err \u003d \u0027Duplicate componentProfile %s\u0027 % \\"},{"line_number":538,"context_line":"                          str(image[\u0027componentProfile\u0027])"},{"line_number":539,"context_line":"                    LOG.error(err)"},{"line_number":540,"context_line":"                    raise DuplicateCompenentID(error_msg\u003d_(err))"},{"line_number":541,"context_line":"                else:"},{"line_number":542,"context_line":"                    self.filtered_images_psid_dict["},{"line_number":543,"context_line":"                        image.get(\u0027componentProfile\u0027)] \u003d image"}],"source_content_type":"text/x-python","patch_set":30,"id":"70e64525_455e0ed5","line":540,"range":{"start_line":540,"start_character":26,"end_line":540,"end_character":46},"updated":"2022-12-28 20:15:26.000000000","message":"same as above","commit_id":"8e432b44739542b44390c79067d403bb76ecf131"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"cc38a4aec6e0ad05d11d816c9d0e3ed2c4a93ad8","unresolved":false,"context_lines":[{"line_number":537,"context_line":"                    err \u003d \u0027Duplicate componentProfile %s\u0027 % \\"},{"line_number":538,"context_line":"                          str(image[\u0027componentProfile\u0027])"},{"line_number":539,"context_line":"                    LOG.error(err)"},{"line_number":540,"context_line":"                    raise DuplicateCompenentID(error_msg\u003d_(err))"},{"line_number":541,"context_line":"                else:"},{"line_number":542,"context_line":"                    self.filtered_images_psid_dict["},{"line_number":543,"context_line":"                        image.get(\u0027componentProfile\u0027)] \u003d image"}],"source_content_type":"text/x-python","patch_set":30,"id":"668638f2_152f36e8","line":540,"range":{"start_line":540,"start_character":26,"end_line":540,"end_character":46},"in_reply_to":"70e64525_455e0ed5","updated":"2022-12-29 15:16:41.000000000","message":"Done","commit_id":"8e432b44739542b44390c79067d403bb76ecf131"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"c6fcd2b0045655eaa09c368c4881b2a0435fcb0e","unresolved":true,"context_lines":[{"line_number":26,"context_line":"from six.moves.urllib.parse import urlparse"},{"line_number":27,"context_line":"from six.moves.urllib import request as urlRequest"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from ironic_python_agent.utils import execute"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"FW_VERSION_REGEX \u003d r\u0027FW Version:\\s*\\t*(?P\u003cfw_ver\u003e\\d+\\.\\d+\\.\\d+)\u0027"},{"line_number":32,"context_line":"RUNNING_FW_VERSION_REGEX \u003d \\"}],"source_content_type":"text/x-python","patch_set":32,"id":"fd08b793_961626cc","line":29,"updated":"2023-01-04 20:20:23.000000000","message":"you should just import utils so it should be \nfrom ironic_python_agent import utils\n\nand in the calls you should call utils.execute","commit_id":"f27cc8412b4b225a6b6103b7aa82387abd3bc3d1"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"bcf049fb6a169b700f8b3abc0c30fc06f3ed3ed1","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from six.moves.urllib.parse import urlparse"},{"line_number":27,"context_line":"from six.moves.urllib import request as urlRequest"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from ironic_python_agent.utils import execute"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"FW_VERSION_REGEX \u003d r\u0027FW Version:\\s*\\t*(?P\u003cfw_ver\u003e\\d+\\.\\d+\\.\\d+)\u0027"},{"line_number":32,"context_line":"RUNNING_FW_VERSION_REGEX \u003d \\"}],"source_content_type":"text/x-python","patch_set":32,"id":"25833899_10c78de1","line":29,"in_reply_to":"fd08b793_961626cc","updated":"2023-01-08 09:56:17.000000000","message":"Done","commit_id":"f27cc8412b4b225a6b6103b7aa82387abd3bc3d1"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"c6fcd2b0045655eaa09c368c4881b2a0435fcb0e","unresolved":true,"context_lines":[{"line_number":101,"context_line":"        # check for mstfwreset"},{"line_number":102,"context_line":"        execute(\u0027mstfwreset\u0027, \u0027-v\u0027)"},{"line_number":103,"context_line":"        # check for lspci"},{"line_number":104,"context_line":"        execute(\u0027lspci\u0027, \u0027--version\u0027)"},{"line_number":105,"context_line":"    except processutils.ProcessExecutionError as e:"},{"line_number":106,"context_line":"        LOG.error(\u0027Failed Prerequisite check. %s\u0027, str(e))"},{"line_number":107,"context_line":"        raise e"}],"source_content_type":"text/x-python","patch_set":32,"id":"20dd8aae_856bef31","line":104,"updated":"2023-01-04 20:20:23.000000000","message":"see comment above it should be utils.execute(...","commit_id":"f27cc8412b4b225a6b6103b7aa82387abd3bc3d1"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"bcf049fb6a169b700f8b3abc0c30fc06f3ed3ed1","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        # check for mstfwreset"},{"line_number":102,"context_line":"        execute(\u0027mstfwreset\u0027, \u0027-v\u0027)"},{"line_number":103,"context_line":"        # check for lspci"},{"line_number":104,"context_line":"        execute(\u0027lspci\u0027, \u0027--version\u0027)"},{"line_number":105,"context_line":"    except processutils.ProcessExecutionError as e:"},{"line_number":106,"context_line":"        LOG.error(\u0027Failed Prerequisite check. %s\u0027, str(e))"},{"line_number":107,"context_line":"        raise e"}],"source_content_type":"text/x-python","patch_set":32,"id":"7fd91fe9_631a84eb","line":104,"in_reply_to":"20dd8aae_856bef31","updated":"2023-01-08 09:56:17.000000000","message":"Done","commit_id":"f27cc8412b4b225a6b6103b7aa82387abd3bc3d1"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"c6fcd2b0045655eaa09c368c4881b2a0435fcb0e","unresolved":true,"context_lines":[{"line_number":309,"context_line":"        :returns:   None"},{"line_number":310,"context_line":"        :raises:    processutils.ProcessExecutionError"},{"line_number":311,"context_line":"        \"\"\""},{"line_number":312,"context_line":"        if self._devs:"},{"line_number":313,"context_line":"            return self._devs"},{"line_number":314,"context_line":"        devs \u003d []"},{"line_number":315,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"94a1cb75_6d1677e2","line":312,"updated":"2023-01-04 20:20:23.000000000","message":"let change it to len(self._devs) \u003e 0","commit_id":"f27cc8412b4b225a6b6103b7aa82387abd3bc3d1"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"bcf049fb6a169b700f8b3abc0c30fc06f3ed3ed1","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        :returns:   None"},{"line_number":310,"context_line":"        :raises:    processutils.ProcessExecutionError"},{"line_number":311,"context_line":"        \"\"\""},{"line_number":312,"context_line":"        if self._devs:"},{"line_number":313,"context_line":"            return self._devs"},{"line_number":314,"context_line":"        devs \u003d []"},{"line_number":315,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"9a7133b6_3b9f90c5","line":312,"in_reply_to":"94a1cb75_6d1677e2","updated":"2023-01-08 09:56:17.000000000","message":"Done","commit_id":"f27cc8412b4b225a6b6103b7aa82387abd3bc3d1"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"c6fcd2b0045655eaa09c368c4881b2a0435fcb0e","unresolved":true,"context_lines":[{"line_number":360,"context_line":"    system"},{"line_number":361,"context_line":"    \"\"\""},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"    def __init__(self, url, checksum, checksum_type, component_id, version):"},{"line_number":364,"context_line":"        self.url \u003d url"},{"line_number":365,"context_line":"        self.checksum \u003d checksum"},{"line_number":366,"context_line":"        self.checksum_type \u003d checksum_type"}],"source_content_type":"text/x-python","patch_set":32,"id":"d9b0f7cb_f3b7fed7","line":363,"range":{"start_line":363,"start_character":53,"end_line":363,"end_character":65},"updated":"2023-01-04 20:20:23.000000000","message":"this need to change component_flavor right?","commit_id":"f27cc8412b4b225a6b6103b7aa82387abd3bc3d1"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"bcf049fb6a169b700f8b3abc0c30fc06f3ed3ed1","unresolved":false,"context_lines":[{"line_number":360,"context_line":"    system"},{"line_number":361,"context_line":"    \"\"\""},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"    def __init__(self, url, checksum, checksum_type, component_id, version):"},{"line_number":364,"context_line":"        self.url \u003d url"},{"line_number":365,"context_line":"        self.checksum \u003d checksum"},{"line_number":366,"context_line":"        self.checksum_type \u003d checksum_type"}],"source_content_type":"text/x-python","patch_set":32,"id":"bb5ee4ac_949f329c","line":363,"range":{"start_line":363,"start_character":53,"end_line":363,"end_character":65},"in_reply_to":"d9b0f7cb_f3b7fed7","updated":"2023-01-08 09:56:17.000000000","message":"Done","commit_id":"f27cc8412b4b225a6b6103b7aa82387abd3bc3d1"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"c6fcd2b0045655eaa09c368c4881b2a0435fcb0e","unresolved":true,"context_lines":[{"line_number":571,"context_line":"        seen_nics \u003d set()"},{"line_number":572,"context_line":"        for nic in nvidia_nics:"},{"line_number":573,"context_line":"            if self.filtered_images_psid_dict.get(nic.dev_psid):"},{"line_number":574,"context_line":"                prefix \u003d nic.dev_pci[:-1]"},{"line_number":575,"context_line":"                is_seen_nic \u003d prefix in seen_nics"},{"line_number":576,"context_line":"                if not is_seen_nic:"},{"line_number":577,"context_line":"                    seen_nics.add(prefix)"}],"source_content_type":"text/x-python","patch_set":32,"id":"c5b3d379_1452c8d0","line":574,"updated":"2023-01-04 20:20:23.000000000","message":"what is prefix ?","commit_id":"f27cc8412b4b225a6b6103b7aa82387abd3bc3d1"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"bcf049fb6a169b700f8b3abc0c30fc06f3ed3ed1","unresolved":false,"context_lines":[{"line_number":571,"context_line":"        seen_nics \u003d set()"},{"line_number":572,"context_line":"        for nic in nvidia_nics:"},{"line_number":573,"context_line":"            if self.filtered_images_psid_dict.get(nic.dev_psid):"},{"line_number":574,"context_line":"                prefix \u003d nic.dev_pci[:-1]"},{"line_number":575,"context_line":"                is_seen_nic \u003d prefix in seen_nics"},{"line_number":576,"context_line":"                if not is_seen_nic:"},{"line_number":577,"context_line":"                    seen_nics.add(prefix)"}],"source_content_type":"text/x-python","patch_set":32,"id":"af7ddbed_9ac68f38","line":574,"in_reply_to":"c5b3d379_1452c8d0","updated":"2023-01-08 09:56:17.000000000","message":"prefix is the pci address without the function number, we use it to check if we saw the nic before or not\nchanging it to pci_prefix","commit_id":"f27cc8412b4b225a6b6103b7aa82387abd3bc3d1"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"c6fcd2b0045655eaa09c368c4881b2a0435fcb0e","unresolved":true,"context_lines":[{"line_number":706,"context_line":"                             \u0027configured as %s no need to update it\u0027,"},{"line_number":707,"context_line":"                             key, self.nvidia_dev.dev_pci, value)"},{"line_number":708,"context_line":"            except ValueError:"},{"line_number":709,"context_line":"                # Handle other integers values"},{"line_number":710,"context_line":"                if str(value).lower() not in \\"},{"line_number":711,"context_line":"                        str(current_mlx_config.get(key)).lower():"},{"line_number":712,"context_line":"                    # Aggregate all configurations required to be modified"}],"source_content_type":"text/x-python","patch_set":32,"id":"ee7700db_e371d0ae","line":709,"updated":"2023-01-04 20:20:23.000000000","message":"what do you mean handler other integers values?","commit_id":"f27cc8412b4b225a6b6103b7aa82387abd3bc3d1"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"bcf049fb6a169b700f8b3abc0c30fc06f3ed3ed1","unresolved":false,"context_lines":[{"line_number":706,"context_line":"                             \u0027configured as %s no need to update it\u0027,"},{"line_number":707,"context_line":"                             key, self.nvidia_dev.dev_pci, value)"},{"line_number":708,"context_line":"            except ValueError:"},{"line_number":709,"context_line":"                # Handle other integers values"},{"line_number":710,"context_line":"                if str(value).lower() not in \\"},{"line_number":711,"context_line":"                        str(current_mlx_config.get(key)).lower():"},{"line_number":712,"context_line":"                    # Aggregate all configurations required to be modified"}],"source_content_type":"text/x-python","patch_set":32,"id":"7987f6fd_6f689d6e","line":709,"in_reply_to":"ee7700db_e371d0ae","updated":"2023-01-08 09:56:17.000000000","message":"For some config parameters, we can set the value using int/bool, int/str values like {\"SRIOV\": \"False(0)\", \"LINK_TYPE_P1\": \"ETH(2)\"}\nbut yes in general we can change the comment to handle other values","commit_id":"f27cc8412b4b225a6b6103b7aa82387abd3bc3d1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"253cf45c6ff1211cd911785b224501f12ac87bb7","unresolved":true,"context_lines":[{"line_number":106,"context_line":"        # check for lspci"},{"line_number":107,"context_line":"        utils.execute(\u0027lspci\u0027, \u0027--version\u0027)"},{"line_number":108,"context_line":"    except processutils.ProcessExecutionError as e:"},{"line_number":109,"context_line":"        LOG.error(\u0027Failed Prerequisite check. %s\u0027, str(e))"},{"line_number":110,"context_line":"        raise e"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"7facec8d_e61fd287","line":109,"range":{"start_line":109,"start_character":51,"end_line":109,"end_character":57},"updated":"2023-01-10 15:22:25.000000000","message":"nit: you should not need to explicitly cast using str(), the %s does it for you","commit_id":"fbde381271bc43f1c17eeb65cb410e1a4165c296"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"4a8f96371569bb5866a5986d81dcc6ba08062fd1","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        # check for lspci"},{"line_number":107,"context_line":"        utils.execute(\u0027lspci\u0027, \u0027--version\u0027)"},{"line_number":108,"context_line":"    except processutils.ProcessExecutionError as e:"},{"line_number":109,"context_line":"        LOG.error(\u0027Failed Prerequisite check. %s\u0027, str(e))"},{"line_number":110,"context_line":"        raise e"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"9a34b23d_96b7b610","line":109,"range":{"start_line":109,"start_character":51,"end_line":109,"end_character":57},"in_reply_to":"7facec8d_e61fd287","updated":"2023-01-11 14:14:46.000000000","message":"Done","commit_id":"fbde381271bc43f1c17eeb65cb410e1a4165c296"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"253cf45c6ff1211cd911785b224501f12ac87bb7","unresolved":true,"context_lines":[{"line_number":731,"context_line":"                raise UnSupportedConfigByFW(error_msg\u003d_(err))"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    def set_config(self):"},{"line_number":734,"context_line":"        \"\"\"Set device configurations"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"        :param conf_dict:   a dict of:"},{"line_number":737,"context_line":"                            {\u0027PARAM_NAME\u0027: \u0027Param value to set\u0027, ...}"}],"source_content_type":"text/x-python","patch_set":34,"id":"a40519e1_d25de4da","line":734,"updated":"2023-01-10 15:22:25.000000000","message":"nit: seems like we\u0027re going to need a way to expose the current configuration at some point. Otherwise it might be a bit difficult to configure.","commit_id":"fbde381271bc43f1c17eeb65cb410e1a4165c296"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"4a8f96371569bb5866a5986d81dcc6ba08062fd1","unresolved":false,"context_lines":[{"line_number":731,"context_line":"                raise UnSupportedConfigByFW(error_msg\u003d_(err))"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    def set_config(self):"},{"line_number":734,"context_line":"        \"\"\"Set device configurations"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"        :param conf_dict:   a dict of:"},{"line_number":737,"context_line":"                            {\u0027PARAM_NAME\u0027: \u0027Param value to set\u0027, ...}"}],"source_content_type":"text/x-python","patch_set":34,"id":"763e944b_ffad5e37","line":734,"in_reply_to":"a40519e1_d25de4da","updated":"2023-01-11 14:14:46.000000000","message":"We are going to provide a solution in a follow-up patch to expose the current configuration","commit_id":"fbde381271bc43f1c17eeb65cb410e1a4165c296"}],"ironic_python_agent/hardware_managers/nvidia_fw_update.py":[{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"47d01982aafd8ce3ec03a17be33185722f6b7857","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 Mellanox Technologies, Ltd"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":17,"id":"c1fa995b_38bb9025","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":12},"updated":"2022-06-30 18:22:07.000000000","message":"update copy right to Nvidia and update year","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"6fb4df84b0cfdd72373710eeae384342edeeaa58","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 Mellanox Technologies, Ltd"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":17,"id":"6682983b_97cb4c13","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":12},"in_reply_to":"c1fa995b_38bb9025","updated":"2022-06-30 19:34:16.000000000","message":"This suggestion is in violation of OpenStack policy to not modify these, but instead be additive. See: https://wiki.openstack.org/wiki/Documentation/Copyright\n\n\u003e If you update a page, you can add the entity you represent (self or organization) to the list of Copyright holders, but do not remove any listed Copyright headings. If the content has been substantially updated in 2013, add the year to the change. If no substantive updates or revisions have been made to the copyrighted material, the year does not need to be updated.","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"47d01982aafd8ce3ec03a17be33185722f6b7857","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 Mellanox Technologies, Ltd"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."},{"line_number":5,"context_line":"# You may obtain a copy of the License at"},{"line_number":6,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":17,"id":"8aec5169_a7e974cd","line":3,"updated":"2022-06-30 18:22:07.000000000","message":"I think it is better to create nvidia folder  under the ironic_python_agent/hardware_managers and move the mlnx.py and this file there. \nand update the entrypoint https://github.com/openstack/ironic-python-agent/blob/master/setup.cfg#L48. \n\nMaybe we should rename the mlnx.py to nvidia.py.","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c871c6361d0b1ef335e429c161e4b2f122a12ca1","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 Mellanox Technologies, Ltd"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."},{"line_number":5,"context_line":"# You may obtain a copy of the License at"},{"line_number":6,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":17,"id":"d23da941_c5a3ce72","line":3,"in_reply_to":"83a0f8a0_b04b5f72","updated":"2022-07-04 09:27:41.000000000","message":"yeah you are right,\nMellanox was acquihired by Nvidia 2 years ago","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"6fb4df84b0cfdd72373710eeae384342edeeaa58","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 Mellanox Technologies, Ltd"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."},{"line_number":5,"context_line":"# You may obtain a copy of the License at"},{"line_number":6,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":17,"id":"83a0f8a0_b04b5f72","line":3,"in_reply_to":"8aec5169_a7e974cd","updated":"2022-06-30 19:34:16.000000000","message":"So, if I glean from context, mellanox was bought by nvidia or similar?\n\nMoving this file is potentially OK, but changing the entrypoint it exposes is a breaking change and will not be acceptable.","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"47d01982aafd8ce3ec03a17be33185722f6b7857","unresolved":true,"context_lines":[{"line_number":33,"context_line":"LOG \u003d log.getLogger()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"\"\"\""},{"line_number":36,"context_line":"Example of config.yaml configuration file:"},{"line_number":37,"context_line":"["},{"line_number":38,"context_line":"{"},{"line_number":39,"context_line":"\"selectors\": {"}],"source_content_type":"text/x-python","patch_set":17,"id":"99ad50cb_cccfa9b3","line":36,"updated":"2022-06-30 18:22:07.000000000","message":"it yaml or json?","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c871c6361d0b1ef335e429c161e4b2f122a12ca1","unresolved":false,"context_lines":[{"line_number":33,"context_line":"LOG \u003d log.getLogger()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"\"\"\""},{"line_number":36,"context_line":"Example of config.yaml configuration file:"},{"line_number":37,"context_line":"["},{"line_number":38,"context_line":"{"},{"line_number":39,"context_line":"\"selectors\": {"}],"source_content_type":"text/x-python","patch_set":17,"id":"8ae8e5b0_c49031ea","line":36,"in_reply_to":"99ad50cb_cccfa9b3","updated":"2022-07-04 09:27:41.000000000","message":"it supports both","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"47d01982aafd8ce3ec03a17be33185722f6b7857","unresolved":true,"context_lines":[{"line_number":36,"context_line":"Example of config.yaml configuration file:"},{"line_number":37,"context_line":"["},{"line_number":38,"context_line":"{"},{"line_number":39,"context_line":"\"selectors\": {"},{"line_number":40,"context_line":"  \"devices\": [\"1018\"],"},{"line_number":41,"context_line":"  \"psidList\": [],"},{"line_number":42,"context_line":"  \"pciList\": []},"}],"source_content_type":"text/x-python","patch_set":17,"id":"a275e9e7_8b7825cc","line":39,"updated":"2022-06-30 18:22:07.000000000","message":"can you pritty print the config?","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c871c6361d0b1ef335e429c161e4b2f122a12ca1","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Example of config.yaml configuration file:"},{"line_number":37,"context_line":"["},{"line_number":38,"context_line":"{"},{"line_number":39,"context_line":"\"selectors\": {"},{"line_number":40,"context_line":"  \"devices\": [\"1018\"],"},{"line_number":41,"context_line":"  \"psidList\": [],"},{"line_number":42,"context_line":"  \"pciList\": []},"}],"source_content_type":"text/x-python","patch_set":17,"id":"a9c73440_dbe2ba4a","line":39,"in_reply_to":"a275e9e7_8b7825cc","updated":"2022-07-04 09:27:41.000000000","message":"Done","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"47d01982aafd8ce3ec03a17be33185722f6b7857","unresolved":true,"context_lines":[{"line_number":113,"context_line":"        if running_fw_ver:"},{"line_number":114,"context_line":"            query_info[\"running_fw_ver\"] \u003d running_fw_ver.group(\u0027fw_ver\u0027)"},{"line_number":115,"context_line":"        if psid:"},{"line_number":116,"context_line":"            query_info[\"psid\"] \u003d psid.group(\u0027psid\u0027)"},{"line_number":117,"context_line":"    return query_info"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"6c3a8097_e027c00a","line":116,"updated":"2022-06-30 18:22:07.000000000","message":"don\u0027t you need to validate that fw_ver and running_fw_ver and psid exist in the dict. Is there a case which one of them will be missing?","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c871c6361d0b1ef335e429c161e4b2f122a12ca1","unresolved":true,"context_lines":[{"line_number":113,"context_line":"        if running_fw_ver:"},{"line_number":114,"context_line":"            query_info[\"running_fw_ver\"] \u003d running_fw_ver.group(\u0027fw_ver\u0027)"},{"line_number":115,"context_line":"        if psid:"},{"line_number":116,"context_line":"            query_info[\"psid\"] \u003d psid.group(\u0027psid\u0027)"},{"line_number":117,"context_line":"    return query_info"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"c11fc64e_f9e48ebe","line":116,"in_reply_to":"6c3a8097_e027c00a","updated":"2022-07-04 09:27:41.000000000","message":"psid and fw_ver, must be exist, running_fw_ver depends if fw update happened before or not and it\u0027s handled in the code where it\u0027s used","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"47d01982aafd8ce3ec03a17be33185722f6b7857","unresolved":true,"context_lines":[{"line_number":157,"context_line":"            self.query_device()"},{"line_number":158,"context_line":"        LOG.info(\"Device firmware version: \", self.dev_info[\u0027fw_ver\u0027],"},{"line_number":159,"context_line":"                 \", Image firmware version: \", image_info[\u0027fw_ver\u0027])"},{"line_number":160,"context_line":"        return self.dev_info[\u0027fw_ver\u0027] \u003c image_info[\u0027fw_ver\u0027]"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def need_reset_before_config(self, force_update\u003dFalse):"},{"line_number":163,"context_line":"        \"\"\"Check if nic device requires firmware reset before applying any"}],"source_content_type":"text/x-python","patch_set":17,"id":"81ad15ae_4bc33adf","line":160,"updated":"2022-06-30 18:22:07.000000000","message":"what are you comparing? string?","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c871c6361d0b1ef335e429c161e4b2f122a12ca1","unresolved":true,"context_lines":[{"line_number":157,"context_line":"            self.query_device()"},{"line_number":158,"context_line":"        LOG.info(\"Device firmware version: \", self.dev_info[\u0027fw_ver\u0027],"},{"line_number":159,"context_line":"                 \", Image firmware version: \", image_info[\u0027fw_ver\u0027])"},{"line_number":160,"context_line":"        return self.dev_info[\u0027fw_ver\u0027] \u003c image_info[\u0027fw_ver\u0027]"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def need_reset_before_config(self, force_update\u003dFalse):"},{"line_number":163,"context_line":"        \"\"\"Check if nic device requires firmware reset before applying any"}],"source_content_type":"text/x-python","patch_set":17,"id":"03e0496f_85aa04c8","line":160,"in_reply_to":"81ad15ae_4bc33adf","updated":"2022-07-04 09:27:41.000000000","message":"yes, for the fw versions, string comparing is OK","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"47d01982aafd8ce3ec03a17be33185722f6b7857","unresolved":true,"context_lines":[{"line_number":169,"context_line":"        if force_update:"},{"line_number":170,"context_line":"            return True"},{"line_number":171,"context_line":"        self.query_device(force\u003dTrue)"},{"line_number":172,"context_line":"        is_image_changed \u003d \u0027running_fw_ver\u0027 in self.dev_info and \\"},{"line_number":173,"context_line":"                           self.dev_info[\u0027running_fw_ver\u0027] !\u003d \\"},{"line_number":174,"context_line":"                           self.dev_info[\u0027fw_ver\u0027]"},{"line_number":175,"context_line":"        return is_image_changed"}],"source_content_type":"text/x-python","patch_set":17,"id":"56d6fba1_aa1b8025","line":172,"updated":"2022-06-30 18:22:07.000000000","message":"I think you can drop this check \u0027running_fw_ver\u0027 in self.dev_info if you will validate in parse_mstflint_query_output","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"c871c6361d0b1ef335e429c161e4b2f122a12ca1","unresolved":true,"context_lines":[{"line_number":169,"context_line":"        if force_update:"},{"line_number":170,"context_line":"            return True"},{"line_number":171,"context_line":"        self.query_device(force\u003dTrue)"},{"line_number":172,"context_line":"        is_image_changed \u003d \u0027running_fw_ver\u0027 in self.dev_info and \\"},{"line_number":173,"context_line":"                           self.dev_info[\u0027running_fw_ver\u0027] !\u003d \\"},{"line_number":174,"context_line":"                           self.dev_info[\u0027fw_ver\u0027]"},{"line_number":175,"context_line":"        return is_image_changed"}],"source_content_type":"text/x-python","patch_set":17,"id":"32f518ba_67054a48","line":172,"in_reply_to":"56d6fba1_aa1b8025","updated":"2022-07-04 09:27:41.000000000","message":"The check here to make sure if fw update happened or not, running_fw_ver will only has a value in case the image was updated","commit_id":"c19479256891e30e0068ac0b710c44146f5bf47b"}],"ironic_python_agent/netutils.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":"44121e6fcc391e32a51b2906443e31127e7e6b45","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"def get_pci_address(interface_name):"},{"line_number":257,"context_line":"    try:"},{"line_number":258,"context_line":"        out, err \u003d processutils.execute(\u0027ethtool\u0027, \u0027-i\u0027, interface_name)"},{"line_number":259,"context_line":"        if not err:"},{"line_number":260,"context_line":"            for item in out.split(\u0027\\n\u0027):"},{"line_number":261,"context_line":"                if \u0027bus-info\u0027 in item:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_4e410036","line":258,"range":{"start_line":258,"start_character":40,"end_line":258,"end_character":49},"updated":"2018-07-16 17:53:44.000000000","message":"Do we just expect this to already be present?","commit_id":"69747428519ce25a28d9798ca659034745e0d74f"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"ab9b579b6d64c34c5e583485e6ec9e8e96ea0a00","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"def get_pci_address(interface_name):"},{"line_number":257,"context_line":"    try:"},{"line_number":258,"context_line":"        out, err \u003d processutils.execute(\u0027ethtool\u0027, \u0027-i\u0027, interface_name)"},{"line_number":259,"context_line":"        if not err:"},{"line_number":260,"context_line":"            for item in out.split(\u0027\\n\u0027):"},{"line_number":261,"context_line":"                if \u0027bus-info\u0027 in item:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_115aa91d","line":258,"range":{"start_line":258,"start_character":40,"end_line":258,"end_character":49},"in_reply_to":"5f7c97a3_4e410036","updated":"2018-07-23 20:34:42.000000000","message":"You are right it\u0027s not exist, it\u0027s better to use python libraries :)","commit_id":"69747428519ce25a28d9798ca659034745e0d74f"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"cb23336a7f276c337981ffe1c18f5d8c2688237b","unresolved":false,"context_lines":[{"line_number":256,"context_line":"def get_interface_name(mac_addr):"},{"line_number":257,"context_line":"    mac_dict \u003d get_mac_dict()"},{"line_number":258,"context_line":"    try:"},{"line_number":259,"context_line":"        return mac_dict[mac_addr]"},{"line_number":260,"context_line":"    except (ValueError, IndexError, KeyError):"},{"line_number":261,"context_line":"        return None"},{"line_number":262,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_b07c6f83","line":259,"updated":"2018-08-13 23:04:24.000000000","message":"This could probably just be \n\u003e mac_dict \u003d get_mac_dict()\n\u003e return mac_dict.get(mac_addr)","commit_id":"368f605836b474bc836ea6f496a418d9e59ee9fd"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"b3ddc333b0eced98de4846b44aa2a9c8ac4eccf6","unresolved":false,"context_lines":[{"line_number":256,"context_line":"def get_interface_name(mac_addr):"},{"line_number":257,"context_line":"    mac_dict \u003d get_mac_dict()"},{"line_number":258,"context_line":"    try:"},{"line_number":259,"context_line":"        return mac_dict[mac_addr]"},{"line_number":260,"context_line":"    except (ValueError, IndexError, KeyError):"},{"line_number":261,"context_line":"        return None"},{"line_number":262,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_01a5a946","line":259,"in_reply_to":"3f79a3b5_b07c6f83","updated":"2018-08-15 21:57:53.000000000","message":"Done","commit_id":"368f605836b474bc836ea6f496a418d9e59ee9fd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3aab581e82a6889a60e18bcdeaac139f4c8be142","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        return"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"def get_mac_dict():"},{"line_number":246,"context_line":"    mac_dict \u003d dict()"},{"line_number":247,"context_line":"    for port in netifaces.interfaces():"},{"line_number":248,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_e7b2c8e5","line":245,"updated":"2018-09-25 02:35:26.000000000","message":"Nit: It would be awesome if this described what data to expect.","commit_id":"09f67ac1b325c609eff412de547bb676ac711031"}],"ironic_python_agent/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":"440c7d6486effc312e8e02209f862994f83d3444","unresolved":false,"context_lines":[{"line_number":435,"context_line":"    return verify, cert"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"def str2bool(v):"},{"line_number":439,"context_line":"    if v is None:"},{"line_number":440,"context_line":"        return False"},{"line_number":441,"context_line":"    else:"},{"line_number":442,"context_line":"        return str(v).lower() in (\"yes\", \"true\", \"t\", \"1\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_61003836","line":442,"range":{"start_line":438,"start_character":0,"end_line":442,"end_character":58},"updated":"2018-07-31 20:10:30.000000000","message":"oslo has a helper for this. https://github.com/openstack/oslo.utils/blob/master/oslo_utils/strutils.py#L114","commit_id":"1d88a74241522b8df782033134772a968a30699c"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"9cbf76fbdc6ffab195165b4187b99a9dc08e9231","unresolved":false,"context_lines":[{"line_number":435,"context_line":"    return verify, cert"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"def str2bool(v):"},{"line_number":439,"context_line":"    if v is None:"},{"line_number":440,"context_line":"        return False"},{"line_number":441,"context_line":"    else:"},{"line_number":442,"context_line":"        return str(v).lower() in (\"yes\", \"true\", \"t\", \"1\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_84481d87","line":442,"range":{"start_line":438,"start_character":0,"end_line":442,"end_character":58},"in_reply_to":"5f7c97a3_61003836","updated":"2018-08-13 19:53:15.000000000","message":"Done","commit_id":"1d88a74241522b8df782033134772a968a30699c"}],"releasenotes/notes/feature-2010228-cf3a59b88f07c3a7.yaml":[{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4471fa785ea17d48114cb041fd3c23732a18217f","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":"    Add two clean steps MellanoxDeviceHardwareManager to update "},{"line_number":5,"context_line":"    NVIDIA NICs firmware images and settings,"},{"line_number":6,"context_line":"    * update_nvidia_nic_firmware_image"},{"line_number":7,"context_line":"    * update_nvidia_nic_firmware_settings"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"4107d764_68e24c21","line":4,"updated":"2022-12-26 07:56:06.000000000","message":"remove space","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"e371ae6cd659188741e8fd3ea204eae8c74d9e1d","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":"    Add two clean steps MellanoxDeviceHardwareManager to update "},{"line_number":5,"context_line":"    NVIDIA NICs firmware images and settings,"},{"line_number":6,"context_line":"    * update_nvidia_nic_firmware_image"},{"line_number":7,"context_line":"    * update_nvidia_nic_firmware_settings"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"f5494303_ac49c7fb","line":4,"in_reply_to":"4107d764_68e24c21","updated":"2022-12-27 13:44:10.000000000","message":"Done","commit_id":"ebe32109b0309b29a8e6120c580699e6991827c2"}]}
