xref: /openbmc/openbmc-test-automation/lib/os_utilities.py (revision a28061a068f7b3d88041e98cbb681ce6f49b8ee7)
1*a28061a0SGeorge Keishing#!/usr/bin/env python3
2*a28061a0SGeorge Keishing
3*a28061a0SGeorge Keishingr"""
4*a28061a0SGeorge KeishingThis file contains utilities associated with the host OS.
5*a28061a0SGeorge Keishing"""
6*a28061a0SGeorge Keishing
7*a28061a0SGeorge Keishingimport os
8*a28061a0SGeorge Keishingimport sys
9*a28061a0SGeorge Keishing
10*a28061a0SGeorge Keishingsys.path.append(os.path.join(os.path.dirname(__file__), "../lib"))
11*a28061a0SGeorge Keishing
12*a28061a0SGeorge Keishingimport bmc_ssh_utils  # NOQA
13*a28061a0SGeorge Keishingimport var_funcs  # NOQA
14*a28061a0SGeorge Keishing
15*a28061a0SGeorge Keishing
16*a28061a0SGeorge Keishingdef get_os_release_info(default_cmd="cat /etc/os-release"):
17*a28061a0SGeorge Keishing    r"""
18*a28061a0SGeorge Keishing
19*a28061a0SGeorge Keishing        Get os-release info and return it as a dictionary.
20*a28061a0SGeorge Keishing
21*a28061a0SGeorge Keishing        An example of the contents of /etc/os-release:
22*a28061a0SGeorge Keishing
23*a28061a0SGeorge Keishing        NAME="Red Hat Enterprise Linux Server"
24*a28061a0SGeorge Keishing        VERSION="7.5 (Maipo)"
25*a28061a0SGeorge Keishing        ID="rhel"
26*a28061a0SGeorge Keishing        ID_LIKE="fedora"
27*a28061a0SGeorge Keishing        VARIANT="Server"
28*a28061a0SGeorge Keishing        VARIANT_ID="server"
29*a28061a0SGeorge Keishing        VERSION_ID="7.5"
30*a28061a0SGeorge Keishing        PRETTY_NAME="Red Hat Enterprise Linux Server 7.5 Beta (Maipo)"
31*a28061a0SGeorge Keishing        ANSI_COLOR="0;31"
32*a28061a0SGeorge Keishing        CPE_NAME="cpe:/o:redhat:enterprise_linux:7.5:beta:server"
33*a28061a0SGeorge Keishing        HOME_URL="https://www.redhat.com/"
34*a28061a0SGeorge Keishing        BUG_REPORT_URL="https://bugzilla.redhat.com/"
35*a28061a0SGeorge Keishing
36*a28061a0SGeorge Keishing        REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
37*a28061a0SGeorge Keishing        REDHAT_BUGZILLA_PRODUCT_VERSION=7.5
38*a28061a0SGeorge Keishing        REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
39*a28061a0SGeorge Keishing        REDHAT_SUPPORT_PRODUCT_VERSION="7.5 Beta"
40*a28061a0SGeorge Keishing
41*a28061a0SGeorge Keishing        For the data shown above, this function will return the following
42*a28061a0SGeorge Keishing        dictionary:
43*a28061a0SGeorge Keishing
44*a28061a0SGeorge Keishing        result:
45*a28061a0SGeorge Keishing          [name]:                             Red Hat Enterprise Linux Server
46*a28061a0SGeorge Keishing          [version]:                          7.5 (Maipo)
47*a28061a0SGeorge Keishing          [id]:                               rhel
48*a28061a0SGeorge Keishing          [id_like]:                          fedora
49*a28061a0SGeorge Keishing          [variant]:                          Server
50*a28061a0SGeorge Keishing          [variant_id]:                       server
51*a28061a0SGeorge Keishing          [version_id]:                       7.5
52*a28061a0SGeorge Keishing          [pretty_name]:                      Red Hat Enterprise Linux Server 7.5 Beta (Maipo)
53*a28061a0SGeorge Keishing          [ansi_color]:                       0;31
54*a28061a0SGeorge Keishing          [cpe_name]:                         cpe:/o:redhat:enterprise_linux:7.5:beta:server
55*a28061a0SGeorge Keishing          [home_url]:                         https://www.redhat.com/
56*a28061a0SGeorge Keishing          [bug_report_url]:                   https://bugzilla.redhat.com/
57*a28061a0SGeorge Keishing          [redhat_bugzilla_product]:          Red Hat Enterprise Linux 7
58*a28061a0SGeorge Keishing          [redhat_bugzilla_product_version]:  7.5
59*a28061a0SGeorge Keishing          [redhat_support_product]:           Red Hat Enterprise Linux
60*a28061a0SGeorge Keishing          [redhat_support_product_version]:   7.5 Beta
61*a28061a0SGeorge Keishing
62*a28061a0SGeorge Keishing
63*a28061a0SGeorge Keishing    .   Description of argument(s):
64*a28061a0SGeorge Keishing        default_cmd    A string command to be executed (e.g cat /etc/os-release).
65*a28061a0SGeorge Keishing
66*a28061a0SGeorge Keishing    """
67*a28061a0SGeorge Keishing
68*a28061a0SGeorge Keishing    stdout, stderr, rc = bmc_ssh_utils.os_execute_command(default_cmd)
69*a28061a0SGeorge Keishing
70*a28061a0SGeorge Keishing    return var_funcs.key_value_outbuf_to_dict(stdout, delim="=", strip='"')
71