#!/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]