blob: eb31c71fe5f40824f342daeba4b34295c1af926c [file] [log] [blame]
#!/usr/bin/env python3
r"""
VPD functions.
"""
import func_args as fa
import bmc_ssh_utils as bsu
import json
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]