Skip to content

Commit

Permalink
feat: fill bmc_fw_update role
Browse files Browse the repository at this point in the history
Signed-off-by: Boris Glimcher <[email protected]>
  • Loading branch information
glimchb committed Feb 13, 2024
1 parent 0e46fda commit 74e7995
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 0 deletions.
6 changes: 6 additions & 0 deletions playbooks/firmware.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
- name: Update DPU Firmware
hosts: all
connection: local
gather_facts: false
roles:
- bmc_fw_update
83 changes: 83 additions & 0 deletions roles/bmc_fw_update/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,85 @@
# SPDX-License-Identifier: Apache-2.0
# Copyright (c) 2022-2024 Dell Inc, or its subsidiaries.

---
# tasks file for bmc_fw_update

- name: Get Firmware Inventory
community.general.redfish_info:
category: Update
command: GetFirmwareInventory
baseuri: "{{ inventory_hostname }}"
username: "{{ dpu_bmc_username }}"
password: "{{ dpu_bmc_password }}"
register: fw_inventory_before

- name: Print BMC Version
ansible.builtin.debug:
msg: "{{ fw_inventory_before.redfish_facts.firmware.entries[0].Version }}"

- name: Download firmware {{ firmware.bmc }} image
ansible.builtin.get_url:
url: "{{ firmware.url }}/{{ firmware.bmc }}"
dest: /tmp/{{ firmware.bmc }}
mode: '0440'

- name: Update BMC firmware of DPU
community.general.redfish_command:
category: Update
command: MultipartHTTPPushUpdate
baseuri: "{{ inventory_hostname }}"
username: "{{ dpu_bmc_username }}"
password: "{{ dpu_bmc_password }}"
timeout: 600
update_image_file: "/tmp/{{ firmware.bmc }}"
register: result_update_task

- name: Print TASK id for tracking
ansible.builtin.debug:
msg: "{{ result_update_task.return_values.update_status.handle }}"

- name: Pause for 10 seconds for BMC to start task
ansible.builtin.pause:
seconds: 10

- name: Get the status of an update operation in a loop
community.general.redfish_info:
category: Update
command: GetUpdateStatus
baseuri: "{{ inventory_hostname }}"
username: "{{ dpu_bmc_username }}"
password: "{{ dpu_bmc_password }}"
update_handle: "{{ result_update_task.return_values.update_status.handle }}"
register: update_progress
until: update_progress.redfish_facts.update_status.status != 'Running'
retries: 60
delay: 30

- ansible.builtin.assert: { that: "update_progress.redfish_facts.update_status.status == 'Completed'" }

- name: Reboot BMC to apply new firmware of DPU
community.general.redfish_command:
category: Manager
command: GracefulRestart
baseuri: "{{ inventory_hostname }}"
username: "{{ dpu_bmc_username }}"
password: "{{ dpu_bmc_password }}"

- name: Pause for 60 seconds for BMC to Reboot
ansible.builtin.pause:
seconds: 60

- name: Get Firmware Inventory
community.general.redfish_info:
category: Update
command: GetFirmwareInventory
baseuri: "{{ inventory_hostname }}"
username: "{{ dpu_bmc_username }}"
password: "{{ dpu_bmc_password }}"
register: fw_inventory_after

- name: Print BMC Version
ansible.builtin.debug:
msg: "{{ fw_inventory_after.redfish_facts.firmware.entries[0].Version }}"

- ansible.builtin.assert: { that: "fw_inventory_before.redfish_facts.firmware.entries[0].Version != fw_inventory_after.redfish_facts.firmware.entries[0].Version" }
5 changes: 5 additions & 0 deletions roles/bmc_fw_update/vars/main.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
---
# vars file for bmc_fw_update

firmware:
url: https://content.mellanox.com/BlueField/BMC/23.10-1-oct-2023
bmc: bf3-bmc-23.10-5_opn.fwpkg
cec: cec1736-ecfw-00.02.0152.0000-n02-rel-prod.fwpkg

0 comments on commit 74e7995

Please sign in to comment.