dell / iDRAC-Redfish-Scripting

Python and PowerShell scripting for Dell EMC PowerEdge iDRAC REST API with DMTF Redfish
GNU General Public License v2.0
603 stars 279 forks source link

Attribute HttpDev1Interface Vs PxeDev1Interface #306

Closed jasmeer closed 4 months ago

jasmeer commented 4 months ago

Hi I have read that PxeDevNInterface attribute is used to add PXE boot device in UEFI boot mode. In one of my systems I see all PxeDevNInterface attributes are commented out and HttpDev1Interface is used instead. I couldn't find any docs about this attribute. What is this about?

Thanks Jasmeer

texroemer commented 4 months ago

Hi @jasmeer

If you see attribute PxeDev1Interface commented out this means PxeDev1EnDis is set to Disabled. PxeDev1EnDis is the parent attribute for child attributes PxeDev1Interface, PxeDev1Protocol, PxeDev1VlanEnDis, PxeDev1VlanId, PxeDev1VlanPriority. Once you set attribute PxeDev1EnDis to Enabled all child attributes for this device will now be read write. Same behavior for parent attribute HttpDev1EnDis where this must be set to Enabled first for all child attributes to be read write.

SCP snippet below where PXE device 1 and 2 are enabled, PXE device 3 and 4 are disabled. Child attributes for PXE device 1 and 2 will show up as uncommented, PXE device 3 and 4 will be commented out.

<Attribute Name="PxeDev1EnDis">Enabled</Attribute>
    <Attribute Name="PxeDev2EnDis">Enabled</Attribute>
    <Attribute Name="PxeDev3EnDis">Disabled</Attribute>
    <Attribute Name="PxeDev4EnDis">Disabled</Attribute>
    <Attribute Name="PxeDev1Interface">NIC.Embedded.1-1-1</Attribute>
    <Attribute Name="PxeDev1Protocol">IPv4</Attribute>
    <Attribute Name="PxeDev1VlanEnDis">Disabled</Attribute>
    <Attribute Name="PxeDev1VlanId">1</Attribute>
    <Attribute Name="PxeDev1VlanPriority">0</Attribute>
    <Attribute Name="PxeDev2Interface">NIC.Embedded.2-1-1</Attribute>
    <Attribute Name="PxeDev2Protocol">IPv4</Attribute>
    <Attribute Name="PxeDev2VlanEnDis">Disabled</Attribute>
    <Attribute Name="PxeDev2VlanId">1</Attribute>
    <Attribute Name="PxeDev2VlanPriority">0</Attribute>
    <!-- <Attribute Name="PxeDev3Interface">NIC.Embedded.1-1-1</Attribute>-->
    <!-- <Attribute Name="PxeDev3Protocol">IPv4</Attribute>-->
    <!-- <Attribute Name="PxeDev3VlanEnDis">Disabled</Attribute>-->
    <!-- <Attribute Name="PxeDev3VlanId">1</Attribute>-->
    <!-- <Attribute Name="PxeDev3VlanPriority">0</Attribute>-->
    <!-- <Attribute Name="PxeDev4Interface">NIC.Embedded.1-1-1</Attribute>-->
    <!-- <Attribute Name="PxeDev4Protocol">IPv4</Attribute>-->
    <!-- <Attribute Name="PxeDev4VlanEnDis">Disabled</Attribute>-->
    <!-- <Attribute Name="PxeDev4VlanId">1</Attribute>-->
    <!-- <Attribute Name="PxeDev4VlanPriority">0</Attribute>-->

Also want to mention when using SCP you can stack setting these BIOS attributes. Example: in the SCP file you can set PxeDev3EnDis to Enabled, then uncomment attributes PxeDev3Interface, PxeDev3Protocol, PxeDev3VlanEnDis, PxeDev3VlanId, PxeDev3VlanPriority, set these values. Now run import and all these attribute changes will get applied.

Thanks Tex

jasmeer commented 4 months ago

Thank you @texroemer for the clear explanation. Follow up I have is - what does HttpDev1Interface attribute signify? In my server PxeXXXXX attrribs are all commented out and only HttpDev1XXXXX are in effect. Is this another way of configuring Pxe boot?

Thanks Jasmeer

texroemer commented 4 months ago

BIOS default settings from the factory, PXE device 1 is enabled, 2, 3 and 4 are disabled. HTTP devices 1, 2, 3 and 4 are all disabled. If your server has all PXE attributes commented out (disabled) and HTTP attributes are enabled, this means someone already made changes.

If you want to configure PXE device 1 and disable all HTTP devices, SCP file example below to perform this workflow.

<SystemConfiguration> 
<Component FQDD="BIOS.Setup.1-1"> 
    <Attribute Name="PxeDev1EnDis">Enabled</Attribute> 
    <Attribute Name="HttpDev1EnDis">Disabled</Attribute> 
    <Attribute Name="HttpDev2EnDis">Disabled</Attribute> 
    <Attribute Name="HttpDev3EnDis">Disabled</Attribute> 
    <Attribute Name="HttpDev4EnDis">Disabled</Attribute> 
    <Attribute Name="PxeDev1Interface">NIC.Integrated.1-1-1</Attribute> 
    <Attribute Name="PxeDev1Protocol">IPv4</Attribute> 
    <Attribute Name="PxeDev1VlanEnDis">Disabled</Attribute> 
    <Attribute Name="PxeDev1VlanId">1</Attribute> 
    <Attribute Name="PxeDev1VlanPriority">0</Attribute> 
</Component> 
</SystemConfiguration> 

Thanks Tex

jasmeer commented 4 months ago

Thanks @texroemer. I think my question was not clear enough, My question is what is HttpDevXXXX for ? From your response it is not for PXE boot, if so what else it is used for?

Thanks Jasmeer

texroemer commented 4 months ago

Here's a use case for leveraging HttpDevice in BIOS. Say you have a bootable EFI IMG image file on a webserver and want this device to be a bootable entry in the boot order, you would pass in the webserver share path of the IMG file for attribute HttpDev1Uri.

Example:

<Attribute Name="HttpDev1Uri">http://192.168.0.130/http_share/EFI_image.img</Attribute>

Thanks Tex

jasmeer commented 4 months ago

Thanks a lot @texroemer. Jasmeer

jasmeer commented 4 months ago

closing