)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c405500d3c934ba14b7d4278ed23b5cff6784bb4","unresolved":false,"context_lines":[{"line_number":13,"context_line":"named \u0027idrac-redfish-virtual-media\u0027."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The iDRAC Redfish Service almost entirely interoperates with the virtual"},{"line_number":16,"context_line":"media boot workflow suggested by the Redfish standard. The only"},{"line_number":17,"context_line":"difference is configuring the system to boot from the inserted virtual"},{"line_number":18,"context_line":"media. The standard workflow expects it to be referred to as a CD-ROM or"},{"line_number":19,"context_line":"floppy disk drive boot source, no different from their physical"},{"line_number":20,"context_line":"counterparts. However, the iDRAC refers to them as virtual boot sources,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3fa7e38b_658d167a","line":17,"range":{"start_line":16,"start_character":55,"end_line":17,"end_character":10},"updated":"2019-09-23 07:47:15.000000000","message":"This is not the only, and, in fact, the least harmful deviation from the standard.\n\nWay more painful problem is the necessity to reboot the system upon changing boot device. This requirement gets even more nastier when combined with the need to change boot mode - both operations require node reboot *and* these two reboots can\u0027t be queued one by the other. Instead, the client needs to wait for the first reboot to complete, and only then the second reboot request would be accepted by iDRAD.\n\nThese hassles are being taken care of (partially) by the sushy-oem-dellemc extension.","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"2613cda20c3e37c44b6fb0757460a1df9b4a9683","unresolved":false,"context_lines":[{"line_number":27,"context_line":"\u0027idrac-redfish-virtual-media\u0027 is derived from the class which implements"},{"line_number":28,"context_line":"the generic, vendor-independent \u0027redfish-virtual-media\u0027 interface. It"},{"line_number":29,"context_line":"overrides the method which sets the boot device to facilitate use of the"},{"line_number":30,"context_line":"OEM extension."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The idrac hardware type declares support for that new interface"},{"line_number":33,"context_line":"implementation, in addition to all boot interface implementations it has"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3fa7e38b_5742fe3f","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":14},"updated":"2019-09-23 22:18:14.000000000","message":"for iDRAC redfish implementation?","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"fb6b945580eda46825b62abe1720b8aded712473","unresolved":false,"context_lines":[{"line_number":27,"context_line":"\u0027idrac-redfish-virtual-media\u0027 is derived from the class which implements"},{"line_number":28,"context_line":"the generic, vendor-independent \u0027redfish-virtual-media\u0027 interface. It"},{"line_number":29,"context_line":"overrides the method which sets the boot device to facilitate use of the"},{"line_number":30,"context_line":"OEM extension."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The idrac hardware type declares support for that new interface"},{"line_number":33,"context_line":"implementation, in addition to all boot interface implementations it has"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3fa7e38b_9d6ad7ea","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":14},"in_reply_to":"3fa7e38b_5742fe3f","updated":"2019-09-24 03:17:35.000000000","message":"Done","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c405500d3c934ba14b7d4278ed23b5cff6784bb4","unresolved":false,"context_lines":[{"line_number":33,"context_line":"implementation, in addition to all boot interface implementations it has"},{"line_number":34,"context_line":"been supporting. The priority order is retained by assigning the new"},{"line_number":35,"context_line":"\u0027idrac-redfish-virtual-media\u0027 the lowest priority."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Co-Authored-By: Richard G. Pioso \u003crichard.pioso@dell.com\u003e"},{"line_number":38,"context_line":"Story: 2006570"},{"line_number":39,"context_line":"Task: 36675"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3fa7e38b_45033ab9","line":36,"updated":"2019-09-23 07:47:15.000000000","message":"Should we note the introduction of new dependency - sushy-oem-idrac?","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"fb6b945580eda46825b62abe1720b8aded712473","unresolved":false,"context_lines":[{"line_number":33,"context_line":"implementation, in addition to all boot interface implementations it has"},{"line_number":34,"context_line":"been supporting. The priority order is retained by assigning the new"},{"line_number":35,"context_line":"\u0027idrac-redfish-virtual-media\u0027 the lowest priority."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Co-Authored-By: Richard G. Pioso \u003crichard.pioso@dell.com\u003e"},{"line_number":38,"context_line":"Story: 2006570"},{"line_number":39,"context_line":"Task: 36675"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3fa7e38b_bd6f93fa","line":36,"in_reply_to":"3fa7e38b_1748065a","updated":"2019-09-24 03:17:35.000000000","message":"Done","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"2613cda20c3e37c44b6fb0757460a1df9b4a9683","unresolved":false,"context_lines":[{"line_number":33,"context_line":"implementation, in addition to all boot interface implementations it has"},{"line_number":34,"context_line":"been supporting. The priority order is retained by assigning the new"},{"line_number":35,"context_line":"\u0027idrac-redfish-virtual-media\u0027 the lowest priority."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Co-Authored-By: Richard G. Pioso \u003crichard.pioso@dell.com\u003e"},{"line_number":38,"context_line":"Story: 2006570"},{"line_number":39,"context_line":"Task: 36675"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3fa7e38b_1748065a","line":36,"in_reply_to":"3fa7e38b_45033ab9","updated":"2019-09-23 22:18:14.000000000","message":"we should.","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"}],"driver-requirements.txt":[{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"2613cda20c3e37c44b6fb0757460a1df9b4a9683","unresolved":false,"context_lines":[{"line_number":20,"context_line":"python-ibmcclient\u003e\u003d0.1.0"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Dell EMC iDRAC sushy OEM extension"},{"line_number":23,"context_line":"sushy-oem-idrac\u003c\u003d0.1.0"}],"source_content_type":"text/plain","patch_set":20,"id":"3fa7e38b_f7a1aaf9","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":22},"updated":"2019-09-23 22:18:14.000000000","message":"should this be \"\u003e\" not \"\u003c\"?\nI think it will work with 0.1.0 exactly. Not sure about 0.0.x ones?","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"fb6b945580eda46825b62abe1720b8aded712473","unresolved":false,"context_lines":[{"line_number":20,"context_line":"python-ibmcclient\u003e\u003d0.1.0"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Dell EMC iDRAC sushy OEM extension"},{"line_number":23,"context_line":"sushy-oem-idrac\u003c\u003d0.1.0"}],"source_content_type":"text/plain","patch_set":20,"id":"3fa7e38b_bd02336e","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":22},"in_reply_to":"3fa7e38b_f7a1aaf9","updated":"2019-09-24 03:17:35.000000000","message":"This states ironic\u0027s dependency on the sushy-oem-idrac Python package can be satisfied by versions less than or equal to 0.1.0. The only existing release is 0.0.2, and it satisfies the dependency.\n\nsushy-oem-idrac uses Semantic Versioning [1].\n\n[1] https://semver.org/","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":31089,"name":"John Williams","email":"jtwill98@yahoo.com","username":"jtwill98"},"change_message_id":"36ccc8866a2775c27d33f926312088eda352ca46","unresolved":false,"context_lines":[{"line_number":20,"context_line":"python-ibmcclient\u003e\u003d0.1.0"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Dell EMC iDRAC sushy OEM extension"},{"line_number":23,"context_line":"sushy-oem-idrac\u003c\u003d0.1.0"}],"source_content_type":"text/plain","patch_set":23,"id":"3fa7e38b_f0e2e2d4","line":23,"range":{"start_line":23,"start_character":15,"end_line":23,"end_character":17},"updated":"2019-10-11 18:35:30.000000000","message":"Why would this be limited to less than 0.1.0?  What happens in the future if there a later version?  Is this a typo or intentional?","commit_id":"edad9363cfc9c2109180a8ae528ab39c3897c15a"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"24893322b9562021b77f32e5faf6146fc58d360c","unresolved":false,"context_lines":[{"line_number":20,"context_line":"python-ibmcclient\u003e\u003d0.1.0"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Dell EMC iDRAC sushy OEM extension"},{"line_number":23,"context_line":"sushy-oem-idrac\u003c\u003d0.1.0"}],"source_content_type":"text/plain","patch_set":23,"id":"3fa7e38b_1eed4fb6","line":23,"range":{"start_line":23,"start_character":15,"end_line":23,"end_character":17},"in_reply_to":"3fa7e38b_33288495","updated":"2019-10-11 20:40:37.000000000","message":"+1","commit_id":"edad9363cfc9c2109180a8ae528ab39c3897c15a"},{"author":{"_account_id":31089,"name":"John Williams","email":"jtwill98@yahoo.com","username":"jtwill98"},"change_message_id":"c169cb81c7e812c1bf58acbeb4e11ad3bd3aa3bf","unresolved":false,"context_lines":[{"line_number":20,"context_line":"python-ibmcclient\u003e\u003d0.1.0"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Dell EMC iDRAC sushy OEM extension"},{"line_number":23,"context_line":"sushy-oem-idrac\u003c\u003d0.1.0"}],"source_content_type":"text/plain","patch_set":23,"id":"3fa7e38b_b99bf5c6","line":23,"range":{"start_line":23,"start_character":15,"end_line":23,"end_character":17},"in_reply_to":"3fa7e38b_33288495","updated":"2019-10-11 21:23:46.000000000","message":"I\u0027m good.  Just wanted to ensure it was intentionally submitted and not a typo.","commit_id":"edad9363cfc9c2109180a8ae528ab39c3897c15a"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"d5d8cb421adf188c418cf4c47bb2eec7df5c749f","unresolved":false,"context_lines":[{"line_number":20,"context_line":"python-ibmcclient\u003e\u003d0.1.0"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Dell EMC iDRAC sushy OEM extension"},{"line_number":23,"context_line":"sushy-oem-idrac\u003c\u003d0.1.0"}],"source_content_type":"text/plain","patch_set":23,"id":"3fa7e38b_33288495","line":23,"range":{"start_line":23,"start_character":15,"end_line":23,"end_character":17},"in_reply_to":"3fa7e38b_f0e2e2d4","updated":"2019-10-11 20:09:12.000000000","message":"Well, this package is very new and might evolve. So I thought to pin ironic to reasonably current version for now. Before the next ironic release we might unpin it.\n\nDo you think I am being too cautious?","commit_id":"edad9363cfc9c2109180a8ae528ab39c3897c15a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0205305dc989acd3117f16bd22a8635e0f0e72a2","unresolved":false,"context_lines":[{"line_number":20,"context_line":"python-ibmcclient\u003e\u003d0.1.0"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Dell EMC iDRAC sushy OEM extension"},{"line_number":23,"context_line":"sushy-oem-idrac\u003c\u003d0.1.0"}],"source_content_type":"text/plain","patch_set":24,"id":"3fa7e38b_c5003837","line":23,"updated":"2019-10-14 11:17:24.000000000","message":"For versions in 0.x range, every minor version is considered breaking, so this is fine. We should aim to reach 1.0.0 asap, of course.","commit_id":"0ad6f8758747cf0d0796c89e0e8f8bdbf6f0421d"}],"ironic/drivers/drac.py":[{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"2613cda20c3e37c44b6fb0757460a1df9b4a9683","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    @property"},{"line_number":42,"context_line":"    def supported_boot_interfaces(self):"},{"line_number":43,"context_line":"        \"\"\"List of supported boot interfaces.\"\"\""},{"line_number":44,"context_line":"        return [ipxe.iPXEBoot, pxe.PXEBoot, boot.DracRedfishVirtualMediaBoot]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @property"},{"line_number":47,"context_line":"    def supported_management_interfaces(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_57b0be43","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":77},"updated":"2019-09-23 22:18:14.000000000","message":"Is that applicable for UEFI and legacy modes?","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"fb6b945580eda46825b62abe1720b8aded712473","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    @property"},{"line_number":42,"context_line":"    def supported_boot_interfaces(self):"},{"line_number":43,"context_line":"        \"\"\"List of supported boot interfaces.\"\"\""},{"line_number":44,"context_line":"        return [ipxe.iPXEBoot, pxe.PXEBoot, boot.DracRedfishVirtualMediaBoot]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @property"},{"line_number":47,"context_line":"    def supported_management_interfaces(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_bd37934d","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":77},"in_reply_to":"3fa7e38b_57b0be43","updated":"2019-09-24 03:17:35.000000000","message":"Yes, all three (3) of those boot interfaces are supported for both the UEFI and legacy BIOS boot modes.","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f1a6b9f99360ed5360995579057adc0f174d88ed","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    @property"},{"line_number":42,"context_line":"    def supported_boot_interfaces(self):"},{"line_number":43,"context_line":"        \"\"\"List of supported boot interfaces.\"\"\""},{"line_number":44,"context_line":"        return [ipxe.iPXEBoot, pxe.PXEBoot, boot.DracRedfishVirtualMediaBoot]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @property"},{"line_number":47,"context_line":"    def supported_management_interfaces(self):"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_786794b8","line":44,"updated":"2019-09-27 15:03:50.000000000","message":"Any reason not to make it go first? I would expect it to be the preferred option, if enabled","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"f7722e4bf7e8a20ca9e8676ce24a3e4c90a8f9f7","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    @property"},{"line_number":42,"context_line":"    def supported_boot_interfaces(self):"},{"line_number":43,"context_line":"        \"\"\"List of supported boot interfaces.\"\"\""},{"line_number":44,"context_line":"        return [ipxe.iPXEBoot, pxe.PXEBoot, boot.DracRedfishVirtualMediaBoot]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @property"},{"line_number":47,"context_line":"    def supported_management_interfaces(self):"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_a623a6a6","line":44,"in_reply_to":"3fa7e38b_786794b8","updated":"2019-10-07 23:15:33.000000000","message":"It is consistent with the management and boot Redfish interfaces for which support was recently added. They are last and have the lowest priority. Please see below. That was described by the specification -- https://opendev.org/openstack/ironic-specs/blame/commit/30d869182d259a3f2dbb01f5673ee78242b26007/specs/approved/idrac-support-of-redfish-interfaces.rst#L196-L209\n\nAlso, couldn\u0027t making it go first be a breaking change which should be deprecated? If not breaking, it feels like it would make it more confusing for operators who wish to create some, but not all, new nodes with the new interface? That is the rationale behind what is described by the specification.\n\nAnd it makes me wonder. What would Pixie Boots do?","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"33d89c3c3e249493990e9aafa5989f752b8ef338","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    @property"},{"line_number":42,"context_line":"    def supported_boot_interfaces(self):"},{"line_number":43,"context_line":"        \"\"\"List of supported boot interfaces.\"\"\""},{"line_number":44,"context_line":"        return [ipxe.iPXEBoot, pxe.PXEBoot, boot.DracRedfishVirtualMediaBoot]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @property"},{"line_number":47,"context_line":"    def supported_management_interfaces(self):"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_2ecd842f","line":44,"in_reply_to":"3fa7e38b_a623a6a6","updated":"2019-10-11 14:16:42.000000000","message":"Pixie boots would rock out and then after getting energy out, would want consistent experiences across versions, so I think making it the first, while... not ideal for adoption, is still best in the grand scheme of the universe.","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"}],"ironic/drivers/modules/drac/boot.py":[{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"e7ae254d63f0a89cd32c820172ba106cfebbe1f6","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    and `ramdisk_id` properties in the Glance image metadata found in"},{"line_number":59,"context_line":"    `[instance_info]image_source` node property."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    iDRAC virtual media boot interface only differs by the way how it"},{"line_number":62,"context_line":"    sets the node to boot from a virtual media device - this is done"},{"line_number":63,"context_line":"    via OEM action call implemented in Dell sushy OEM extension package."},{"line_number":64,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_f529e29a","line":61,"range":{"start_line":61,"start_character":55,"end_line":61,"end_character":66},"updated":"2019-09-19 15:30:00.000000000","message":"nit: just need \u0027the way\u0027 or \u0027how\u0027, not both.","commit_id":"06bc0be19553d0c23392b7554ada968079c6a1e8"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c405500d3c934ba14b7d4278ed23b5cff6784bb4","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    and `ramdisk_id` properties in the Glance image metadata found in"},{"line_number":59,"context_line":"    `[instance_info]image_source` node property."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    iDRAC virtual media boot interface only differs by the way how it"},{"line_number":62,"context_line":"    sets the node to boot from a virtual media device - this is done"},{"line_number":63,"context_line":"    via OEM action call implemented in Dell sushy OEM extension package."},{"line_number":64,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_e4f848c5","line":61,"range":{"start_line":61,"start_character":55,"end_line":61,"end_character":66},"in_reply_to":"3fa7e38b_f529e29a","updated":"2019-09-23 07:47:15.000000000","message":"Done","commit_id":"06bc0be19553d0c23392b7554ada968079c6a1e8"},{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"e7ae254d63f0a89cd32c820172ba106cfebbe1f6","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        # NOTE(etingof): always treat CD/floppy as virtual"},{"line_number":93,"context_line":"        if device not in cls.VIRTUAL_MEDIA_DEVICES:"},{"line_number":94,"context_line":"            LOG.info("},{"line_number":95,"context_line":"                \u0027Treating boot device %(device)s as a non-virtual \u0027"},{"line_number":96,"context_line":"                \u0027media device\u0027)"},{"line_number":97,"context_line":"            super(DracVirtualMediaBoot, cls)._set_boot_device("},{"line_number":98,"context_line":"                task, device, persistent)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_607e926c","line":95,"range":{"start_line":95,"start_character":38,"end_line":95,"end_character":48},"updated":"2019-09-19 15:30:00.000000000","message":"Missing the \u0027device\u0027 string substitution param?","commit_id":"06bc0be19553d0c23392b7554ada968079c6a1e8"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c405500d3c934ba14b7d4278ed23b5cff6784bb4","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        # NOTE(etingof): always treat CD/floppy as virtual"},{"line_number":93,"context_line":"        if device not in cls.VIRTUAL_MEDIA_DEVICES:"},{"line_number":94,"context_line":"            LOG.info("},{"line_number":95,"context_line":"                \u0027Treating boot device %(device)s as a non-virtual \u0027"},{"line_number":96,"context_line":"                \u0027media device\u0027)"},{"line_number":97,"context_line":"            super(DracVirtualMediaBoot, cls)._set_boot_device("},{"line_number":98,"context_line":"                task, device, persistent)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_642e9844","line":95,"range":{"start_line":95,"start_character":38,"end_line":95,"end_character":48},"in_reply_to":"3fa7e38b_607e926c","updated":"2019-09-23 07:47:15.000000000","message":"/me wants f-strings!","commit_id":"06bc0be19553d0c23392b7554ada968079c6a1e8"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"d43e7fd4ca5c4d84726ea601b3b7c1997a5db94b","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        # NOTE(etingof): always treat CD/floppy as virtual"},{"line_number":93,"context_line":"        if device not in cls.VIRTUAL_MEDIA_DEVICES:"},{"line_number":94,"context_line":"            LOG.info("},{"line_number":95,"context_line":"                \u0027Treating boot device %(device)s as a non-virtual \u0027"},{"line_number":96,"context_line":"                \u0027media device\u0027)"},{"line_number":97,"context_line":"            super(DracVirtualMediaBoot, cls)._set_boot_device("},{"line_number":98,"context_line":"                task, device, persistent)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_42b9f02b","line":95,"range":{"start_line":95,"start_character":38,"end_line":95,"end_character":48},"in_reply_to":"3fa7e38b_607e926c","updated":"2019-09-23 05:51:45.000000000","message":"Nice find! Done.","commit_id":"06bc0be19553d0c23392b7554ada968079c6a1e8"},{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"e7ae254d63f0a89cd32c820172ba106cfebbe1f6","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        for manager in system.managers:"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"            # NOTE(etingof): this call should make sushy go fishing for"},{"line_number":108,"context_line":"            # sushy extensions installed on the system. If found one"},{"line_number":109,"context_line":"            # for \u0027Dell\u0027 implementing \u0027Manager\u0027 resource extension, return"},{"line_number":110,"context_line":"            # it here."},{"line_number":111,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_80f62ef9","line":108,"range":{"start_line":108,"start_character":59,"end_line":108,"end_character":68},"updated":"2019-09-19 15:30:00.000000000","message":"nit: s/found one/one is found/","commit_id":"06bc0be19553d0c23392b7554ada968079c6a1e8"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c405500d3c934ba14b7d4278ed23b5cff6784bb4","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        for manager in system.managers:"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"            # NOTE(etingof): this call should make sushy go fishing for"},{"line_number":108,"context_line":"            # sushy extensions installed on the system. If found one"},{"line_number":109,"context_line":"            # for \u0027Dell\u0027 implementing \u0027Manager\u0027 resource extension, return"},{"line_number":110,"context_line":"            # it here."},{"line_number":111,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_e421284f","line":108,"range":{"start_line":108,"start_character":59,"end_line":108,"end_character":68},"in_reply_to":"3fa7e38b_80f62ef9","updated":"2019-09-23 07:47:15.000000000","message":"Done","commit_id":"06bc0be19553d0c23392b7554ada968079c6a1e8"},{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"e7ae254d63f0a89cd32c820172ba106cfebbe1f6","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                    \u0027that\\\u0027s required for this node to boot from virtual \u0027"},{"line_number":125,"context_line":"                    \u0027media has already been set up!\u0027)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"            # NOTE(etingof): this call is likely to reboot the beast what"},{"line_number":128,"context_line":"            # may consume one-time boot settings if set earlier"},{"line_number":129,"context_line":"            manager_oem.set_virtual_boot_device("},{"line_number":130,"context_line":"                device, persistent\u003dpersistent, manager\u003dmanager, system\u003dsystem)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_4046f623","line":127,"range":{"start_line":127,"start_character":69,"end_line":127,"end_character":73},"updated":"2019-09-19 15:30:00.000000000","message":"s/what/that/ maybe?","commit_id":"06bc0be19553d0c23392b7554ada968079c6a1e8"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c405500d3c934ba14b7d4278ed23b5cff6784bb4","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                    \u0027that\\\u0027s required for this node to boot from virtual \u0027"},{"line_number":125,"context_line":"                    \u0027media has already been set up!\u0027)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"            # NOTE(etingof): this call is likely to reboot the beast what"},{"line_number":128,"context_line":"            # may consume one-time boot settings if set earlier"},{"line_number":129,"context_line":"            manager_oem.set_virtual_boot_device("},{"line_number":130,"context_line":"                device, persistent\u003dpersistent, manager\u003dmanager, system\u003dsystem)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_84d63427","line":127,"range":{"start_line":127,"start_character":69,"end_line":127,"end_character":73},"in_reply_to":"3fa7e38b_4046f623","updated":"2019-09-23 07:47:15.000000000","message":"Send me back grammar school!","commit_id":"06bc0be19553d0c23392b7554ada968079c6a1e8"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"89e3a31be96141de791d2f2a3c5fd4260b2adbb4","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class DracRedfishVirtualMediaBoot(redfish_boot.RedfishVirtualMediaBoot):"},{"line_number":32,"context_line":"    \"\"\"iDRAC Redfish interface for virtual media boot-related actions."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    Virtual Media allows booting the system from \"virtual\""},{"line_number":35,"context_line":"    CD/DVD drive containing user image that BMC \"inserts\""},{"line_number":36,"context_line":"    into the drive."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    The CD/DVD images must be in ISO format and (depending on"},{"line_number":39,"context_line":"    BMC implementation) could be pulled over HTTP, served as"},{"line_number":40,"context_line":"    iSCSI targets or NFS volumes."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    The baseline boot workflow is mostly based on the standard"},{"line_number":43,"context_line":"    Redfish virtual media boot interface, which looks like"},{"line_number":44,"context_line":"    this:"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    1. Pull kernel, ramdisk and ESP if UEFI boot is requested (FAT partition"},{"line_number":47,"context_line":"       image with EFI boot loader) images"},{"line_number":48,"context_line":"    2. Create bootable ISO out of images (#1), push it to Glance and"},{"line_number":49,"context_line":"       pass to the BMC as Swift temporary URL"},{"line_number":50,"context_line":"    3. Optionally create floppy image with desired system configuration data,"},{"line_number":51,"context_line":"       push it to Glance and pass to the BMC as Swift temporary URL"},{"line_number":52,"context_line":"    4. Insert CD/DVD and (optionally) floppy images and set proper boot mode"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    For building deploy or rescue ISO, redfish boot interface uses"},{"line_number":55,"context_line":"    `deploy_kernel`/`deploy_ramdisk` or `rescue_kernel`/`rescue_ramdisk`"},{"line_number":56,"context_line":"    properties from `[instance_info]` or `[driver_info]`."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    For building boot (user) ISO, redfish boot interface seeks `kernel_id`"},{"line_number":59,"context_line":"    and `ramdisk_id` properties in the Glance image metadata found in"},{"line_number":60,"context_line":"    `[instance_info]image_source` node property."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    iDRAC virtual media boot interface only differs by the way how it"},{"line_number":63,"context_line":"    sets the node to boot from a virtual media device - this is done"},{"line_number":64,"context_line":"    via OEM action call implemented in Dell sushy OEM extension package."},{"line_number":65,"context_line":"    \"\"\""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    capabilities \u003d [\u0027iscsi_volume_boot\u0027, \u0027ramdisk_boot\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_0238d89d","line":64,"range":{"start_line":34,"start_character":0,"end_line":64,"end_character":72},"updated":"2019-09-23 06:03:15.000000000","message":"nit: Could this be pared down to highlight why and how it differs from its base class? Most of this docstring repeats what is in the base class.","commit_id":"19e8ce90fd56a692ab8c011558f997447ca2bf4a"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"89e3a31be96141de791d2f2a3c5fd4260b2adbb4","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        system \u003d redfish_utils.get_system(task.node)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        for manager in system.managers:"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"            # NOTE(etingof): this call should make sushy go fishing for"},{"line_number":109,"context_line":"            # sushy extensions installed on the system. If found one"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_824b6829","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":39},"updated":"2019-09-23 06:03:15.000000000","message":"I am unclear why there can be more than one manager.\n\nCould one or more of them not contain the OEM content relied on below?\n\nPerhaps Bill Dodd or Mike Raineri could offer insights.","commit_id":"19e8ce90fd56a692ab8c011558f997447ca2bf4a"},{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"a561ef5dfea18f24a1e0de26ad138ecade34b2e6","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        system \u003d redfish_utils.get_system(task.node)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        for manager in system.managers:"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"            # NOTE(etingof): this call should make sushy go fishing for"},{"line_number":109,"context_line":"            # sushy extensions installed on the system. If found one"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_7dccc260","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":39},"in_reply_to":"3fa7e38b_824b6829","updated":"2019-09-23 17:09:07.000000000","message":"I asked about this in the past. Mike Raineri and Jon Hass replied that the model does support an array of managers. But practically there would almost always be just one. And they did not know of any cases when a Dell service would have more than one.","commit_id":"19e8ce90fd56a692ab8c011558f997447ca2bf4a"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"89e3a31be96141de791d2f2a3c5fd4260b2adbb4","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            # NOTE(etingof): this call is likely to reboot the beast what"},{"line_number":129,"context_line":"            # may consume one-time boot settings if set earlier"},{"line_number":130,"context_line":"            manager_oem.set_virtual_boot_device("},{"line_number":131,"context_line":"                device, persistent\u003dpersistent, manager\u003dmanager, system\u003dsystem)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            LOG.info(\"Set node %(node)s boot device to %(device)s via \""}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_425570c5","line":130,"range":{"start_line":130,"start_character":24,"end_line":130,"end_character":47},"updated":"2019-09-23 06:03:15.000000000","message":"Could this be None? Please see my comment above about line 106.","commit_id":"19e8ce90fd56a692ab8c011558f997447ca2bf4a"},{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"a561ef5dfea18f24a1e0de26ad138ecade34b2e6","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            # NOTE(etingof): this call is likely to reboot the beast what"},{"line_number":129,"context_line":"            # may consume one-time boot settings if set earlier"},{"line_number":130,"context_line":"            manager_oem.set_virtual_boot_device("},{"line_number":131,"context_line":"                device, persistent\u003dpersistent, manager\u003dmanager, system\u003dsystem)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            LOG.info(\"Set node %(node)s boot device to %(device)s via \""}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_fd4f528f","line":130,"range":{"start_line":130,"start_character":24,"end_line":130,"end_character":47},"in_reply_to":"3fa7e38b_425570c5","updated":"2019-09-23 17:09:07.000000000","message":"I assume this could fail (raise an exception) if not supported by the manager, etc.","commit_id":"19e8ce90fd56a692ab8c011558f997447ca2bf4a"},{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"79c434fa64bff370ad4392a35038cf57d947eedb","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            # NOTE(etingof): this call is likely to reboot the beast what"},{"line_number":129,"context_line":"            # may consume one-time boot settings if set earlier"},{"line_number":130,"context_line":"            manager_oem.set_virtual_boot_device("},{"line_number":131,"context_line":"                device, persistent\u003dpersistent, manager\u003dmanager, system\u003dsystem)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            LOG.info(\"Set node %(node)s boot device to %(device)s via \""}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_14aa4470","line":130,"range":{"start_line":130,"start_character":24,"end_line":130,"end_character":47},"in_reply_to":"3fa7e38b_f47c4884","updated":"2019-09-23 20:46:40.000000000","message":"Ah, I see. I guess that question could be asked as: Are there iDRAC managers that would be missing the Oem Action ending with #OemManager.ImportSystemConfiguration? I don\u0027t know the answer to that.","commit_id":"19e8ce90fd56a692ab8c011558f997447ca2bf4a"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ad3ac27b88e9d89e96b8299f182490f77e815137","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            # NOTE(etingof): this call is likely to reboot the beast what"},{"line_number":129,"context_line":"            # may consume one-time boot settings if set earlier"},{"line_number":130,"context_line":"            manager_oem.set_virtual_boot_device("},{"line_number":131,"context_line":"                device, persistent\u003dpersistent, manager\u003dmanager, system\u003dsystem)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            LOG.info(\"Set node %(node)s boot device to %(device)s via \""}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_f47c4884","line":130,"range":{"start_line":130,"start_character":24,"end_line":130,"end_character":47},"in_reply_to":"3fa7e38b_fd4f528f","updated":"2019-09-23 20:16:17.000000000","message":"Thank you, Bill.\n\nAs you appear to have figured out, I miscommunicated by conflating the method, \u0027set_virtual_boot_device\u0027, with a property it depends on, \u0027import_system_configuration_uri\u0027. I was asking if that property could be None.","commit_id":"19e8ce90fd56a692ab8c011558f997447ca2bf4a"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"2613cda20c3e37c44b6fb0757460a1df9b4a9683","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                LOG.warning("},{"line_number":123,"context_line":"                    \u0027Setting virtual media boot device might cause node \u0027"},{"line_number":124,"context_line":"                    \u0027reboot. Setting one-time boot implies that everything \u0027"},{"line_number":125,"context_line":"                    \u0027that\\\u0027s required for this node to boot from virtual \u0027"},{"line_number":126,"context_line":"                    \u0027media has already been set up!\u0027)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            # NOTE(etingof): this call is likely to reboot the beast what"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_d706eece","line":125,"range":{"start_line":125,"start_character":21,"end_line":125,"end_character":28},"updated":"2019-09-23 22:18:14.000000000","message":"that\u0027s","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"fb6b945580eda46825b62abe1720b8aded712473","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                LOG.warning("},{"line_number":123,"context_line":"                    \u0027Setting virtual media boot device might cause node \u0027"},{"line_number":124,"context_line":"                    \u0027reboot. Setting one-time boot implies that everything \u0027"},{"line_number":125,"context_line":"                    \u0027that\\\u0027s required for this node to boot from virtual \u0027"},{"line_number":126,"context_line":"                    \u0027media has already been set up!\u0027)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            # NOTE(etingof): this call is likely to reboot the beast what"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_bd5eb373","line":125,"range":{"start_line":125,"start_character":21,"end_line":125,"end_character":28},"in_reply_to":"3fa7e38b_d706eece","updated":"2019-09-24 03:17:35.000000000","message":"The backslash escapes the single quote, so the string contains \"that\u0027s\". Without the backslash, that character would terminate the string \"that\" and there would be a syntax error due to a missing single quote before the \"s\".\n\n\u003e\u003e\u003e print(\u0027that\\\u0027s required for this node to boot from virtual \u0027)\nthat\u0027s required for this node to boot from virtual \n\u003e\u003e\u003e print(\u0027that\u0027s required for this node to boot from virtual \u0027)\n  File \"\u003cinput\u003e\", line 1\n    print(\u0027that\u0027s required for this node to boot from virtual \u0027)\n                ^\nSyntaxError: invalid syntax\n\u003e\u003e\u003e\n\nI have replaced the single quotes with double quotes to eliminate the need for the escape character.","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"984a1ed0a19349b2f30a4b9159e06e531030f2dd","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    via OEM action call implemented in Dell sushy OEM extension package."},{"line_number":65,"context_line":"    \"\"\""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    capabilities \u003d [\u0027iscsi_volume_boot\u0027, \u0027ramdisk_boot\u0027]"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    if sushy:"},{"line_number":70,"context_line":"        VIRTUAL_MEDIA_DEVICES \u003d {"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_c18a93bd","line":67,"updated":"2019-09-25 06:40:11.000000000","message":"So... This seems wrong. Iscsi volume boot would be from cinder. Ramdisk would be just kind of like virtual media.\n\nIn other words, iscsi volume boot tag could cause unexpected behavior to occur and one portion of driver code to think that this can boot from iscsi endpoints where it can\u0027t.","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f1a6b9f99360ed5360995579057adc0f174d88ed","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    via OEM action call implemented in Dell sushy OEM extension package."},{"line_number":65,"context_line":"    \"\"\""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    capabilities \u003d [\u0027iscsi_volume_boot\u0027, \u0027ramdisk_boot\u0027]"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    if sushy:"},{"line_number":70,"context_line":"        VIRTUAL_MEDIA_DEVICES \u003d {"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_1808e0d7","line":67,"updated":"2019-09-27 15:03:50.000000000","message":"Yeah, I don\u0027t think virtual media supports iSCSI boot. Ramdisk - probably.","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"51d6ba060906ed6b974aaa914a9e13ff50e9f2b5","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    via OEM action call implemented in Dell sushy OEM extension package."},{"line_number":65,"context_line":"    \"\"\""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    capabilities \u003d [\u0027iscsi_volume_boot\u0027, \u0027ramdisk_boot\u0027]"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    if sushy:"},{"line_number":70,"context_line":"        VIRTUAL_MEDIA_DEVICES \u003d {"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_938d0ad5","line":67,"in_reply_to":"3fa7e38b_1808e0d7","updated":"2019-10-07 22:08:13.000000000","message":"Functionally it is a ramdisk interface and I seem to remember the parent redfish interface did get pre-baked with the necessary ramdisk parts, just not user kernel arguemnts if that makes sense. (That being said, I think I have a patch for that in my review queue)","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"f7722e4bf7e8a20ca9e8676ce24a3e4c90a8f9f7","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    via OEM action call implemented in Dell sushy OEM extension package."},{"line_number":65,"context_line":"    \"\"\""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    capabilities \u003d [\u0027iscsi_volume_boot\u0027, \u0027ramdisk_boot\u0027]"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    if sushy:"},{"line_number":70,"context_line":"        VIRTUAL_MEDIA_DEVICES \u003d {"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_76c5dc3b","line":67,"in_reply_to":"3fa7e38b_938d0ad5","updated":"2019-10-07 23:15:33.000000000","message":"I have removed this so it will defer to its base class\u0027s value. If there is an issue with iSCSI volume boot, how about we address it there?","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"d839f5b3944abec6e2dc976d443ea86b671c0896","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    via OEM action call implemented in Dell sushy OEM extension package."},{"line_number":65,"context_line":"    \"\"\""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    capabilities \u003d [\u0027iscsi_volume_boot\u0027, \u0027ramdisk_boot\u0027]"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    if sushy:"},{"line_number":70,"context_line":"        VIRTUAL_MEDIA_DEVICES \u003d {"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_931a9fc9","line":67,"in_reply_to":"3fa7e38b_c18a93bd","updated":"2019-09-25 17:04:45.000000000","message":"I see the base class, redfish_boot.RedfishVirtualMediaBoot, defines the same -- https://opendev.org/openstack/ironic/src/commit/511477b697f1c1bf3779b4e327e4caea7f452cab/ironic/drivers/modules/redfish/boot.py#L112\n\nIs it necessary to define it here, too?","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f1a6b9f99360ed5360995579057adc0f174d88ed","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            ManagementInterface fails."},{"line_number":92,"context_line":"        \"\"\""},{"line_number":93,"context_line":"        # NOTE(etingof): always treat CD/floppy as virtual"},{"line_number":94,"context_line":"        if device not in cls.VIRTUAL_MEDIA_DEVICES:"},{"line_number":95,"context_line":"            LOG.info("},{"line_number":96,"context_line":"                \u0027Treating boot device %(device)s as a non-virtual \u0027"},{"line_number":97,"context_line":"                \u0027media device\u0027, {\u0027device\u0027: device})"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_380b5cd6","line":94,"updated":"2019-09-27 15:03:50.000000000","message":"Can it even happen?","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"f7722e4bf7e8a20ca9e8676ce24a3e4c90a8f9f7","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            ManagementInterface fails."},{"line_number":92,"context_line":"        \"\"\""},{"line_number":93,"context_line":"        # NOTE(etingof): always treat CD/floppy as virtual"},{"line_number":94,"context_line":"        if device not in cls.VIRTUAL_MEDIA_DEVICES:"},{"line_number":95,"context_line":"            LOG.info("},{"line_number":96,"context_line":"                \u0027Treating boot device %(device)s as a non-virtual \u0027"},{"line_number":97,"context_line":"                \u0027media device\u0027, {\u0027device\u0027: device})"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_a03ceee0","line":94,"in_reply_to":"3fa7e38b_380b5cd6","updated":"2019-10-07 23:15:33.000000000","message":"Yes, it appears it can. The base class\u0027s prepare_instance() calls this method in a couple of locations with ironic.common.boot_devices.DISK, e.g., https://opendev.org/openstack/ironic/src/commit/fd8b9747cbc8add5a4ee56edbc425024456fa043/ironic/drivers/modules/redfish/boot.py#L757-L758","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f1a6b9f99360ed5360995579057adc0f174d88ed","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        \"\"\""},{"line_number":93,"context_line":"        # NOTE(etingof): always treat CD/floppy as virtual"},{"line_number":94,"context_line":"        if device not in cls.VIRTUAL_MEDIA_DEVICES:"},{"line_number":95,"context_line":"            LOG.info("},{"line_number":96,"context_line":"                \u0027Treating boot device %(device)s as a non-virtual \u0027"},{"line_number":97,"context_line":"                \u0027media device\u0027, {\u0027device\u0027: device})"},{"line_number":98,"context_line":"            super(DracRedfishVirtualMediaBoot, cls)._set_boot_device("}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_d80d68e8","line":95,"updated":"2019-09-27 15:03:50.000000000","message":"s/info/debug/ (it\u0027s not overly useful for an operator)","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"f7722e4bf7e8a20ca9e8676ce24a3e4c90a8f9f7","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        \"\"\""},{"line_number":93,"context_line":"        # NOTE(etingof): always treat CD/floppy as virtual"},{"line_number":94,"context_line":"        if device not in cls.VIRTUAL_MEDIA_DEVICES:"},{"line_number":95,"context_line":"            LOG.info("},{"line_number":96,"context_line":"                \u0027Treating boot device %(device)s as a non-virtual \u0027"},{"line_number":97,"context_line":"                \u0027media device\u0027, {\u0027device\u0027: device})"},{"line_number":98,"context_line":"            super(DracRedfishVirtualMediaBoot, cls)._set_boot_device("}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_602276bb","line":95,"in_reply_to":"3fa7e38b_d80d68e8","updated":"2019-10-07 23:15:33.000000000","message":"Done","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f1a6b9f99360ed5360995579057adc0f174d88ed","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"            except sushy.exceptions.OEMExtensionNotFoundError:"},{"line_number":116,"context_line":"                LOG.warning("},{"line_number":117,"context_line":"                    \u0027Dell OEM extension for sushy failed to load for manager \u0027"},{"line_number":118,"context_line":"                    \u0027%(uuid)s\u0027, {\u0027uuid\u0027: manager.uuid})"},{"line_number":119,"context_line":"                continue"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_f8106402","line":117,"updated":"2019-09-27 15:03:50.000000000","message":"Let\u0027s mention the node UUID","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"f7722e4bf7e8a20ca9e8676ce24a3e4c90a8f9f7","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"            except sushy.exceptions.OEMExtensionNotFoundError:"},{"line_number":116,"context_line":"                LOG.warning("},{"line_number":117,"context_line":"                    \u0027Dell OEM extension for sushy failed to load for manager \u0027"},{"line_number":118,"context_line":"                    \u0027%(uuid)s\u0027, {\u0027uuid\u0027: manager.uuid})"},{"line_number":119,"context_line":"                continue"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_56e0e0cc","line":117,"in_reply_to":"3fa7e38b_d3506261","updated":"2019-10-07 23:15:33.000000000","message":"Done","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"51d6ba060906ed6b974aaa914a9e13ff50e9f2b5","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"            except sushy.exceptions.OEMExtensionNotFoundError:"},{"line_number":116,"context_line":"                LOG.warning("},{"line_number":117,"context_line":"                    \u0027Dell OEM extension for sushy failed to load for manager \u0027"},{"line_number":118,"context_line":"                    \u0027%(uuid)s\u0027, {\u0027uuid\u0027: manager.uuid})"},{"line_number":119,"context_line":"                continue"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_d3506261","line":117,"in_reply_to":"3fa7e38b_f8106402","updated":"2019-10-07 22:08:13.000000000","message":"++","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f1a6b9f99360ed5360995579057adc0f174d88ed","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                    \"Setting virtual media boot device might cause node \""},{"line_number":124,"context_line":"                    \"reboot. Setting one-time boot implies that everything \""},{"line_number":125,"context_line":"                    \"that\u0027s required for this node to boot from virtual \""},{"line_number":126,"context_line":"                    \"media has already been set up!\")"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            # NOTE(etingof): this call is likely to reboot the beast what"},{"line_number":129,"context_line":"            # may consume one-time boot settings if set earlier"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_98fb70bf","line":126,"updated":"2019-09-27 15:03:50.000000000","message":"What is the action item for an operator here? And what are the consequences, will it fail?","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"51d6ba060906ed6b974aaa914a9e13ff50e9f2b5","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                    \"Setting virtual media boot device might cause node \""},{"line_number":124,"context_line":"                    \"reboot. Setting one-time boot implies that everything \""},{"line_number":125,"context_line":"                    \"that\u0027s required for this node to boot from virtual \""},{"line_number":126,"context_line":"                    \"media has already been set up!\")"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            # NOTE(etingof): this call is likely to reboot the beast what"},{"line_number":129,"context_line":"            # may consume one-time boot settings if set earlier"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_d3d5c2b8","line":126,"in_reply_to":"3fa7e38b_98fb70bf","updated":"2019-10-07 22:08:13.000000000","message":"From what I can tell, latest boot settings will just not take effect.\n\nI feel like this is more of a debug level message in as much as anything because there is nothing really operator actionable here. Truthfully, it seems kind of silly to log at all, it is an unfortunate side effect.","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"f7722e4bf7e8a20ca9e8676ce24a3e4c90a8f9f7","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                    \"Setting virtual media boot device might cause node \""},{"line_number":124,"context_line":"                    \"reboot. Setting one-time boot implies that everything \""},{"line_number":125,"context_line":"                    \"that\u0027s required for this node to boot from virtual \""},{"line_number":126,"context_line":"                    \"media has already been set up!\")"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            # NOTE(etingof): this call is likely to reboot the beast what"},{"line_number":129,"context_line":"            # may consume one-time boot settings if set earlier"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_96d5f8e7","line":126,"in_reply_to":"3fa7e38b_d3d5c2b8","updated":"2019-10-07 23:15:33.000000000","message":"I believe this if statement was added during the fog of development and integration test to assist with debugging. One-time boot from inserted virtual media presented to the host as a CD-ROM or floppy disk drive works. No intermediate reboot is required.\n\nThis if statement has been removed.","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f1a6b9f99360ed5360995579057adc0f174d88ed","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                    \"media has already been set up!\")"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            # NOTE(etingof): this call is likely to reboot the beast what"},{"line_number":129,"context_line":"            # may consume one-time boot settings if set earlier"},{"line_number":130,"context_line":"            manager_oem.set_virtual_boot_device("},{"line_number":131,"context_line":"                device, persistent\u003dpersistent, manager\u003dmanager, system\u003dsystem)"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_b8f66cd6","line":129,"updated":"2019-09-27 15:03:50.000000000","message":"Right, so we need to disable non-persistent boot, right?","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"f7722e4bf7e8a20ca9e8676ce24a3e4c90a8f9f7","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                    \"media has already been set up!\")"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            # NOTE(etingof): this call is likely to reboot the beast what"},{"line_number":129,"context_line":"            # may consume one-time boot settings if set earlier"},{"line_number":130,"context_line":"            manager_oem.set_virtual_boot_device("},{"line_number":131,"context_line":"                device, persistent\u003dpersistent, manager\u003dmanager, system\u003dsystem)"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_06c87a71","line":129,"in_reply_to":"3fa7e38b_b8f66cd6","updated":"2019-10-07 23:15:33.000000000","message":"Similar to the above if statement, I believe this comment was added during the fog of development and integration test.\n\nThis comment has been removed.","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f1a6b9f99360ed5360995579057adc0f174d88ed","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                device, persistent\u003dpersistent, manager\u003dmanager, system\u003dsystem)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            LOG.info(\"Set node %(node)s boot device to %(device)s via \""},{"line_number":134,"context_line":"                     \"OEM magic\", {\u0027node\u0027: task.node.uuid,"},{"line_number":135,"context_line":"                                   \u0027device\u0027: device})"},{"line_number":136,"context_line":"            break"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_580178ae","line":134,"updated":"2019-09-27 15:03:50.000000000","message":"s/magic//","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"f7722e4bf7e8a20ca9e8676ce24a3e4c90a8f9f7","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                device, persistent\u003dpersistent, manager\u003dmanager, system\u003dsystem)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            LOG.info(\"Set node %(node)s boot device to %(device)s via \""},{"line_number":134,"context_line":"                     \"OEM magic\", {\u0027node\u0027: task.node.uuid,"},{"line_number":135,"context_line":"                                   \u0027device\u0027: device})"},{"line_number":136,"context_line":"            break"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_c6eb4210","line":134,"in_reply_to":"3fa7e38b_580178ae","updated":"2019-10-07 23:15:33.000000000","message":"Done","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"51d6ba060906ed6b974aaa914a9e13ff50e9f2b5","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                device, persistent\u003dpersistent, manager\u003dmanager, system\u003dsystem)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            LOG.info(\"Set node %(node)s boot device to %(device)s via \""},{"line_number":134,"context_line":"                     \"OEM magic\", {\u0027node\u0027: task.node.uuid,"},{"line_number":135,"context_line":"                                   \u0027device\u0027: device})"},{"line_number":136,"context_line":"            break"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_93df4ad5","line":134,"in_reply_to":"3fa7e38b_580178ae","updated":"2019-10-07 22:08:13.000000000","message":"s/magic/interface/","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f1a6b9f99360ed5360995579057adc0f174d88ed","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":140,"context_line":"                driver\u003d\u0027redfish\u0027,"},{"line_number":141,"context_line":"                reason\u003d_(\u0027Dell OEM manager resources not found. Make sure you \u0027"},{"line_number":142,"context_line":"                         \u0027have sushy Dell OEM extension package installed.\u0027))"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_78fc74b4","line":142,"updated":"2019-09-27 15:03:50.000000000","message":"Let\u0027s refer to the package name","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"51d6ba060906ed6b974aaa914a9e13ff50e9f2b5","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":140,"context_line":"                driver\u003d\u0027redfish\u0027,"},{"line_number":141,"context_line":"                reason\u003d_(\u0027Dell OEM manager resources not found. Make sure you \u0027"},{"line_number":142,"context_line":"                         \u0027have sushy Dell OEM extension package installed.\u0027))"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_f3e9de7f","line":142,"in_reply_to":"3fa7e38b_78fc74b4","updated":"2019-10-07 22:08:13.000000000","message":"++","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"f7722e4bf7e8a20ca9e8676ce24a3e4c90a8f9f7","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":140,"context_line":"                driver\u003d\u0027redfish\u0027,"},{"line_number":141,"context_line":"                reason\u003d_(\u0027Dell OEM manager resources not found. Make sure you \u0027"},{"line_number":142,"context_line":"                         \u0027have sushy Dell OEM extension package installed.\u0027))"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_5609c092","line":142,"in_reply_to":"3fa7e38b_f3e9de7f","updated":"2019-10-07 23:15:33.000000000","message":"This code block has been repurposed. There is now code above which deals with not finding the sushy-oem-idrac Sushy OEM extension Python package. Its log message and exception refer to the package name.\n\nWhen no manager has OEM extension JSON which contains the Redfish action used by manager_oem.set_virtual_boot_device(), a RedfishError exception is now raised. This change is similar to what the Redfish power interface implementation does when the Sushy method it calls cannot find the reset action in the JSON. Please see https://opendev.org/openstack/ironic/src/commit/7c9bbb61ba4e986326addffedbfeb7e37dbb9866/ironic/drivers/modules/redfish/power.py#L109-L116.","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"31d87afbf87309a7db2fed99ed0543d4c3cac622","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                error_msg \u003d (_(\"Search for Sushy OEM extension Python package \""},{"line_number":123,"context_line":"                               \"\u0027%(package)s\u0027 failed for node %(node)s. \""},{"line_number":124,"context_line":"                               \"Ensure it is installed. Error: %(error)s\") %"},{"line_number":125,"context_line":"                             {\u0027package\u0027: \u0027sushy_oem_idrac\u0027,"},{"line_number":126,"context_line":"                              \u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":127,"context_line":"                LOG.error(error_msg)"},{"line_number":128,"context_line":"                raise exception.RedfishError(error\u003derror_msg)"}],"source_content_type":"text/x-python","patch_set":23,"id":"3fa7e38b_8e838604","line":125,"updated":"2019-10-09 10:15:45.000000000","message":"nit: this is a literal string, not need to substitute it. also the package name uses dashes, not underscores.","commit_id":"edad9363cfc9c2109180a8ae528ab39c3897c15a"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"de779c4fe670c59dfc78725a5b189fce9aa929e0","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                error_msg \u003d (_(\"Search for Sushy OEM extension Python package \""},{"line_number":123,"context_line":"                               \"\u0027%(package)s\u0027 failed for node %(node)s. \""},{"line_number":124,"context_line":"                               \"Ensure it is installed. Error: %(error)s\") %"},{"line_number":125,"context_line":"                             {\u0027package\u0027: \u0027sushy_oem_idrac\u0027,"},{"line_number":126,"context_line":"                              \u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":127,"context_line":"                LOG.error(error_msg)"},{"line_number":128,"context_line":"                raise exception.RedfishError(error\u003derror_msg)"}],"source_content_type":"text/x-python","patch_set":23,"id":"3fa7e38b_a4ac2c9f","line":125,"in_reply_to":"3fa7e38b_2e9b4417","updated":"2019-10-12 00:04:01.000000000","message":"Done","commit_id":"edad9363cfc9c2109180a8ae528ab39c3897c15a"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"5ac956f55f957413c4d68a44e2c8fd45c8f17004","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                error_msg \u003d (_(\"Search for Sushy OEM extension Python package \""},{"line_number":123,"context_line":"                               \"\u0027%(package)s\u0027 failed for node %(node)s. \""},{"line_number":124,"context_line":"                               \"Ensure it is installed. Error: %(error)s\") %"},{"line_number":125,"context_line":"                             {\u0027package\u0027: \u0027sushy_oem_idrac\u0027,"},{"line_number":126,"context_line":"                              \u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":127,"context_line":"                LOG.error(error_msg)"},{"line_number":128,"context_line":"                raise exception.RedfishError(error\u003derror_msg)"}],"source_content_type":"text/x-python","patch_set":23,"id":"3fa7e38b_2e9b4417","line":125,"in_reply_to":"3fa7e38b_8e838604","updated":"2019-10-11 14:34:31.000000000","message":"+1","commit_id":"edad9363cfc9c2109180a8ae528ab39c3897c15a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"31d87afbf87309a7db2fed99ed0543d4c3cac622","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                          \"failed to set virtual boot device with manager \""},{"line_number":137,"context_line":"                          \"%(manager)s for node %(node)s. Will try next \""},{"line_number":138,"context_line":"                          \"manager, if available. Error: %(error)s\","},{"line_number":139,"context_line":"                          {\u0027package\u0027: \u0027sushy_oem_idrac\u0027,"},{"line_number":140,"context_line":"                           \u0027manager\u0027: manager.uuid, \u0027node\u0027: task.node.uuid,"},{"line_number":141,"context_line":"                           \u0027error\u0027: e})"},{"line_number":142,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":23,"id":"3fa7e38b_ae868212","line":139,"updated":"2019-10-09 10:15:45.000000000","message":"ditto","commit_id":"edad9363cfc9c2109180a8ae528ab39c3897c15a"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"de779c4fe670c59dfc78725a5b189fce9aa929e0","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                          \"failed to set virtual boot device with manager \""},{"line_number":137,"context_line":"                          \"%(manager)s for node %(node)s. Will try next \""},{"line_number":138,"context_line":"                          \"manager, if available. Error: %(error)s\","},{"line_number":139,"context_line":"                          {\u0027package\u0027: \u0027sushy_oem_idrac\u0027,"},{"line_number":140,"context_line":"                           \u0027manager\u0027: manager.uuid, \u0027node\u0027: task.node.uuid,"},{"line_number":141,"context_line":"                           \u0027error\u0027: e})"},{"line_number":142,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":23,"id":"3fa7e38b_4495383f","line":139,"in_reply_to":"3fa7e38b_ae868212","updated":"2019-10-12 00:04:01.000000000","message":"Done","commit_id":"edad9363cfc9c2109180a8ae528ab39c3897c15a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"31d87afbf87309a7db2fed99ed0543d4c3cac622","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        else:"},{"line_number":149,"context_line":"            error_msg \u003d (_(\u0027iDRAC Redfish set boot device failed for node \u0027"},{"line_number":150,"context_line":"                           \u0027%(node)s.\u0027) % {\u0027node\u0027: task.node.uuid})"},{"line_number":151,"context_line":"            LOG.error(error_msg)"},{"line_number":152,"context_line":"            raise exception.RedfishError(error\u003derror_msg)"}],"source_content_type":"text/x-python","patch_set":23,"id":"3fa7e38b_4e7d8e1a","line":150,"updated":"2019-10-09 10:15:45.000000000","message":"Let\u0027s have some details here, like \"because no managers could be used to attach a virtual media.\"\n\nand maybe a separate message when there are not managers at all","commit_id":"edad9363cfc9c2109180a8ae528ab39c3897c15a"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"de779c4fe670c59dfc78725a5b189fce9aa929e0","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        else:"},{"line_number":149,"context_line":"            error_msg \u003d (_(\u0027iDRAC Redfish set boot device failed for node \u0027"},{"line_number":150,"context_line":"                           \u0027%(node)s.\u0027) % {\u0027node\u0027: task.node.uuid})"},{"line_number":151,"context_line":"            LOG.error(error_msg)"},{"line_number":152,"context_line":"            raise exception.RedfishError(error\u003derror_msg)"}],"source_content_type":"text/x-python","patch_set":23,"id":"3fa7e38b_6492b459","line":150,"in_reply_to":"3fa7e38b_4e7d8e1a","updated":"2019-10-12 00:04:01.000000000","message":"Done","commit_id":"edad9363cfc9c2109180a8ae528ab39c3897c15a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0205305dc989acd3117f16bd22a8635e0f0e72a2","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                          \u0027system\u0027: system.uuid if system.uuid else"},{"line_number":157,"context_line":"                          system.identity,"},{"line_number":158,"context_line":"                          \u0027no_manager\u0027: \u0027\u0027 if not system.managers else"},{"line_number":159,"context_line":"                          \u0027 which could\u0027})"},{"line_number":160,"context_line":"            LOG.error(error_msg)"},{"line_number":161,"context_line":"            raise exception.RedfishError(error\u003derror_msg)"}],"source_content_type":"text/x-python","patch_set":24,"id":"3fa7e38b_a505fc47","line":159,"updated":"2019-10-14 11:17:24.000000000","message":"it looks like your sentence will end on \"which could\". add \"be used\"?","commit_id":"0ad6f8758747cf0d0796c89e0e8f8bdbf6f0421d"}],"ironic/tests/unit/drivers/modules/drac/test_boot.py":[{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"2613cda20c3e37c44b6fb0757460a1df9b4a9683","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"# a copy of the License at"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_b72a5229","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":1},"updated":"2019-09-23 22:18:14.000000000","message":"Missing copyrights\n\n# Copyright 2019 Red Hat, Inc.\n# All Rights Reserved.\n# Copyright (c) 2019 Dell Inc. or its subsidiaries.","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"fb6b945580eda46825b62abe1720b8aded712473","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"# a copy of the License at"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_5d61bf04","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":1},"in_reply_to":"3fa7e38b_b72a5229","updated":"2019-09-24 03:17:35.000000000","message":"Done","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"2613cda20c3e37c44b6fb0757460a1df9b4a9683","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# under the License."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"\"\"\""},{"line_number":15,"context_line":"Test class for DRAC boo interface"},{"line_number":16,"context_line":"\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mock"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_1746c6c1","line":15,"range":{"start_line":15,"start_character":20,"end_line":15,"end_character":23},"updated":"2019-09-23 22:18:14.000000000","message":"boo -\u003e boot","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"fb6b945580eda46825b62abe1720b8aded712473","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# under the License."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"\"\"\""},{"line_number":15,"context_line":"Test class for DRAC boo interface"},{"line_number":16,"context_line":"\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mock"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_7d5efb44","line":15,"range":{"start_line":15,"start_character":20,"end_line":15,"end_character":23},"in_reply_to":"3fa7e38b_1746c6c1","updated":"2019-09-24 03:17:35.000000000","message":"Done","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"}],"ironic/tests/unit/drivers/test_drac.py":[{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"877649e8a5aaa63f69b7d6e6cf32119e542962c9","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def _validate_interfaces(self, driver, **kwargs):"},{"line_number":50,"context_line":"        self.assertIsInstance("},{"line_number":51,"context_line":"            driver.boot,"},{"line_number":52,"context_line":"            kwargs.get(\u0027boot\u0027, ipxe.iPXEBoot))"},{"line_number":53,"context_line":"        self.assertIsInstance("},{"line_number":54,"context_line":"            driver.deploy,"},{"line_number":55,"context_line":"            kwargs.get(\u0027deploy\u0027, iscsi_deploy.ISCSIDeploy))"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_b459e58e","line":52,"updated":"2019-09-24 11:49:19.000000000","message":"I don\u0027t quite understand why this change is needed.  Doesn\u0027t this imply that the default boot interface has changed from pxe.PXEBoot to ipxe.iPXEBoot?  I don\u0027t think we would want the default boot interface to change as a result of this patch.","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"33e810723c66fd6d2da1ac63e468bc7f9ff5edf3","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def _validate_interfaces(self, driver, **kwargs):"},{"line_number":50,"context_line":"        self.assertIsInstance("},{"line_number":51,"context_line":"            driver.boot,"},{"line_number":52,"context_line":"            kwargs.get(\u0027boot\u0027, ipxe.iPXEBoot))"},{"line_number":53,"context_line":"        self.assertIsInstance("},{"line_number":54,"context_line":"            driver.deploy,"},{"line_number":55,"context_line":"            kwargs.get(\u0027deploy\u0027, iscsi_deploy.ISCSIDeploy))"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_20060f1f","line":52,"in_reply_to":"3fa7e38b_0fbea6d4","updated":"2019-09-24 14:05:02.000000000","message":"All of that makes sense, but in that case, the original code would be using ipxe.iPXEBoot as the default boot interface, and the original assert as written on the left would have failed.  In order for the original assert to work, the default boot interface must have been pxe.PXEBoot.  That\u0027s the discrepancy that I don\u0027t understand...","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"167e700e99c4ac635d1561790750ebec78985295","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def _validate_interfaces(self, driver, **kwargs):"},{"line_number":50,"context_line":"        self.assertIsInstance("},{"line_number":51,"context_line":"            driver.boot,"},{"line_number":52,"context_line":"            kwargs.get(\u0027boot\u0027, ipxe.iPXEBoot))"},{"line_number":53,"context_line":"        self.assertIsInstance("},{"line_number":54,"context_line":"            driver.deploy,"},{"line_number":55,"context_line":"            kwargs.get(\u0027deploy\u0027, iscsi_deploy.ISCSIDeploy))"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_263948a3","line":52,"in_reply_to":"3fa7e38b_20060f1f","updated":"2019-09-24 14:50:13.000000000","message":"This class formerly relied on the configuration of ‘enabled_boot_interfaces’ performed by its base classes. Please see https://opendev.org/openstack/ironic/src/commit/ac55c642e492a54e41c095df00db25cc29719110/ironic/tests/base.py#L144-L145\n\nIt now does that itself above.","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"e62596dc0f68a8cb44b81f7564e06f385dbe9415","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def _validate_interfaces(self, driver, **kwargs):"},{"line_number":50,"context_line":"        self.assertIsInstance("},{"line_number":51,"context_line":"            driver.boot,"},{"line_number":52,"context_line":"            kwargs.get(\u0027boot\u0027, ipxe.iPXEBoot))"},{"line_number":53,"context_line":"        self.assertIsInstance("},{"line_number":54,"context_line":"            driver.deploy,"},{"line_number":55,"context_line":"            kwargs.get(\u0027deploy\u0027, iscsi_deploy.ISCSIDeploy))"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_c06854ba","line":52,"in_reply_to":"3fa7e38b_263948a3","updated":"2019-09-24 19:11:02.000000000","message":"Ah, I understand now.  Thanks for the explanation.  For posterity: When enabled_boot_interfaces was not specified, the base class enabled only pxe.  That\u0027s what made the code on the left work.  The default was and is ipxe, but because ipxe wasn\u0027t enabled, pxe was what was actually used.  This change enables pxe, ipxe, and redfish virtual media, so because the default of ipxe is enabled, that is what is now used.  This test case could have not enabled ipxe, in which case, the change to the line above would not have been necessary.  Enabling all 3 is probably a better way to test it though.","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"20f7c4d52d72cbe4edea74f63f2157fc0640146f","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def _validate_interfaces(self, driver, **kwargs):"},{"line_number":50,"context_line":"        self.assertIsInstance("},{"line_number":51,"context_line":"            driver.boot,"},{"line_number":52,"context_line":"            kwargs.get(\u0027boot\u0027, ipxe.iPXEBoot))"},{"line_number":53,"context_line":"        self.assertIsInstance("},{"line_number":54,"context_line":"            driver.deploy,"},{"line_number":55,"context_line":"            kwargs.get(\u0027deploy\u0027, iscsi_deploy.ISCSIDeploy))"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_0fbea6d4","line":52,"in_reply_to":"3fa7e38b_b459e58e","updated":"2019-09-24 12:35:13.000000000","message":"This change does not change the default boot interface. Rather, it appends the new drac.boot.DracRedfishVirtualMediaBoot interface to the list of boot interfaces that have been supported, making it the lowest priority among the supported interfaces.\n\nPrior to this, that list was defined by the base class of the idrac hardware type, ironic.drivers.generic.GenericHardware, as follows:\n\n    @property\n    def supported_boot_interfaces(self):\n        \"\"\"List of supported boot interfaces.\"\"\"\n        return [ipxe.iPXEBoot, pxe.PXEBoot]\n\nPlease see https://opendev.org/openstack/ironic/src/commit/8912c061c63e2c56a56cd952ba0431631dfece98/ironic/drivers/generic.py#L44-L46\n\nThis validates that when the highest priority supported boot interface is enabled and a node does not have its boot_interface field set, that highest priority supported interface is used. ipxe.iPXEBoot is the highest priority supported interface.","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"8675243d0548c5c6e0d12e64ef6decde23464c6e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def _validate_interfaces(self, driver, **kwargs):"},{"line_number":50,"context_line":"        self.assertIsInstance("},{"line_number":51,"context_line":"            driver.boot,"},{"line_number":52,"context_line":"            kwargs.get(\u0027boot\u0027, ipxe.iPXEBoot))"},{"line_number":53,"context_line":"        self.assertIsInstance("},{"line_number":54,"context_line":"            driver.deploy,"},{"line_number":55,"context_line":"            kwargs.get(\u0027deploy\u0027, iscsi_deploy.ISCSIDeploy))"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_c0d934f3","line":52,"in_reply_to":"3fa7e38b_c06854ba","updated":"2019-09-24 19:50:27.000000000","message":"I believe you get the gist of it. However, be careful with terminology! :)\n\nThe concept of default interface is different from the priority ordered list of supported interfaces. Please see the description in the \"Driver composition reform\" specification which introduced the hardware type concept -- https://opendev.org/openstack/ironic-specs/blame/commit/733990b24583b31624aa3c9ab83cc3fecb6c6c60/specs/approved/driver-composition-reform.rst#L146-L159\n\nIt turns out the \u0027default_boot_interface\u0027 is set to None by the base class. And because it is not set, it is not used.","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"}],"ironic/tests/unit/drivers/third_party_driver_mocks.py":[{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c405500d3c934ba14b7d4278ed23b5cff6784bb4","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        type(\u0027ResourceNotFoundError\u0027, (sushy.exceptions.SushyError,), {}))"},{"line_number":214,"context_line":"    sushy.exceptions.MissingAttributeError \u003d ("},{"line_number":215,"context_line":"        type(\u0027MissingAttributeError\u0027, (sushy.exceptions.SushyError,), {}))"},{"line_number":216,"context_line":"    sushy.exceptions.OEMExtensionNotFoundError \u003d ("},{"line_number":217,"context_line":"        type(\u0027OEMExtensionNotFoundError\u0027, (sushy.exceptions.SushyError,), {}))"},{"line_number":218,"context_line":"    sushy.auth \u003d mock.MagicMock(spec_set\u003dmock_specs.SUSHY_AUTH_SPEC)"},{"line_number":219,"context_line":"    sys.modules[\u0027sushy.auth\u0027] \u003d sushy.auth"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_e55d86e9","line":216,"updated":"2019-09-23 07:47:15.000000000","message":"nit: this is strictly speaking irrelevant to this change, but that\u0027s alright with me","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"}],"releasenotes/notes/idrac-add-redfish-boot-support-036396b48d3f71f4.yaml":[{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c405500d3c934ba14b7d4278ed23b5cff6784bb4","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    same. The new ``idrac-redfish-virtual-media`` immediately follows"},{"line_number":14,"context_line":"    those. It now supports the following boot interface implementations,"},{"line_number":15,"context_line":"    listed in priority order from highest to lowest: ``ipxe``, ``pxe``,"},{"line_number":16,"context_line":"    and ``idrac-redfish-virtual-media``."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3fa7e38b_e5126609","line":16,"updated":"2019-09-23 07:47:15.000000000","message":"Should we note the new dependency like:\n\n  Non-standard phases of virtual media boot work flow required by iDRAC are isolated to third-party ``sushy-oem-idrac`` library.\n\n?","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"fb6b945580eda46825b62abe1720b8aded712473","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    same. The new ``idrac-redfish-virtual-media`` immediately follows"},{"line_number":14,"context_line":"    those. It now supports the following boot interface implementations,"},{"line_number":15,"context_line":"    listed in priority order from highest to lowest: ``ipxe``, ``pxe``,"},{"line_number":16,"context_line":"    and ``idrac-redfish-virtual-media``."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3fa7e38b_1d57c728","line":16,"in_reply_to":"3fa7e38b_e5126609","updated":"2019-09-24 03:17:35.000000000","message":"Done","commit_id":"4da7cc8efc268b343840498427394180fe93e5fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f1a6b9f99360ed5360995579057adc0f174d88ed","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``idrac`` hardware type support of a virtual media boot"},{"line_number":5,"context_line":"    interface implementation that utilizes the Redfish out-of-band (OOB)"},{"line_number":6,"context_line":"    management protocol and is compatible with the integrated Dell"},{"line_number":7,"context_line":"    Remote Access Controller (iDRAC) baseboard management controller"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3fa7e38b_1831c0a3","line":4,"updated":"2019-09-27 15:03:50.000000000","message":"nit: \"Adds support for ... to ...\"","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"f7722e4bf7e8a20ca9e8676ce24a3e4c90a8f9f7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``idrac`` hardware type support of a virtual media boot"},{"line_number":5,"context_line":"    interface implementation that utilizes the Redfish out-of-band (OOB)"},{"line_number":6,"context_line":"    management protocol and is compatible with the integrated Dell"},{"line_number":7,"context_line":"    Remote Access Controller (iDRAC) baseboard management controller"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3fa7e38b_e652fe12","line":4,"in_reply_to":"3fa7e38b_1831c0a3","updated":"2019-10-07 23:15:33.000000000","message":"The idrac hardware type is mentioned first so the reader can immediately move on if it is not of interest.\n\nIf you still prefer what you suggested, I will change it.","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f1a6b9f99360ed5360995579057adc0f174d88ed","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    The ``idrac`` hardware type declares support for that new interface"},{"line_number":11,"context_line":"    implementation, in addition to all boot interface implementations it"},{"line_number":12,"context_line":"    has been supporting. The highest priority boot interfaces remain the"},{"line_number":13,"context_line":"    same. The new ``idrac-redfish-virtual-media`` immediately follows"},{"line_number":14,"context_line":"    those. It now supports the following boot interface implementations,"},{"line_number":15,"context_line":"    listed in priority order from highest to lowest: ``ipxe``, ``pxe``,"},{"line_number":16,"context_line":"    and ``idrac-redfish-virtual-media``."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3fa7e38b_3834bc92","line":13,"updated":"2019-09-27 15:03:50.000000000","message":"nit: should be obvious","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"f7722e4bf7e8a20ca9e8676ce24a3e4c90a8f9f7","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    The ``idrac`` hardware type declares support for that new interface"},{"line_number":11,"context_line":"    implementation, in addition to all boot interface implementations it"},{"line_number":12,"context_line":"    has been supporting. The highest priority boot interfaces remain the"},{"line_number":13,"context_line":"    same. The new ``idrac-redfish-virtual-media`` immediately follows"},{"line_number":14,"context_line":"    those. It now supports the following boot interface implementations,"},{"line_number":15,"context_line":"    listed in priority order from highest to lowest: ``ipxe``, ``pxe``,"},{"line_number":16,"context_line":"    and ``idrac-redfish-virtual-media``."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3fa7e38b_86554afc","line":13,"in_reply_to":"3fa7e38b_3834bc92","updated":"2019-10-07 23:15:33.000000000","message":"Done","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f1a6b9f99360ed5360995579057adc0f174d88ed","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    listed in priority order from highest to lowest: ``ipxe``, ``pxe``,"},{"line_number":16,"context_line":"    and ``idrac-redfish-virtual-media``."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    A new ``idrac`` hardware type Python package dependency is"},{"line_number":19,"context_line":"    introduced. It is on ``sushy-oem-idrac``."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    For more information, see `story 2006570"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3fa7e38b_d826c868","line":18,"updated":"2019-09-27 15:03:50.000000000","message":"It\u0027s not really a hard dependency, I\u0027d phrase it like \"To use the new boot interface, install the ``sushy-oem-idrac`` python package.\"","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"f7722e4bf7e8a20ca9e8676ce24a3e4c90a8f9f7","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    listed in priority order from highest to lowest: ``ipxe``, ``pxe``,"},{"line_number":16,"context_line":"    and ``idrac-redfish-virtual-media``."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    A new ``idrac`` hardware type Python package dependency is"},{"line_number":19,"context_line":"    introduced. It is on ``sushy-oem-idrac``."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    For more information, see `story 2006570"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3fa7e38b_a6588630","line":18,"in_reply_to":"3fa7e38b_d826c868","updated":"2019-10-07 23:15:33.000000000","message":"Good point!","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"}],"setup.cfg":[{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"e7ae254d63f0a89cd32c820172ba106cfebbe1f6","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    fake \u003d ironic.drivers.modules.fake:FakeBoot"},{"line_number":66,"context_line":"    idrac \u003d ironic.drivers.modules.drac.boot:DracVirtualMediaBoot"},{"line_number":67,"context_line":"    ilo-pxe \u003d ironic.drivers.modules.ilo.boot:IloPXEBoot"},{"line_number":68,"context_line":"    ilo-ipxe \u003d ironic.drivers.modules.ilo.boot:IloiPXEBoot"},{"line_number":69,"context_line":"    ilo-virtual-media \u003d ironic.drivers.modules.ilo.boot:IloVirtualMediaBoot"},{"line_number":70,"context_line":"    ipxe \u003d ironic.drivers.modules.ipxe:iPXEBoot"},{"line_number":71,"context_line":"    irmc-pxe \u003d ironic.drivers.modules.irmc.boot:IRMCPXEBoot"}],"source_content_type":"text/x-ttcn-cfg","patch_set":18,"id":"3fa7e38b_60b692fd","line":68,"range":{"start_line":68,"start_character":4,"end_line":68,"end_character":12},"updated":"2019-09-19 15:30:00.000000000","message":"This looked odd to me. Why the ilo change in this idrac patch?","commit_id":"06bc0be19553d0c23392b7554ada968079c6a1e8"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c405500d3c934ba14b7d4278ed23b5cff6784bb4","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    fake \u003d ironic.drivers.modules.fake:FakeBoot"},{"line_number":66,"context_line":"    idrac \u003d ironic.drivers.modules.drac.boot:DracVirtualMediaBoot"},{"line_number":67,"context_line":"    ilo-pxe \u003d ironic.drivers.modules.ilo.boot:IloPXEBoot"},{"line_number":68,"context_line":"    ilo-ipxe \u003d ironic.drivers.modules.ilo.boot:IloiPXEBoot"},{"line_number":69,"context_line":"    ilo-virtual-media \u003d ironic.drivers.modules.ilo.boot:IloVirtualMediaBoot"},{"line_number":70,"context_line":"    ipxe \u003d ironic.drivers.modules.ipxe:iPXEBoot"},{"line_number":71,"context_line":"    irmc-pxe \u003d ironic.drivers.modules.irmc.boot:IRMCPXEBoot"}],"source_content_type":"text/x-ttcn-cfg","patch_set":18,"id":"3fa7e38b_648a181c","line":68,"range":{"start_line":68,"start_character":4,"end_line":68,"end_character":12},"in_reply_to":"3fa7e38b_60b692fd","updated":"2019-09-23 07:47:15.000000000","message":"Has it changed at all? My local git diff does not report that:\n\n  diff --combined setup.cfg\n  index e048197c7,d5d5e91ff..000000000\n  --- a/setup.cfg\n  +++ b/setup.cfg\n  @@@ -63,7 -63,6 +63,7 @@@ ironic.hardware.interfaces.bios \n  \n    ironic.hardware.interfaces.boot \u003d\n        fake \u003d ironic.drivers.modules.fake:FakeBoot\n   +    idrac \u003d ironic.drivers.modules.drac.boot:DracVirtualMediaBoot\n        ilo-pxe \u003d ironic.drivers.modules.ilo.boot:IloPXEBoot\n        ilo-ipxe \u003d ironic.drivers.modules.ilo.boot:IloiPXEBoot\n        ilo-virtual-media \u003d ironic.drivers.modules.ilo.boot:IloVirtualMediaBoot","commit_id":"06bc0be19553d0c23392b7554ada968079c6a1e8"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"d43e7fd4ca5c4d84726ea601b3b7c1997a5db94b","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    fake \u003d ironic.drivers.modules.fake:FakeBoot"},{"line_number":66,"context_line":"    idrac \u003d ironic.drivers.modules.drac.boot:DracVirtualMediaBoot"},{"line_number":67,"context_line":"    ilo-pxe \u003d ironic.drivers.modules.ilo.boot:IloPXEBoot"},{"line_number":68,"context_line":"    ilo-ipxe \u003d ironic.drivers.modules.ilo.boot:IloiPXEBoot"},{"line_number":69,"context_line":"    ilo-virtual-media \u003d ironic.drivers.modules.ilo.boot:IloVirtualMediaBoot"},{"line_number":70,"context_line":"    ipxe \u003d ironic.drivers.modules.ipxe:iPXEBoot"},{"line_number":71,"context_line":"    irmc-pxe \u003d ironic.drivers.modules.irmc.boot:IRMCPXEBoot"}],"source_content_type":"text/x-ttcn-cfg","patch_set":18,"id":"3fa7e38b_2288746f","line":68,"range":{"start_line":68,"start_character":4,"end_line":68,"end_character":12},"in_reply_to":"3fa7e38b_60b692fd","updated":"2019-09-23 05:51:45.000000000","message":"This was not introduced by this change. It appears in the diff to provide context.","commit_id":"06bc0be19553d0c23392b7554ada968079c6a1e8"},{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"e7ae254d63f0a89cd32c820172ba106cfebbe1f6","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    ibmc \u003d ironic.drivers.modules.ibmc.management:IBMCManagement"},{"line_number":102,"context_line":"    idrac \u003d ironic.drivers.modules.drac.management:DracManagement"},{"line_number":103,"context_line":"    ilo \u003d ironic.drivers.modules.ilo.management:IloManagement"},{"line_number":104,"context_line":"    ilo5 \u003d ironic.drivers.modules.ilo.management:Ilo5Management"},{"line_number":105,"context_line":"    intel-ipmitool \u003d ironic.drivers.modules.intel_ipmi.management:IntelIPMIManagement"},{"line_number":106,"context_line":"    ipmitool \u003d ironic.drivers.modules.ipmitool:IPMIManagement"},{"line_number":107,"context_line":"    irmc \u003d ironic.drivers.modules.irmc.management:IRMCManagement"}],"source_content_type":"text/x-ttcn-cfg","patch_set":18,"id":"3fa7e38b_80b94eea","line":104,"range":{"start_line":104,"start_character":4,"end_line":104,"end_character":8},"updated":"2019-09-19 15:30:00.000000000","message":"ditto","commit_id":"06bc0be19553d0c23392b7554ada968079c6a1e8"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"d43e7fd4ca5c4d84726ea601b3b7c1997a5db94b","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    ibmc \u003d ironic.drivers.modules.ibmc.management:IBMCManagement"},{"line_number":102,"context_line":"    idrac \u003d ironic.drivers.modules.drac.management:DracManagement"},{"line_number":103,"context_line":"    ilo \u003d ironic.drivers.modules.ilo.management:IloManagement"},{"line_number":104,"context_line":"    ilo5 \u003d ironic.drivers.modules.ilo.management:Ilo5Management"},{"line_number":105,"context_line":"    intel-ipmitool \u003d ironic.drivers.modules.intel_ipmi.management:IntelIPMIManagement"},{"line_number":106,"context_line":"    ipmitool \u003d ironic.drivers.modules.ipmitool:IPMIManagement"},{"line_number":107,"context_line":"    irmc \u003d ironic.drivers.modules.irmc.management:IRMCManagement"}],"source_content_type":"text/x-ttcn-cfg","patch_set":18,"id":"3fa7e38b_c27e406a","line":104,"range":{"start_line":104,"start_character":4,"end_line":104,"end_character":8},"in_reply_to":"3fa7e38b_80b94eea","updated":"2019-09-23 05:51:45.000000000","message":"Ditto","commit_id":"06bc0be19553d0c23392b7554ada968079c6a1e8"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c405500d3c934ba14b7d4278ed23b5cff6784bb4","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    ibmc \u003d ironic.drivers.modules.ibmc.management:IBMCManagement"},{"line_number":102,"context_line":"    idrac \u003d ironic.drivers.modules.drac.management:DracManagement"},{"line_number":103,"context_line":"    ilo \u003d ironic.drivers.modules.ilo.management:IloManagement"},{"line_number":104,"context_line":"    ilo5 \u003d ironic.drivers.modules.ilo.management:Ilo5Management"},{"line_number":105,"context_line":"    intel-ipmitool \u003d ironic.drivers.modules.intel_ipmi.management:IntelIPMIManagement"},{"line_number":106,"context_line":"    ipmitool \u003d ironic.drivers.modules.ipmitool:IPMIManagement"},{"line_number":107,"context_line":"    irmc \u003d ironic.drivers.modules.irmc.management:IRMCManagement"}],"source_content_type":"text/x-ttcn-cfg","patch_set":18,"id":"3fa7e38b_848dd432","line":104,"range":{"start_line":104,"start_character":4,"end_line":104,"end_character":8},"in_reply_to":"3fa7e38b_80b94eea","updated":"2019-09-23 07:47:15.000000000","message":"Done","commit_id":"06bc0be19553d0c23392b7554ada968079c6a1e8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f1a6b9f99360ed5360995579057adc0f174d88ed","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"ironic.hardware.interfaces.boot \u003d"},{"line_number":65,"context_line":"    fake \u003d ironic.drivers.modules.fake:FakeBoot"},{"line_number":66,"context_line":"    idrac-redfish-virtual-media \u003d ironic.drivers.modules.drac.boot:DracRedfishVirtualMediaBoot"},{"line_number":67,"context_line":"    ilo-pxe \u003d ironic.drivers.modules.ilo.boot:IloPXEBoot"},{"line_number":68,"context_line":"    ilo-ipxe \u003d ironic.drivers.modules.ilo.boot:IloiPXEBoot"},{"line_number":69,"context_line":"    ilo-virtual-media \u003d ironic.drivers.modules.ilo.boot:IloVirtualMediaBoot"}],"source_content_type":"text/x-ttcn-cfg","patch_set":21,"id":"3fa7e38b_f8294436","line":66,"updated":"2019-09-27 15:03:50.000000000","message":"If we don\u0027t expect a wsman implementation, we may call it just idrac-virtual-media.","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"f7722e4bf7e8a20ca9e8676ce24a3e4c90a8f9f7","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"ironic.hardware.interfaces.boot \u003d"},{"line_number":65,"context_line":"    fake \u003d ironic.drivers.modules.fake:FakeBoot"},{"line_number":66,"context_line":"    idrac-redfish-virtual-media \u003d ironic.drivers.modules.drac.boot:DracRedfishVirtualMediaBoot"},{"line_number":67,"context_line":"    ilo-pxe \u003d ironic.drivers.modules.ilo.boot:IloPXEBoot"},{"line_number":68,"context_line":"    ilo-ipxe \u003d ironic.drivers.modules.ilo.boot:IloiPXEBoot"},{"line_number":69,"context_line":"    ilo-virtual-media \u003d ironic.drivers.modules.ilo.boot:IloVirtualMediaBoot"}],"source_content_type":"text/x-ttcn-cfg","patch_set":21,"id":"3fa7e38b_a67166aa","line":66,"in_reply_to":"3fa7e38b_f8294436","updated":"2019-10-07 23:15:33.000000000","message":"One never knows :) And if not WS-Man, I expect there will be a new, new management protocol at some point.\n\nPlease note this follows the pattern established by the Redfish inspect, management, and power interfaces supported by idrac. Their names begin with \u0027idrac-redfish\u0027.","commit_id":"bd440a8f27c1b2cbf672ae2df307e7cec65d1c3e"}]}
