blob: 754d255597b96147eab6e0084a1396b32d2276c4 [file] [log] [blame]
#!/usr/bin/env python3
r"""
VPD functions.
"""
import json
import bmc_ssh_utils as bsu
import func_args as fa
def vpdtool(option_string, **bsu_options):
r"""
Run vpdtool on the BMC with the caller's option string and return the result.
Example:
${vpd_results}= vpd-tool -i
Rprint Vars vpd_results
vpd_results:
[/system/chassis/motherboard]:
[PN]: PN12345
[SN]: YL2E2D010000
[LocationCode]: U78DA.ND1. -P0
[CC]: 2E2D
[DR]: SYSTEM BACKPLANE
[FN]: F191014
[type]: xyz.openbmc_project.Inventory.Item.Board.Motherboard
[/system/chassis/motherboard/ebmc_card_bmc]:
[PN]: PN12345
[SN]: YL6B58010000
[LocationCode]: U78DA.ND1. -P0-C5
[CC]: 6B58
[DR]: EBMC
[FN]: F191014
[type]: xyz.openbmc_project.Inventory.Item.Bmc
Description of argument(s):
option_string A string of options which are to be processed by
the vpd-tool command.
bsu_options Options to be passed directly to bmc_execute_command.
See its prolog for details.
"""
bsu_options = fa.args_to_objects(bsu_options)
out_buf, stderr, rc = bsu.bmc_execute_command(
"vpd-tool " + option_string, **bsu_options
)
# Only return output if its not a VPD write command.
if "-w" not in option_string:
out_buf = json.loads(out_buf)
if "-r" in option_string:
return out_buf
else:
return out_buf[0]