1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
# Copyright (C) 2019 Criteo
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
"""API to the hp-conrep utility to list the bios settings"""
import os
import sys
import tempfile
import xml.etree.ElementTree as ET
from hardware.detect_utils import cmd
def get_hp_conrep(hrdw):
for i in hrdw:
if i[0:3] == ('system', 'product', 'vendor'):
if i[3] not in ['HPE', 'HP']:
return True, ""
output_file = tempfile.TemporaryFile()
status, output = cmd("hp-conrep --save -f {}".format(output_file))
if status != 0:
sys.stderr.write("Unable to run hp-conrep: %s\n" % output)
return False, ""
return_value = open(output_file).read()
os.remove(output_file)
return True, return_value
def dump_hp_bios(hrdw):
hwlst = []
# handle output injection for testing purpose
valid, hpconfig = get_hp_conrep(hrdw)
if not valid:
return hwlst
if hpconfig:
xml = ET.fromstring(hpconfig)
root = xml.iter("Section")
for child in root:
hwlst.append(('hp', 'bios', child.attrib['name'], child.text))
return hwlst
|