redhat-performance / scalelab-sriov-prep

Ansible role to alter BIOS setting on SRIOV capable NICs
Apache License 2.0
1 stars 3 forks source link

Can this be Playbook be implemented in Badfish Instead? #7

Open sadsfae opened 1 year ago

sadsfae commented 1 year ago

Hi, I see that this playbook was moved to redhat-performance but it serves the same kind of utility that Badfish should cover.

https://github.com/redhat-performance/badfish https://github.com/redhat-performance/badfish#get-sriov-mode https://github.com/redhat-performance/badfish#set-sriov-mode

I propose we investigate Redfish capabilities here for an RFE within Badfish using the RedFish API. This way we're not potentially fragmenting workflow/tools. cc: @grafuls @josecastillolema @mukrishn

Also, relying on racadm is less-than-ideal as it's another closed source vendor tool whereas Redfish is the open, vendor-agnostic framework that OEM server vendors are developing against now.

For this to happen we just need the Redfish API endpoints which can be obtained with redfish-crawler

https://github.com/redhat-performance/redfish-crawler

If the endpoint(s) are available we can develop a feature setting these SRIOV settings and continue to add more functionality too then this doesn't need to be maintained and more people can gain the feature using the same tool.

josecastillolema commented 1 year ago

Hi @sadsfae I think that is a great idea. Actually, we have an even a bigger ambition of equalizing the BIOS settings of every lab allocation to enable reproducible data plane results across tests (https://issues.redhat.com/browse/PERFSCALE-2439). Let's discuss this further but in the meantime let's maintain this repo until we have the alternative implemented and validated.

grafuls commented 1 year ago

In the case of Dell systems you can use BF with --export-scp [1] to get a json file the current bios configuration and you can then use that same one with --import-scp for all other systems. Not sure now if it might require some small modification to the json after the export.

On Mon, Sep 18, 2023 at 4:58 PM José Castillo Lema @.***> wrote:

Hi @sadsfae https://github.com/sadsfae I think that is a great idea. Actually, we have an even a bigger ambition of equalizing the BIOS settings of every lab allocation to enable reproducible data plane results across tests (https://issues.redhat.com/browse/PERFSCALE-2439). Let's discuss this further but in the meantime let's maintain this repo until we have the alternative implemented and validated.

— Reply to this email directly, view it on GitHub https://github.com/redhat-performance/scalelab-sriov-prep/issues/7#issuecomment-1723620916, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACN2L4BR55VLGMEQ7QWR4DX3BOSTANCNFSM6AAAAAA443BJJU . You are receiving this because you were mentioned.Message ID: @.***>

sadsfae commented 1 year ago

In the case of Dell systems you can use BF with --export-scp [1] to get a json file the current bios configuration and you can then use that same one with --import-scp for all other systems. Not sure now if it might require some small modification to the json after the export. On Mon, Sep 18, 2023 at 4:58 PM José Castillo Lema @.***> wrote: Hi @sadsfae https://github.com/sadsfae I think that is a great idea. Actually, we have an even a bigger ambition of equalizing the BIOS settings of every lab allocation to enable reproducible data plane results across tests (https://issues.redhat.com/browse/PERFSCALE-2439). Let's discuss this further but in the meantime let's maintain this repo until we have the alternative implemented and validated.

@josecastillolema For sure let's keep this open and people should keep using what they need to get the job done until we have something uniform with Badfish.

That sounds ideal, likely more of a longer-term endeavor. A lot of BIOS settings are not accessible via Redfish (or racadm) but can be modified by pulling/pushing templates via the native export commands as @grafuls points out, this facility already being in BF. I'm thinking about what our options might be to load these template(s) in memory for on-the-fly key/value adjustment and local storage so the operations don't require modifying or worrying about any metadata elements outside the tool.

e.g. using local or container storage so we don't need so many calls to many remote systems:

(Against first-time hardware) 1) Badfish pulls the full BIOS configuration JSON with an option to save it locally per FQDN 2) Badfish can then operate locally on the retrieved template, listing key/values or creating a new modified local JSON with intended values keeping the data in memory so it can reference settings locally. 3) Badfish can display an easy, human-readable digest of just tunables with option to selectively change elements and support --key value modification like we do currently with --set-bios-attribute https://github.com/redhat-performance/badfish#set-bios-attribute 4) Badfish can then push those values and retrieve a new local copy once it verifies those settings are implemented remotely.

e.g. functionality similar to conf/idrac_interfaces.yml

Against uniform systems of same hardware/model

1) Ship / push / re-apply a sanitized "baseline" json template for that particular model of hardware

This is already supported in Badfish, but I am not sure at what level the JSON is genericized to remove unique elements like Service Tag or other data, I would have to check.

This can probably go into a linked RFE for Badfish as it is and we can brainstorm from there.

grafuls commented 1 year ago

Looks like modifying network attributes (including SRIOV) are now supported since idrac9 (5.10 version).

For this I raised an RFE on the BF repo: https://github.com/redhat-performance/badfish/issues/385

Will update here once completed.