treewide: lint and format
Run all the latest linters and formatters from openbmc-build-scripts.
These were all robotically generated except for fixes due to
markdownlint warnings.
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: If16d2fd802a2d452234d8b56b41e79d030138a6b
diff --git a/README.md b/README.md
index 4a04be6..adbc2b1 100644
--- a/README.md
+++ b/README.md
@@ -8,24 +8,24 @@
## Repository Rules
-* _Always_ inspect what you will be executing
-* Some hacking on your part is to be expected
+- _Always_ inspect what you will be executing
+- Some hacking on your part is to be expected
## If you're still with us
Then this repository aims to be the default destination for your otherwise
-un-homed scripts. As such we are setting the bar for submission pretty low,
-and we aim to make the process as easy as possible.
+un-homed scripts. As such we are setting the bar for submission pretty low, and
+we aim to make the process as easy as possible.
## Sending patches
Please use gerrit for all patches to this repository:
-* [Gerrit](https://gerrit.openbmc-project.xyz/) Repository
+- [Gerrit](https://gerrit.openbmc-project.xyz/) Repository
Do note that you will need to be party to the OpenBMC CLA before your
-contributions can be accepted. See [Gerrit Setup and CLA][1]
-for more information.
+contributions can be accepted. See [Gerrit Setup and CLA][1] for more
+information.
## What we will do once we have your patches
@@ -46,4 +46,5 @@
remove scripts from time to time as part of housekeeping. It's probably best to
copy things out if you need stability.
-[1]: https://github.com/openbmc/docs/blob/master/CONTRIBUTING.md#submitting-changes-via-gerrit-server
+[1]:
+ https://github.com/openbmc/docs/blob/master/CONTRIBUTING.md#submitting-changes-via-gerrit-server
diff --git a/bbdbg/bbdbg b/bbdbg/bbdbg
index e74ee11..0f7a1cd 100755
--- a/bbdbg/bbdbg
+++ b/bbdbg/bbdbg
@@ -3,22 +3,22 @@
set -eu
bbdbg_help() {
- /bin/echo -e "NAME"
- /bin/echo -e "\tbbdbg - debug applications in a target environment built by bitbake"
- /bin/echo -e
- /bin/echo -e "SYNOPSIS"
- /bin/echo -e "\tbbdbg PATH FILE CORE PACKAGES"
- /bin/echo -e
- /bin/echo -e "DESCRIPTION"
- /bin/echo -e "\tPATH is the path to the root of a bitbake build directory"
- /bin/echo -e "\tFILE is the absolute path to the binary of interest in the target environment"
- /bin/echo -e "\tCORE is an optional core file generated by FILE. Pass '-' for no core file"
- /bin/echo -e "\tPACKAGES will be used to populate a temporary rootfs for debugging FILE"
- /bin/echo -e
- /bin/echo -e "EXAMPLE"
- /bin/echo -e "\tbbdbg ~/src/openbmc/openbmc/build/p10bmc \\"
- /bin/echo -e "\t\t/usr/bin/nvmesensor - \\"
- /bin/echo -e "\t\tdbus-sensors dbus-sensors-dbg"
+ /bin/echo -e "NAME"
+ /bin/echo -e "\tbbdbg - debug applications in a target environment built by bitbake"
+ /bin/echo -e
+ /bin/echo -e "SYNOPSIS"
+ /bin/echo -e "\tbbdbg PATH FILE CORE PACKAGES"
+ /bin/echo -e
+ /bin/echo -e "DESCRIPTION"
+ /bin/echo -e "\tPATH is the path to the root of a bitbake build directory"
+ /bin/echo -e "\tFILE is the absolute path to the binary of interest in the target environment"
+ /bin/echo -e "\tCORE is an optional core file generated by FILE. Pass '-' for no core file"
+ /bin/echo -e "\tPACKAGES will be used to populate a temporary rootfs for debugging FILE"
+ /bin/echo -e
+ /bin/echo -e "EXAMPLE"
+ /bin/echo -e "\tbbdbg ~/src/openbmc/openbmc/build/p10bmc \\"
+ /bin/echo -e "\t\t/usr/bin/nvmesensor - \\"
+ /bin/echo -e "\t\tdbus-sensors dbus-sensors-dbg"
}
trap bbdbg_help EXIT
@@ -34,22 +34,22 @@
BBDBG_CONF=$(find ${BBDBG_PATH}/tmp/work/*/obmc-phosphor-image -name opkg.conf -exec grep -lE ^src \{\} \;)
bbdbg_cleanup() {
- rm -rf "$BBDBG_ROOT"
+ rm -rf "$BBDBG_ROOT"
}
trap bbdbg_cleanup EXIT
bbdbg_opkg() {
- LD_LIBRARY_PATH=${BBDBG_LIBS} $BBDBG_OPKG -V0 -f $BBDBG_CONF -o $BBDBG_ROOT $@
+ LD_LIBRARY_PATH=${BBDBG_LIBS} $BBDBG_OPKG -V0 -f $BBDBG_CONF -o $BBDBG_ROOT $@
}
set -x
bbdbg_opkg update
bbdbg_opkg install $BBDBG_PKGS
gdb-multiarch -q \
- -iex "set solib-absolute-prefix $BBDBG_ROOT" \
- -iex "add-auto-load-safe-path $BBDBG_ROOT" \
- -iex "set directories $BBDBG_ROOT" \
- ${BBDBG_ROOT}${BBDBG_FILE} \
- $([ '-' = "${BBDBG_CORE}" ] || echo ${BBDBG_CORE})
+ -iex "set solib-absolute-prefix $BBDBG_ROOT" \
+ -iex "add-auto-load-safe-path $BBDBG_ROOT" \
+ -iex "set directories $BBDBG_ROOT" \
+ ${BBDBG_ROOT}${BBDBG_FILE} \
+ $([ '-' = "${BBDBG_CORE}" ] || echo ${BBDBG_CORE})
set +x
diff --git a/bi2cp/README.md b/bi2cp/README.md
index 7596b2b..9edc207 100644
--- a/bi2cp/README.md
+++ b/bi2cp/README.md
@@ -1,4 +1,4 @@
-## bi2cp: Beagle I2C Parser
+# bi2cp: Beagle I2C Parser
`bi2cp` parses CSV dumps from the Beagle logic analyzer to lift the raw I2C
transfers to expose PMBus semantics.
@@ -6,22 +6,22 @@
`bi2cp` can also test PEC bytes in transfers among other features - external
dependencies are listed in `requirements.txt`:
-```
-$ pip3 install --user --requirement requirements.txt
+```sh
+pip3 install --user --requirement requirements.txt
```
## Example Run
-```
+```sh
$ ./bi2cp --address 0x11 --pmbus 'UCD recreate beagle scan 1.csv' | head
-00:30.757419 0.000211 0x11 READ MFR_SPECIFIC_45 | 00:30.757631 0.002693 [ 1b 55 43 44 39 30 33 32 30 7c 33 2e 30 2e 30 2e 33 30 32 39 7c 31 36 30 39 31 35 00 ]
-00:30.767143 0.000207 0x11 READ MFR_SPECIFIC_06 | 00:30.767350 0.000203 [ 20 ]
-00:30.767574 0.000205 0x11 READ MFR_SPECIFIC_05 | 00:30.767780 0.003184 [ 20 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f ]
+00:30.757419 0.000211 0x11 READ MFR_SPECIFIC_45 | 00:30.757631 0.002693 [ 1b 55 43 44 39 30 33 32 30 7c 33 2e 30 2e 30 2e 33 30 32 39 7c 31 36 30 39 31 35 00 ]
+00:30.767143 0.000207 0x11 READ MFR_SPECIFIC_06 | 00:30.767350 0.000203 [ 20 ]
+00:30.767574 0.000205 0x11 READ MFR_SPECIFIC_05 | 00:30.767780 0.003184 [ 20 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f ]
00:30.771015 0.000302 0x11 WRITE MFR_SPECIFIC_42 [ 00 ]
-00:30.771332 0.000205 0x11 READ MFR_SPECIFIC_43 | 00:30.771538 0.000208 [ 08 ]
+00:30.771332 0.000205 0x11 READ MFR_SPECIFIC_43 | 00:30.771538 0.000208 [ 08 ]
00:30.771758 0.000301 0x11 WRITE MFR_SPECIFIC_42 [ 01 ]
-00:30.772072 0.000205 0x11 READ MFR_SPECIFIC_43 | 00:30.772278 0.000204 [ 00 ]
+00:30.772072 0.000205 0x11 READ MFR_SPECIFIC_43 | 00:30.772278 0.000204 [ 00 ]
00:30.772493 0.000301 0x11 WRITE MFR_SPECIFIC_42 [ 02 ]
-00:30.772805 0.000205 0x11 READ MFR_SPECIFIC_43 | 00:30.773010 0.000204 [ 00 ]
+00:30.772805 0.000205 0x11 READ MFR_SPECIFIC_43 | 00:30.773010 0.000204 [ 00 ]
00:30.773226 0.000301 0x11 WRITE MFR_SPECIFIC_42 [ 03 ]
```
diff --git a/dbus-pcap/README.md b/dbus-pcap/README.md
index 5b15f6e..7d84601 100644
--- a/dbus-pcap/README.md
+++ b/dbus-pcap/README.md
@@ -1,17 +1,17 @@
-## dbus-pcap: A tool to analyse D-Bus traffic captures
+# dbus-pcap: A tool to analyse D-Bus traffic captures
`dbus-pcap` is a tool to slice, dice and display captures of D-Bus traffic
captured into a the standard `pcap` packet container.
D-Bus traffic on OpenBMC can be captured using `busctl`:
-```
-# busctl capture > /tmp/dbus.pcap
+```sh
+busctl capture > /tmp/dbus.pcap
```
## Use
-```
+```sh
$ ./dbus-pcap --help
usage: dbus-pcap [-h] [--json] [--no-track-calls] file [expressions [expressions ...]]
@@ -25,10 +25,11 @@
--no-track-calls Make a call response pass filters
```
-### Examples of Simple Invocations and Output
+## Examples of Simple Invocations and Output
The default output style:
-```
+
+```sh
$ ./dbus-pcap dbus.pcap | head -n 3
1553600866.443112: CookedMessage(header=CookedHeader(fixed=FixedHeader(endian=108, type=4, flags=1, version=1, length=76, cookie=6919136), fields=[Field(type=<MessageFieldType.PATH: 1>, data='/xyz/openbmc_project/sensors/fan_tach/fan0_0'), Field(type=<MessageFieldType.INTERFACE: 2>, data='org.freedesktop.DBus.Properties'), Field(type=<MessageFieldType.MEMBER: 3>, data='PropertiesChanged'), Field(type=<MessageFieldType.SIGNATURE: 8>, data='sa{sv}as'), Field(type=<MessageFieldType.SENDER: 7>, data=':1.95')]), body=['xyz.openbmc_project.Sensor.Value', [['Value', 3210]], []])
@@ -37,8 +38,10 @@
...
```
-With JSON output, useful for piping through (`jq`)[https://stedolan.github.io/jq/]:
-```
+With JSON output, useful for piping through
+[`jq`](https://stedolan.github.io/jq/):
+
+```sh
$ ./dbus-pcap --json | head -n 2
$ dbus-pcap --json dbus.pcap | head
[[[108, 4, 1, 1, 76, 6919136], [[1, "/xyz/openbmc_project/sensors/fan_tach/fan0_0"], [2, "org.freedesktop.DBus.Properties"], [3, "PropertiesChanged"], [8, "sa{sv}as"], [7, ":1.95"]]], ["xyz.openbmc_project.Sensor.Value", [["Value", 3210]], []]]
@@ -52,7 +55,7 @@
captures it falls down in terms of scriptability and the filters exposed by the
dissector.
-In addition to parsing and displaying packet contents `dbus-pcap` can filter
-the capture based on [standard D-Bus match
-expressions](https://dbus.freedesktop.org/doc/dbus-specification.html#message-bus-routing-match-rules)
+In addition to parsing and displaying packet contents `dbus-pcap` can filter the
+capture based on
+[standard D-Bus match expressions](https://dbus.freedesktop.org/doc/dbus-specification.html#message-bus-routing-match-rules)
(though does not yet support argument matching).
diff --git a/dbus-pcap/dbus-pcap b/dbus-pcap/dbus-pcap
index 2b4e778..6fb66a0 100755
--- a/dbus-pcap/dbus-pcap
+++ b/dbus-pcap/dbus-pcap
@@ -539,12 +539,12 @@
matchers = parse_match_rules(args.expressions)
try:
if args.json:
- for (_, msg) in parse_session(
+ for _, msg in parse_session(
stream, matchers, not args.no_track_calls
):
print("{}".format(json.dumps(msg, default=packetconv)))
else:
- for (time, msg) in parse_session(
+ for time, msg in parse_session(
stream, matchers, not args.no_track_calls
):
print("{}: {}".format(time, msg))
diff --git a/dbus-top/README.md b/dbus-top/README.md
index 8734001..b7be655 100644
--- a/dbus-top/README.md
+++ b/dbus-top/README.md
@@ -8,7 +8,6 @@
Created: May 17, 2021
-
## Problem Description
Design and Implementation of a top-like tool for DBus. This tool shows metrics
@@ -24,34 +23,35 @@
This tool adds to the set of command-line based tools that run directly on the
BMC. Using a tool that directly runs on the BMC, a user can debug problems
in-situ, without needing to extract data from the BMC to the host for offline
-analysis. This tool resembles a typical top-like user interface, giving the
-user a top-down view of various DBus states. This tool is designed in the same
-logic as similarly-purposed, existing tools, each focusing on one particular
-field such as ctop (for containers), htop (for viewing process stats),
-iotop (for I/O throughput), iftop (for network traffic).
+analysis. This tool resembles a typical top-like user interface, giving the user
+a top-down view of various DBus states. This tool is designed in the same logic
+as similarly-purposed, existing tools, each focusing on one particular field
+such as ctop (for containers), htop (for viewing process stats), iotop (for I/O
+throughput), iftop (for network traffic).
## Requirements
Constraints:
-1. BMC consoles may not be capable of displaying all text styles supported
- in ncurses Dependency on libncurses which might add ~130KB overhead
- to the BMC’s Flash space.
-2. Monitoring DBus should not incur so much performance overhead as to
- distort measured values.
-3. Users are OpenBMC users and developers: This tool should help beginners
- learn the basics of OpenBMC, as well as help seasoned developers quickly
- locate a problem.
+
+1. BMC consoles may not be capable of displaying all text styles supported in
+ ncurses Dependency on libncurses which might add ~130KB overhead to the BMC’s
+ Flash space.
+2. Monitoring DBus should not incur so much performance overhead as to distort
+ measured values.
+3. Users are OpenBMC users and developers: This tool should help beginners learn
+ the basics of OpenBMC, as well as help seasoned developers quickly locate a
+ problem.
Scope:
-1. This tool is standalone, self-sufficient, with minimum dependency
- on existing software packages (only depends on basic packages like
- systemd, libdbus, sdbus, sdbusplus, and libncurses.)
- Data size, transaction rates, bandwidth: We will be looking at
- typically hundreds of DBus messages per second and around 1 MB/s data
- throughput. The BMC’s processing power and memory capacity are sufficient
- for the scale of the data this tool is processing.
-2. This tool should work on a live DBus as well as on a capture file
- (a pcap file).
+
+1. This tool is standalone, self-sufficient, with minimum dependency on existing
+ software packages (only depends on basic packages like systemd, libdbus,
+ sdbus, sdbusplus, and libncurses.) Data size, transaction rates, bandwidth:
+ We will be looking at typically hundreds of DBus messages per second and
+ around 1 MB/s data throughput. The BMC’s processing power and memory capacity
+ are sufficient for the scale of the data this tool is processing.
+2. This tool should work on a live DBus as well as on a capture file (a pcap
+ file).
3. This tool should work both on the host or the BMC. The UI design is scaled to
work with large numbers of sensors and different console sizes.
@@ -60,7 +60,7 @@
The proposed design is to layout a multi-window UI similar to how a tiled window
manager does:
-```
+```text
+----------------------------------------------------------------------------+
|Message Type | msg/s History (Total msg/s) |
|Method Call 45.00 - . . . . -2300 |
@@ -90,26 +90,32 @@
The UI has 3 windows:
-1. Top, summary window: This window is divided into two sections:
- - The dbus traffic dump that shows the method calls, method returns,signals
- and errors in every dbus callback. This is significant because it shows the
- latency between every call back and the other section that shows the graph
- can benefit from this.
- - The other part shows a history graph of these
- corresponding data and it is designed this way to show users a pictorial
- representation of the callback metrics.
+### Top, summary window
-2. Bottom-left, sensor detail window: This window has two states:
- - The window shows the list of all sensors (as defined by DBus objects
- implementing the xyz.openbmc_project.Sensor.Value) by default
- - When a sensor is selected, it shows the corresponding details including
- sensor name, the dbus connection, PID and the dbus service associated with
- the sensor. This will be helpful in understanding what is connected to the
- sensor in a case of performance related to the sensor.
+This window is divided into two sections:
+
+- The dbus traffic dump that shows the method calls, method returns,signals and
+ errors in every dbus callback. This is significant because it shows the
+ latency between every call back and the other section that shows the graph can
+ benefit from this.
+- The other part shows a history graph of these corresponding data and it is
+ designed this way to show users a pictorial representation of the callback
+ metrics.
+
+### Bottom-left, sensor detail window
+
+This window has two states:
+
+- The window shows the list of all sensors (as defined by DBus objects
+ implementing the xyz.openbmc_project.Sensor.Value) by default
+- When a sensor is selected, it shows the corresponding details including sensor
+ name, the dbus connection, PID and the dbus service associated with the
+ sensor. This will be helpful in understanding what is connected to the sensor
+ in a case of performance related to the sensor.
The following is how the window might look once a sensor has been selected:
-```
+```text
+-------------------------------------------------+
| Details for sensor cputemp0 Sensor 1/192 |
| [DBus Info] |
@@ -128,14 +134,16 @@
+-------------------------------------------------+
```
-3. Bottom-right, DBus stats list view window: This window shows the stats of
-DBus connections in a list, aggregated by the fields of the user’s choice. These
-fields include sender, destination, path, interface, and message type.
+### Bottom-right, DBus stats list view window
+
+This window shows the stats of DBus connections in a list, aggregated by the
+fields of the user’s choice. These fields include sender, destination, path,
+interface, and message type.
A menu is available that allows the user to select what fields to use to
aggregate the entries in the window.
-```
+```text
+----------------------------------------+
|Available Fields Active Fields |
| |
@@ -148,10 +156,9 @@
The windows can be resized, or shown/hidden individually.
-
Overview of the Program Structure:
-```
+```text
UI Thread Analysis Thread Capture Thread
_______^_______ _________^__________ _________^______
/ \ / \ / \
@@ -191,12 +198,11 @@
Security impact: Being confirmed.
Performance impact: Will only have a small impact when the program is running.
- No impact when it’s not running.
+No impact when it’s not running.
Developer impact: For machines that do not install libncurses by default, adding
- this tool might incur a ~130KB overhead due to the libncurses
- library. No space overhead if the machine already includes
- libncurses.
+this tool might incur a ~130KB overhead due to the libncurses library. No space
+overhead if the machine already includes libncurses.
## Testing
diff --git a/dbus-vis/README.md b/dbus-vis/README.md
index 99af0b4..778c6eb 100644
--- a/dbus-vis/README.md
+++ b/dbus-vis/README.md
@@ -1,23 +1,34 @@
-This program captures & visualizes IPMI traffic on a BMC running OpenBMC. It allows the user to capture & view IPMI requests in a time line format, as well as generate commands that can talk to `ipmid` or `ipmitool` to replay those IPMI requests.
+# dbus-vis
+
+This program captures & visualizes IPMI traffic on a BMC running OpenBMC. It
+allows the user to capture & view IPMI requests in a time line format, as well
+as generate commands that can talk to `ipmid` or `ipmitool` to replay those IPMI
+requests.
## Build
-This program is based on Electron, and should be compatible with Windows, Linux, Mac and ChromeOS's Linux environment.
+This program is based on Electron, and should be compatible with Windows, Linux,
+Mac and ChromeOS's Linux environment.
-The following commands are all run from this folder (where `index.html` is located.)
+The following commands are all run from this folder (where `index.html` is
+located.)
-To build and run, a user would first need to install node.js and npm (Node.js package manager), and then checkout `dbus-pcap` to this folder. To install node.js on a Ubuntu/Debian-based system:
+To build and run, a user would first need to install node.js and npm (Node.js
+package manager), and then checkout `dbus-pcap` to this folder. To install
+node.js on a Ubuntu/Debian-based system:
-First, install `npm` and `node.js` using a method that is suitable for your setup.
+First, install `npm` and `node.js` using a method that is suitable for your
+setup.
-```
+```sh
$ node --version
v10.20.1
$ npm --version
6.14.4
```
-Then, with `npm`, `node.js` installed and `dbus-pcap` downloaded to this folder, run the following commands:
+Then, with `npm`, `node.js` installed and `dbus-pcap` downloaded to this folder,
+run the following commands:
1. `npm install`
@@ -29,7 +40,8 @@
1. Select "Open an existing file"
2. Click "Open file"
-3. Choose a file (The file should be a text file, and its contents should be dbus-monitor outputs)
+3. Choose a file (The file should be a text file, and its contents should be
+ dbus-monitor outputs)
### Capture
@@ -38,6 +50,7 @@
3. Choose a capture mode (live or staged)
4. Click "start capture" and watch the status updates
5. Click "stop capture" when done
-6. If something happens, manual clean-up might be needed, such as stopping dbus-monitor on the BMC
+6. If something happens, manual clean-up might be needed, such as stopping
+ dbus-monitor on the BMC

diff --git a/dbus-vis/package.json b/dbus-vis/package.json
index 5abe160..42c9623 100644
--- a/dbus-vis/package.json
+++ b/dbus-vis/package.json
@@ -1,27 +1,27 @@
{
- "name": "openbmc_ipmi_timeline_vis",
- "version": "0.0.1",
- "description": "OpenBMC IPMI Timeline Visualizer",
- "main": "main.js",
- "scripts": {
- "start": "electron ."
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/quadpixels/openbmc_ipmi_timeline_vis.git"
- },
- "keywords": [
- "OpenBMC",
- "IPMI"
- ],
- "devDependencies": {
- "electron": "^18.2.4"
- },
- "dependencies": {
- "electron-dialog": "^2.0.0",
- "file-system": "^2.2.2",
- "md5-file": "^5.0.0",
- "tar-stream": "^2.1.2",
- "targz": "^1.0.1"
- }
+ "name": "openbmc_ipmi_timeline_vis",
+ "version": "0.0.1",
+ "description": "OpenBMC IPMI Timeline Visualizer",
+ "main": "main.js",
+ "scripts": {
+ "start": "electron ."
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/quadpixels/openbmc_ipmi_timeline_vis.git"
+ },
+ "keywords": [
+ "OpenBMC",
+ "IPMI"
+ ],
+ "devDependencies": {
+ "electron": "^18.2.4"
+ },
+ "dependencies": {
+ "electron-dialog": "^2.0.0",
+ "file-system": "^2.2.2",
+ "md5-file": "^5.0.0",
+ "tar-stream": "^2.1.2",
+ "targz": "^1.0.1"
+ }
}
diff --git a/ddconvnotrunc/ddconvnotrunc b/ddconvnotrunc/ddconvnotrunc
index 987df0a..fb2d37d 100755
--- a/ddconvnotrunc/ddconvnotrunc
+++ b/ddconvnotrunc/ddconvnotrunc
@@ -17,44 +17,44 @@
for arg in "$@"
do
- case "$arg" in
- if=*)
- ARG_IF="${arg#*=}"
- ;;
- of=*)
- ARG_OF="${arg#*=}"
- ;;
- bs=*)
- ARG_BS="${arg#*=}"
- ;;
- count=*)
- ARG_COUNT="${arg#*=}"
- ;;
- skip=*)
- ARG_SKIP="${arg#*=}"
- ;;
- seek=*)
- ARG_SEEK="${arg#*=}"
- ;;
- conv=notrunc)
- ARG_CONV_NOTRUNC=1
- ;;
- *)
- ARG_APPEND+="${arg#*=}"
- ;;
- esac
+ case "$arg" in
+ if=*)
+ ARG_IF="${arg#*=}"
+ ;;
+ of=*)
+ ARG_OF="${arg#*=}"
+ ;;
+ bs=*)
+ ARG_BS="${arg#*=}"
+ ;;
+ count=*)
+ ARG_COUNT="${arg#*=}"
+ ;;
+ skip=*)
+ ARG_SKIP="${arg#*=}"
+ ;;
+ seek=*)
+ ARG_SEEK="${arg#*=}"
+ ;;
+ conv=notrunc)
+ ARG_CONV_NOTRUNC=1
+ ;;
+ *)
+ ARG_APPEND+="${arg#*=}"
+ ;;
+ esac
done
# If conv=notrunc isn't supplied, invoke system dd
if [ -z "$ARG_CONV_NOTRUNC" ]
then
- exec $DD "$@"
+ exec $DD "$@"
fi
# If conv=notrunc is supplied and system dd supports it, invoke system dd
if $DD conv=notrunc < /dev/null > /dev/null 2> /dev/null
then
- exec $DD "$@"
+ exec $DD "$@"
fi
# Otherwise, emulate conv=notrunc support
@@ -66,28 +66,28 @@
# $ dd if=foo of=bar bs=1 seek=100 conv=notrunc
if [ "$ARG_IF" = "$ARG_OF" ]
then
- >&2 echo "Add support for self-modification"
- exit 1
+ >&2 echo "Add support for self-modification"
+ exit 1
fi
cleanup()
{
- rm -f $OF_FILE
+ rm -f $OF_FILE
}
filesize()
{
- # busybox stat(1) doesn't support --format=%s
- wc -c "$1" | awk '{print $1}'
+ # busybox stat(1) doesn't support --format=%s
+ wc -c "$1" | awk '{print $1}'
}
trap cleanup EXIT
if [ -z "$ARG_OF" ]
then
- DATA_SOURCE=
+ DATA_SOURCE=
else
- DATA_SOURCE='if='$ARG_OF
+ DATA_SOURCE='if='$ARG_OF
fi
# Intermediate output file
@@ -96,41 +96,41 @@
# Generate the prefix
if [ -z "$ARG_SEEK" ]
then
- PREFIX_COUNT=
- INSERT_SEEK=
+ PREFIX_COUNT=
+ INSERT_SEEK=
else
- PREFIX_COUNT='count='$ARG_SEEK
- INSERT_SEEK='seek='$ARG_SEEK
+ PREFIX_COUNT='count='$ARG_SEEK
+ INSERT_SEEK='seek='$ARG_SEEK
fi
if [ -z "$ARG_BS" ]
then
- PREFIX_BS=
- INSERT_BS=
+ PREFIX_BS=
+ INSERT_BS=
else
- PREFIX_BS='bs='$ARG_BS
- INSERT_BS='bs='$ARG_BS
+ PREFIX_BS='bs='$ARG_BS
+ INSERT_BS='bs='$ARG_BS
fi
if [ -z "$ARG_SKIP" ]
then
- INSERT_SKIP=
+ INSERT_SKIP=
else
- INSERT_SKIP='skip='$ARG_SKIP
+ INSERT_SKIP='skip='$ARG_SKIP
fi
if [ -z "$ARG_IF" ]
then
- INSERT_IF=
+ INSERT_IF=
else
- INSERT_IF='if='$ARG_IF
+ INSERT_IF='if='$ARG_IF
fi
if [ -z "$ARG_COUNT" ]
then
- INSERT_COUNT=
+ INSERT_COUNT=
else
- INSERT_COUNT='count='$ARG_COUNT
+ INSERT_COUNT='count='$ARG_COUNT
fi
# Create the prefix
@@ -143,7 +143,7 @@
if [ -z "$ARG_OF" ]
then
- OF_SUFFIX_OFF=$(($OF_SUFFIX_OFF - $OF_UPDATE_OFF))
+ OF_SUFFIX_OFF=$(($OF_SUFFIX_OFF - $OF_UPDATE_OFF))
fi
# Append the suffix
diff --git a/expectedJsonChecker/README.md b/expectedJsonChecker/README.md
index a9c0e80..82f8148 100644
--- a/expectedJsonChecker/README.md
+++ b/expectedJsonChecker/README.md
@@ -1,330 +1,327 @@
# Expected JSON Checker tool
-A tool that cross checks an expected set of JSON entries, by a given index,
-with a given input set of JSON entries. In addition, there's an ability to
-filter expected entries by using logical operations against entries within
-another file contain JSON entries. This filtering functionality on cross
-checking expected entries with a set of input is optional
+A tool that cross checks an expected set of JSON entries, by a given index, with
+a given input set of JSON entries. In addition, there's an ability to filter
+expected entries by using logical operations against entries within another file
+contain JSON entries. This filtering functionality on cross checking expected
+entries with a set of input is optional
-Expected entries that only want to be found within the input JSON should use
-a value of `{}`. This denotes the value for the given property should be
-treated as a `don't care` and ignored during the cross-check.
+Expected entries that only want to be found within the input JSON should use a
+value of `{}`. This denotes the value for the given property should be treated
+as a `don't care` and ignored during the cross-check.
-## Intention:
+## Intention
The intention for this tool's creation was to provide an ability to cross check
entries within the BMC's enumerated sensor JSON output against an expected set
of entries for a specific machine. In addition, the expected set of entries are
different based on specific entries within inventory. So given a dump of a
-machine's enumerated sensor data and inventory data to separate JSON files,
-an expected set of entries that should be contained within the sensor data
-is created for this machine. These JSON files are then fed into this tool to
+machine's enumerated sensor data and inventory data to separate JSON files, an
+expected set of entries that should be contained within the sensor data is
+created for this machine. These JSON files are then fed into this tool to
determine if all the expected set of entries are found within the sensor data.
The machine's name was used as the index into the expected JSON to allow the
same expected JSON file to be used across multiple machines instead of having
separate expected JSON files per machine(since what's expected will likely be
different across different machines).
-## (OPTIONAL) Filtering:
+## (OPTIONAL) Filtering
-Filters can be used for whether or not a set of entries within the expected
-JSON file should be included when cross checking with the input set of JSON
-entries. This is useful in allowing a single set of expected entries to be
-used and add/remove entries based on some other JSON file's contents.
+Filters can be used for whether or not a set of entries within the expected JSON
+file should be included when cross checking with the input set of JSON entries.
+This is useful in allowing a single set of expected entries to be used and
+add/remove entries based on some other JSON file's contents.
-### Supported logical operations:
+### Supported logical operations
-- \$and : Performs an AND operation on an array with at least two
- expressions and returns the document that meets all the
- expressions. i.e.) {"$and": [{"age": 5}, {"name": "Joe"}]}
-- \$or : Performs an OR operation on an array with at least two
- expressions and returns the documents that meet at least one of
- the expressions. i.e.) {"$or": [{"age": 4}, {"name": "Joe"}]}
-- \$nor : Performs a NOR operation on an array with at least two
- expressions and returns the documents that do not meet any of
- the expressions. i.e.) {"$nor": [{"age": 3}, {"name": "Moe"}]}
-- \$not : Performs a NOT operation on the specified expression and
- returns the documents that do not meet the expression.
- i.e.) {"$not": {"age": 4}}
+- \$and : Performs an AND operation on an array with at least two expressions
+ and returns the document that meets all the expressions. i.e.) {"$and":
+ [{"age": 5}, {"name": "Joe"}]}
+- \$or : Performs an OR operation on an array with at least two expressions and
+ returns the documents that meet at least one of the expressions. i.e.) {"$or":
+ [{"age": 4}, {"name": "Joe"}]}
+- \$nor : Performs a NOR operation on an array with at least two expressions and
+ returns the documents that do not meet any of the expressions. i.e.) {"$nor":
+ [{"age": 3}, {"name": "Moe"}]}
+- \$not : Performs a NOT operation on the specified expression and returns the
+ documents that do not meet the expression. i.e.) {"$not": {"age": 4}}
-## Example Usage:
+## Example Usage
Expected JSON set of entries for a `witherspoon` index(expected.json):
-```
+
+```json
{
- "witherspoon": {
- "/xyz/openbmc_project/sensors/fan_tach/fan0_0": {
+ "witherspoon": {
+ "/xyz/openbmc_project/sensors/fan_tach/fan0_0": {
+ "Functional": true,
+ "Target": {},
+ "Value": {}
+ },
+ "/xyz/openbmc_project/sensors/fan_tach/fan0_1": {
+ "Functional": true,
+ "Value": {}
+ },
+ "$op": {
+ "$and": [
+ {
+ "/xyz/openbmc_project/inventory/system/chassis": {
+ "WaterCooled": false
+ }
+ }
+ ],
+ "$input": [
+ {
+ "/xyz/openbmc_project/sensors/fan_tach/fan1_0": {
"Functional": true,
"Target": {},
"Value": {}
- },
- "/xyz/openbmc_project/sensors/fan_tach/fan0_1": {
+ },
+ "/xyz/openbmc_project/sensors/fan_tach/fan1_1": {
"Functional": true,
"Value": {}
- },
- "$op": {
- "$and": [{
- "/xyz/openbmc_project/inventory/system/chassis":{"WaterCooled": false}
- }],
- "$input": [{
- "/xyz/openbmc_project/sensors/fan_tach/fan1_0": {
- "Functional": true,
- "Target": {},
- "Value": {}
- },
- "/xyz/openbmc_project/sensors/fan_tach/fan1_1": {
- "Functional": true,
- "Value": {}
- }
- }]
+ }
}
+ ]
}
+ }
}
```
Input JSON set of entries(input.json):
-```
+
+```json
{
- "data": {
- "/xyz/openbmc_project/sensors/fan_tach/fan0_0": {
- "CriticalAlarmHigh": false,
- "CriticalAlarmLow": true,
- "CriticalHigh": 12076,
- "CriticalLow": 2974,
- "Functional": true,
- "MaxValue": 0,
- "MinValue": 0,
- "Scale": 0,
- "Target": 10500,
- "Unit": "xyz.openbmc_project.Sensor.Value.Unit.RPMS",
- "Value": 0
- },
- "/xyz/openbmc_project/sensors/fan_tach/fan0_0/chassis": {
- "endpoints": [
- "/xyz/openbmc_project/inventory/system/chassis"
- ]
- },
- "/xyz/openbmc_project/sensors/fan_tach/fan0_0/inventory": {
- "endpoints": [
- "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan0"
- ]
- },
- "/xyz/openbmc_project/sensors/fan_tach/fan0_1": {
- "CriticalAlarmHigh": false,
- "CriticalAlarmLow": false,
- "CriticalHigh": 12076,
- "CriticalLow": 2974,
- "Functional": true,
- "MaxValue": 0,
- "MinValue": 0,
- "Scale": 0,
- "Unit": "xyz.openbmc_project.Sensor.Value.Unit.RPMS",
- "Value": 3393
- },
- "/xyz/openbmc_project/sensors/fan_tach/fan0_1/chassis": {
- "endpoints": [
- "/xyz/openbmc_project/inventory/system/chassis"
- ]
- },
- "/xyz/openbmc_project/sensors/fan_tach/fan0_1/inventory": {
- "endpoints": [
- "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan0"
- ]
- },
- "/xyz/openbmc_project/sensors/fan_tach/fan1_0": {
- "CriticalAlarmHigh": false,
- "CriticalAlarmLow": true,
- "CriticalHigh": 12076,
- "CriticalLow": 2974,
- "Functional": true,
- "MaxValue": 0,
- "MinValue": 0,
- "Scale": 0,
- "Target": 10500,
- "Unit": "xyz.openbmc_project.Sensor.Value.Unit.RPMS",
- "Value": 0
- },
- "/xyz/openbmc_project/sensors/fan_tach/fan1_0/chassis": {
- "endpoints": [
- "/xyz/openbmc_project/inventory/system/chassis"
- ]
- },
- "/xyz/openbmc_project/sensors/fan_tach/fan1_0/inventory": {
- "endpoints": [
- "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan1"
- ]
- },
- "/xyz/openbmc_project/sensors/fan_tach/fan1_1": {
- "CriticalAlarmHigh": false,
- "CriticalAlarmLow": false,
- "CriticalHigh": 12076,
- "CriticalLow": 2974,
- "Functional": true,
- "MaxValue": 0,
- "MinValue": 0,
- "Scale": 0,
- "Unit": "xyz.openbmc_project.Sensor.Value.Unit.RPMS",
- "Value": 3409
- },
- "/xyz/openbmc_project/sensors/fan_tach/fan1_1/chassis": {
- "endpoints": [
- "/xyz/openbmc_project/inventory/system/chassis"
- ]
- },
- "/xyz/openbmc_project/sensors/fan_tach/fan1_1/inventory": {
- "endpoints": [
- "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan1"
- ]
- },
- "/xyz/openbmc_project/sensors/power/ps0_input_power": {
- "CriticalAlarmHigh": false,
- "CriticalAlarmLow": true,
- "CriticalHigh": 2500000000,
- "CriticalLow": 0,
- "Functional": true,
- "MaxValue": 0,
- "MinValue": 0,
- "Scale": -6,
- "Unit": "xyz.openbmc_project.Sensor.Value.Unit.Watts",
- "Value": 0,
- "WarningAlarmHigh": false,
- "WarningAlarmLow": true,
- "WarningHigh": 2350000000,
- "WarningLow": 0
- },
- "/xyz/openbmc_project/sensors/power/ps0_input_power/chassis": {
- "endpoints": [
- "/xyz/openbmc_project/inventory/system/chassis"
- ]
- },
- "/xyz/openbmc_project/sensors/power/ps0_input_power/inventory": {
- "endpoints": [
- "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0"
- ]
- },
- "/xyz/openbmc_project/sensors/power/ps1_input_power": {
- "CriticalAlarmHigh": false,
- "CriticalAlarmLow": false,
- "CriticalHigh": 2500000000,
- "CriticalLow": 0,
- "Functional": true,
- "MaxValue": 0,
- "MinValue": 0,
- "Scale": -6,
- "Unit": "xyz.openbmc_project.Sensor.Value.Unit.Watts",
- "Value": 18000000,
- "WarningAlarmHigh": false,
- "WarningAlarmLow": false,
- "WarningHigh": 2350000000,
- "WarningLow": 0
- },
- "/xyz/openbmc_project/sensors/power/ps1_input_power/chassis": {
- "endpoints": [
- "/xyz/openbmc_project/inventory/system/chassis"
- ]
- },
- "/xyz/openbmc_project/sensors/power/ps1_input_power/inventory": {
- "endpoints": [
- "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1"
- ]
- },
- "/xyz/openbmc_project/sensors/temperature/ambient": {
- "CriticalAlarmHigh": false,
- "CriticalAlarmLow": false,
- "CriticalHigh": 35000,
- "CriticalLow": 0,
- "Functional": true,
- "MaxValue": 0,
- "MinValue": 0,
- "Scale": -3,
- "Unit": "xyz.openbmc_project.Sensor.Value.Unit.DegreesC",
- "Value": 22420,
- "WarningAlarmHigh": false,
- "WarningAlarmLow": false,
- "WarningHigh": 25000,
- "WarningLow": 0
- }
+ "data": {
+ "/xyz/openbmc_project/sensors/fan_tach/fan0_0": {
+ "CriticalAlarmHigh": false,
+ "CriticalAlarmLow": true,
+ "CriticalHigh": 12076,
+ "CriticalLow": 2974,
+ "Functional": true,
+ "MaxValue": 0,
+ "MinValue": 0,
+ "Scale": 0,
+ "Target": 10500,
+ "Unit": "xyz.openbmc_project.Sensor.Value.Unit.RPMS",
+ "Value": 0
},
- "message": "200 OK",
- "status": "ok"
+ "/xyz/openbmc_project/sensors/fan_tach/fan0_0/chassis": {
+ "endpoints": ["/xyz/openbmc_project/inventory/system/chassis"]
+ },
+ "/xyz/openbmc_project/sensors/fan_tach/fan0_0/inventory": {
+ "endpoints": [
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan0"
+ ]
+ },
+ "/xyz/openbmc_project/sensors/fan_tach/fan0_1": {
+ "CriticalAlarmHigh": false,
+ "CriticalAlarmLow": false,
+ "CriticalHigh": 12076,
+ "CriticalLow": 2974,
+ "Functional": true,
+ "MaxValue": 0,
+ "MinValue": 0,
+ "Scale": 0,
+ "Unit": "xyz.openbmc_project.Sensor.Value.Unit.RPMS",
+ "Value": 3393
+ },
+ "/xyz/openbmc_project/sensors/fan_tach/fan0_1/chassis": {
+ "endpoints": ["/xyz/openbmc_project/inventory/system/chassis"]
+ },
+ "/xyz/openbmc_project/sensors/fan_tach/fan0_1/inventory": {
+ "endpoints": [
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan0"
+ ]
+ },
+ "/xyz/openbmc_project/sensors/fan_tach/fan1_0": {
+ "CriticalAlarmHigh": false,
+ "CriticalAlarmLow": true,
+ "CriticalHigh": 12076,
+ "CriticalLow": 2974,
+ "Functional": true,
+ "MaxValue": 0,
+ "MinValue": 0,
+ "Scale": 0,
+ "Target": 10500,
+ "Unit": "xyz.openbmc_project.Sensor.Value.Unit.RPMS",
+ "Value": 0
+ },
+ "/xyz/openbmc_project/sensors/fan_tach/fan1_0/chassis": {
+ "endpoints": ["/xyz/openbmc_project/inventory/system/chassis"]
+ },
+ "/xyz/openbmc_project/sensors/fan_tach/fan1_0/inventory": {
+ "endpoints": [
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan1"
+ ]
+ },
+ "/xyz/openbmc_project/sensors/fan_tach/fan1_1": {
+ "CriticalAlarmHigh": false,
+ "CriticalAlarmLow": false,
+ "CriticalHigh": 12076,
+ "CriticalLow": 2974,
+ "Functional": true,
+ "MaxValue": 0,
+ "MinValue": 0,
+ "Scale": 0,
+ "Unit": "xyz.openbmc_project.Sensor.Value.Unit.RPMS",
+ "Value": 3409
+ },
+ "/xyz/openbmc_project/sensors/fan_tach/fan1_1/chassis": {
+ "endpoints": ["/xyz/openbmc_project/inventory/system/chassis"]
+ },
+ "/xyz/openbmc_project/sensors/fan_tach/fan1_1/inventory": {
+ "endpoints": [
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan1"
+ ]
+ },
+ "/xyz/openbmc_project/sensors/power/ps0_input_power": {
+ "CriticalAlarmHigh": false,
+ "CriticalAlarmLow": true,
+ "CriticalHigh": 2500000000,
+ "CriticalLow": 0,
+ "Functional": true,
+ "MaxValue": 0,
+ "MinValue": 0,
+ "Scale": -6,
+ "Unit": "xyz.openbmc_project.Sensor.Value.Unit.Watts",
+ "Value": 0,
+ "WarningAlarmHigh": false,
+ "WarningAlarmLow": true,
+ "WarningHigh": 2350000000,
+ "WarningLow": 0
+ },
+ "/xyz/openbmc_project/sensors/power/ps0_input_power/chassis": {
+ "endpoints": ["/xyz/openbmc_project/inventory/system/chassis"]
+ },
+ "/xyz/openbmc_project/sensors/power/ps0_input_power/inventory": {
+ "endpoints": [
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0"
+ ]
+ },
+ "/xyz/openbmc_project/sensors/power/ps1_input_power": {
+ "CriticalAlarmHigh": false,
+ "CriticalAlarmLow": false,
+ "CriticalHigh": 2500000000,
+ "CriticalLow": 0,
+ "Functional": true,
+ "MaxValue": 0,
+ "MinValue": 0,
+ "Scale": -6,
+ "Unit": "xyz.openbmc_project.Sensor.Value.Unit.Watts",
+ "Value": 18000000,
+ "WarningAlarmHigh": false,
+ "WarningAlarmLow": false,
+ "WarningHigh": 2350000000,
+ "WarningLow": 0
+ },
+ "/xyz/openbmc_project/sensors/power/ps1_input_power/chassis": {
+ "endpoints": ["/xyz/openbmc_project/inventory/system/chassis"]
+ },
+ "/xyz/openbmc_project/sensors/power/ps1_input_power/inventory": {
+ "endpoints": [
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1"
+ ]
+ },
+ "/xyz/openbmc_project/sensors/temperature/ambient": {
+ "CriticalAlarmHigh": false,
+ "CriticalAlarmLow": false,
+ "CriticalHigh": 35000,
+ "CriticalLow": 0,
+ "Functional": true,
+ "MaxValue": 0,
+ "MinValue": 0,
+ "Scale": -3,
+ "Unit": "xyz.openbmc_project.Sensor.Value.Unit.DegreesC",
+ "Value": 22420,
+ "WarningAlarmHigh": false,
+ "WarningAlarmLow": false,
+ "WarningHigh": 25000,
+ "WarningLow": 0
+ }
+ },
+ "message": "200 OK",
+ "status": "ok"
}
```
Filter JSON set of entries(filter.json):
-```
+
+```json
{
- "data": {
- "/xyz/openbmc_project/inventory/system": {
- "AssetTag": "",
- "BuildDate": "",
- "Cached": false,
- "FieldReplaceable": false,
- "Manufacturer": "",
- "Model": "8335-GTA ",
- "PartNumber": "",
- "Present": true,
- "PrettyName": "",
- "SerialNumber": "1234567 "
- },
- "/xyz/openbmc_project/inventory/system/chassis": {
- "AirCooled": true,
- "Type": "RackMount",
- "WaterCooled": false
- },
- "/xyz/openbmc_project/inventory/system/chassis/activation": {
- "endpoints": [
- "/xyz/openbmc_project/software/224cd310"
- ]
- },
- "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0": {
- "BuildDate": "1996-01-01 - 00:00:00",
- "Cached": false,
- "FieldReplaceable": true,
- "Functional": true,
- "Manufacturer": "IBM",
- "Model": "",
- "PartNumber": "02CY211",
- "Present": true,
- "PrettyName": "PROCESSOR MODULE",
- "SerialNumber": "YA1934302447",
- "Version": "22"
- },
- "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core0": {
- "Associations": [
- [
- "sensors",
- "inventory",
- "/xyz/openbmc_project/sensors/temperature/p0_core0_temp"
- ]
- ],
- "Functional": true,
- "Present": true,
- "PrettyName": ""
- },
- "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core1": {
- "Associations": [
- [
- "sensors",
- "inventory",
- "/xyz/openbmc_project/sensors/temperature/p0_core1_temp"
- ]
- ],
- "Functional": true,
- "Present": true,
- "PrettyName": ""
- }
+ "data": {
+ "/xyz/openbmc_project/inventory/system": {
+ "AssetTag": "",
+ "BuildDate": "",
+ "Cached": false,
+ "FieldReplaceable": false,
+ "Manufacturer": "",
+ "Model": "8335-GTA ",
+ "PartNumber": "",
+ "Present": true,
+ "PrettyName": "",
+ "SerialNumber": "1234567 "
},
- "message": "200 OK",
- "status": "ok"
+ "/xyz/openbmc_project/inventory/system/chassis": {
+ "AirCooled": true,
+ "Type": "RackMount",
+ "WaterCooled": false
+ },
+ "/xyz/openbmc_project/inventory/system/chassis/activation": {
+ "endpoints": ["/xyz/openbmc_project/software/224cd310"]
+ },
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0": {
+ "BuildDate": "1996-01-01 - 00:00:00",
+ "Cached": false,
+ "FieldReplaceable": true,
+ "Functional": true,
+ "Manufacturer": "IBM",
+ "Model": "",
+ "PartNumber": "02CY211",
+ "Present": true,
+ "PrettyName": "PROCESSOR MODULE",
+ "SerialNumber": "YA1934302447",
+ "Version": "22"
+ },
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core0": {
+ "Associations": [
+ [
+ "sensors",
+ "inventory",
+ "/xyz/openbmc_project/sensors/temperature/p0_core0_temp"
+ ]
+ ],
+ "Functional": true,
+ "Present": true,
+ "PrettyName": ""
+ },
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core1": {
+ "Associations": [
+ [
+ "sensors",
+ "inventory",
+ "/xyz/openbmc_project/sensors/temperature/p0_core1_temp"
+ ]
+ ],
+ "Functional": true,
+ "Present": true,
+ "PrettyName": ""
+ }
+ },
+ "message": "200 OK",
+ "status": "ok"
}
```
Invoke the tool(with everything expected found):
+
+```sh
+expectedJsonChecker.py witherspoon expected.json input.json -f filter.json
```
-> expectedJsonChecker.py witherspoon expected.json input.json -f filter.json
-```
-Invoke the tool(with modified fan1_0 `Functional` property to `False`):
-```
+
+Invoke the tool(with modified `fan1_0` `Functional` property to `False`):
+
+```sh
> expectedJsonChecker.py witherspoon expected.json input.json -f filter.json
NOT FOUND:
/xyz/openbmc_project/sensors/fan_tach/fan1_0: {u'Functional': False}
diff --git a/format-yaml/format-yaml.py b/format-yaml/format-yaml.py
index 2ad8ddc..c9438c0 100644
--- a/format-yaml/format-yaml.py
+++ b/format-yaml/format-yaml.py
@@ -2,15 +2,20 @@
# Copyright 2019 IBM Corp.
-import yaml
from argparse import ArgumentParser
-if __name__ == '__main__':
+import yaml
+
+if __name__ == "__main__":
# A simple program to ensure proper indents of input yaml file
parser = ArgumentParser(description="YAML formatter")
- parser.add_argument('-f', '--file', dest='file_yaml',
- help='yaml file to format')
+ parser.add_argument(
+ "-f", "--file", dest="file_yaml", help="yaml file to format"
+ )
args = parser.parse_args()
- print(yaml.dump(yaml.load(open(args.file_yaml),
- Loader=yaml.FullLoader), indent=4))
+ print(
+ yaml.dump(
+ yaml.load(open(args.file_yaml), Loader=yaml.FullLoader), indent=4
+ )
+ )
diff --git a/ipkdbg/README.md b/ipkdbg/README.md
index b52b00f..9d4e308 100644
--- a/ipkdbg/README.md
+++ b/ipkdbg/README.md
@@ -1,27 +1,27 @@
-## `ipkdbg`: Generate gdb environments from opkg package archives
+# `ipkdbg`: Generate gdb environments from opkg package archives
`ipkdbg` automates the process of generating `gdb` environments for interactive
debugging and coredump analysis of split-debug binaries by exploiting bitbake's
runtime package management support outside the context of the BMC.
-### Use of `ipkdbg`
+## Use of `ipkdbg`
Assuming the presence of the [appropriate integration](#theory-of-integration),
using `ipkdbg` requires minimal fuss.
-```
+```text
SYNOPSIS
- ipkdbg [-q] RELEASE FILE CORE [PACKAGE...]
+ ipkdbg [-q] RELEASE FILE CORE [PACKAGE...]
```
It handles the following use-cases:
-#### Core Dump Analysis
+### Core Dump Analysis
After extracting a core file from the BMC an interactive `gdb` session can be
set up against it with:
-```
+```sh
$ ipkdbg 2.11.0 - my-application.core
...
(gdb)
@@ -37,7 +37,7 @@
Note that for convenience `ipkdbg` automatically runs `bt` in the `gdb` session
once the core has been loaded to provide a backtrace.
-Note that we don't need to specify any packages to install into the rootfs *if*
+Note that we don't need to specify any packages to install into the rootfs _if_
the image package database is available. `ipkdbg` will perform a reverse-lookup
to map the absolute binary path extracted from the core to the package that
installed it. From there `opkg` will resolve all the dependencies. Additionally,
@@ -47,23 +47,23 @@
If an image package database is not available then `ipkdbg` will require that
the necessary packages are listed on the command-line.
-#### Scripted Backtrace Extraction
+### Scripted Backtrace Extraction
For use in scripting environments to automate backtrace extraction `ipkdbg` has
the `-q` option to quit `gdb` immediately after the backtrace is printed. The
invocation looks like:
-```
-$ ipkdbg -q 2.11.0 - my-application.core
+```sh
+ipkdbg -q 2.11.0 - my-application.core
```
-#### Interactive debug
+### Interactive debug
Interactive debugging is handled by attaching `gdbserver` on the BMC to the
running instance of `/usr/bin/my-application` on the BMC. `ipkdbg` is then used
to generate the `gdb` environment:
-```
+```sh
$ ipkdbg 2.11.0 /usr/bin/my-application -
...
(gdb)
@@ -76,7 +76,7 @@
3. `/usr/bin/my-application` is the absolute path of the application to debug
4. `-` is the CORE parameter. `-` specifies that there is no core file
-Note that we don't need to specify any packages to install into the rootfs *if*
+Note that we don't need to specify any packages to install into the rootfs _if_
the image package database is available. `ipkdbg` will perform a reverse-lookup
to map the absolute binary path provided on the command-line to the package that
installed it. From there `opkg` will resolve all the dependencies. Additionally,
@@ -88,11 +88,11 @@
Once the `(gdb)` prompt is reached the usual remote debugging command applies:
-```
+```text
(gdb) target remote $BMC:1234
```
-#### Whoops, I Forgot A Package
+### Whoops, I Forgot A Package
To save exiting the `gdb` session and re-invoking `ipkdbg` to add a package to
the rootfs environment, `ipkdbg` installs an `opkg` helper into the PATH of the
@@ -101,7 +101,7 @@
the shell subprocess to return to your `gdb` prompt with the new package
included in the `gdb` environment.
-### Theory of Maintenance
+## Theory of Maintenance
`ipkdbg` is intended to operate with minimal assumptions about its environment.
The assumptions it does make are:
@@ -130,9 +130,10 @@
release combination is defined by the following directory hierarchy in terms of
[`os-release(5)`][os-release]:
-[os-release]: https://www.man7.org/linux/man-pages/man5/os-release.5.html#OPTIONS
+[os-release]:
+ https://www.man7.org/linux/man-pages/man5/os-release.5.html#OPTIONS
-```
+```sh
$(uname -m)/${ID}/${VERSION_ID}/opkg
```
@@ -141,11 +142,12 @@
To avoid licensing and distribution legal issues openbmc-tools does not provide
pre-built `opkg` binaries. You must build your own and integrate them into the
-hierarchy under `bin/` outlined above. To this end, [the
-`build-opkg` script is provided](build-opkg). It probably won't work without
-tinkering for your target distro, but it might get you 90% of the way there.
+hierarchy under `bin/` outlined above. To this end,
+[the `build-opkg` script is provided](build-opkg). It probably won't work
+without tinkering for your target distro, but it might get you 90% of the way
+there.
-### Maintenance in Practice
+## Maintenance in Practice
Once you have built the required `opkg` binaries and integrated them into the
hierarchy under `bin/` alongside the `Makefile`, run `make` to generate the
@@ -156,7 +158,7 @@
binaries under `bin/` to ensure that the build for your output `ipkdbg` script
is reproducible.
-### Theory of Integration
+## Theory of Integration
For `ipkdbg` to do its job via `opkg` it must be possible for it to acquire an
`opkg.conf` that describes the location of the package archive for your target
@@ -174,21 +176,21 @@
`tmp/deploy/ipk` once `bitbake obmc-phosphor-image && bitbake package-index` has
exited successfully.
-Finally, `ipkdbg` works best when it has access to the image's installed
-package database. This can be captured from the build tree when the build is
-configured with [`INC_IPK_IMAGE_GEN = "1"`][incremental-builds] by archiving
-the directory hierarchy under
-`./tmp/work/*/obmc-phosphor-image/1.0-r0/temp/saved` with the following
-incantation:
+Finally, `ipkdbg` works best when it has access to the image's installed package
+database. This can be captured from the build tree when the build is configured
+with [`INC_IPK_IMAGE_GEN = "1"`][incremental-builds] by archiving the directory
+hierarchy under `./tmp/work/*/obmc-phosphor-image/1.0-r0/temp/saved` with the
+following incantation:
-```
-$ tar -cJf opkg-database.tar.xz \
- -C ./tmp/work/*/obmc-phosphor-image/1.0-r0/temp/saved/target/ \
- info lists status
+```sh
+tar -cJf opkg-database.tar.xz \
+ -C ./tmp/work/*/obmc-phosphor-image/1.0-r0/temp/saved/target/ \
+ info lists status
```
`ipkdbg` assumes that the appropriate `opkg-database.tar.xz` can be fetched
using `wget` and that its URL can be generated in the same manner as that for
`opkg.conf`.
-[incremental-builds]: https://git.openembedded.org/openembedded-core/commit/?id=adf587e55c0f9bc74f0bef415273c937401baebb
+[incremental-builds]:
+ https://git.openembedded.org/openembedded-core/commit/?id=adf587e55c0f9bc74f0bef415273c937401baebb
diff --git a/ipkdbg/build-opkg b/ipkdbg/build-opkg
index 46a6874..d24441e 100755
--- a/ipkdbg/build-opkg
+++ b/ipkdbg/build-opkg
@@ -8,12 +8,12 @@
: ${OPKG_LIBS:="-lz -pthread"}
generate_configure_id() {
- echo "$@" | sha256sum | awk '{ printf "build-opkg-%s", $1 }'
+ echo "$@" | sha256sum | awk '{ printf "build-opkg-%s", $1 }'
}
mark_configured() {
- rm -f build-opkg-*
- touch $1
+ rm -f build-opkg-*
+ touch $1
}
# libarchive
@@ -67,14 +67,14 @@
--disable-dependency-tracking"
OPKG_ID=$(generate_configure_id "$OPKG_OPTS" "$OPKG_LIBS")
[ -f $OPKG_ID ] || ( \
- AR_FLAGS=Tcru \
- PKG_CONFIG_PATH=$(realpath ../libarchive-3.5.2/root/usr/local/lib/pkgconfig/):$(realpath ../curl-7.79.1/root/usr/local/lib/pkgconfig/) \
- CURL_CFLAGS=-I$(realpath ../curl-7.79.1/root/usr/local/include/) \
- CURL_LIBS=$(realpath ../curl-7.79.1/root/usr/local/lib/libcurl.a) \
- LIBARCHIVE_CFLAGS=-I$(realpath ../libarchive-3.5.2/root/usr/local/include/) \
- LIBARCHIVE_LIBS=$(realpath ../libarchive-3.5.2/root/usr/local/lib/libarchive.a) \
- LIBS="$OPKG_LIBS" \
- ./configure $OPKG_OPTS && mark_configured $OPKG_ID \
-)
+ AR_FLAGS=Tcru \
+ PKG_CONFIG_PATH=$(realpath ../libarchive-3.5.2/root/usr/local/lib/pkgconfig/):$(realpath ../curl-7.79.1/root/usr/local/lib/pkgconfig/) \
+ CURL_CFLAGS=-I$(realpath ../curl-7.79.1/root/usr/local/include/) \
+ CURL_LIBS=$(realpath ../curl-7.79.1/root/usr/local/lib/libcurl.a) \
+ LIBARCHIVE_CFLAGS=-I$(realpath ../libarchive-3.5.2/root/usr/local/include/) \
+ LIBARCHIVE_LIBS=$(realpath ../libarchive-3.5.2/root/usr/local/lib/libarchive.a) \
+ LIBS="$OPKG_LIBS" \
+ ./configure $OPKG_OPTS && mark_configured $OPKG_ID \
+ )
make -j$(nproc)
cd ..
diff --git a/netboot/README.md b/netboot/README.md
index 7c172d9..2b07c56 100644
--- a/netboot/README.md
+++ b/netboot/README.md
@@ -1,9 +1,9 @@
-Netboot a remote OpenBMC host via telnet (and hopefully at some stage, ssh).
+# Netboot: a remote OpenBMC host via telnet (and hopefully at some stage, ssh)
To configure, edit `${HOME}/.config/obmc-scripts/netboot` to configure a
machine:
-```
+```toml
[foo]
platform = "bar"
user = "baz"
@@ -23,6 +23,6 @@
Then netboot your machine:
-```
-$ ./netboot foo
+```sh
+./netboot foo
```
diff --git a/openbmc-autobump/openbmc-autobump.py b/openbmc-autobump/openbmc-autobump.py
index 4531b61..ea6e2b8 100755
--- a/openbmc-autobump/openbmc-autobump.py
+++ b/openbmc-autobump/openbmc-autobump.py
@@ -18,55 +18,56 @@
import argparse
import os
-import sh
import sys
-git = sh.git.bake('--no-pager')
+import sh
+
+git = sh.git.bake("--no-pager")
def log(msg, args):
if args.noisy:
- sys.stderr.write('{}\n'.format(msg))
+ sys.stderr.write("{}\n".format(msg))
def git_clone_or_reset(local_name, remote, args):
if not os.path.exists(local_name):
- log('cloning into {}...'.format(local_name), args)
+ log("cloning into {}...".format(local_name), args)
git.clone(remote, local_name)
else:
- log('{} exists, updating...'.format(local_name), args)
+ log("{} exists, updating...".format(local_name), args)
git.fetch(_cwd=local_name)
- git.reset('--hard', 'FETCH_HEAD', _cwd=local_name)
+ git.reset("--hard", "FETCH_HEAD", _cwd=local_name)
def extract_project_from_uris(uris):
# remove SRC_URI = and quotes (does not handle escaped quotes)
uris = uris.split('"')[1]
for uri in uris.split():
- if 'github.com/openbmc' not in uri:
+ if "github.com/openbmc" not in uri:
continue
# remove fetcher arguments
- uri = uri.split(';')[0]
+ uri = uri.split(";")[0]
# the project is the right-most path segment
- return uri.split('/')[-1].replace('.git', '')
+ return uri.split("/")[-1].replace(".git", "")
return None
def extract_sha_from_recipe(recipe):
with open(recipe) as fp:
- uris = ''
+ uris = ""
project = None
sha = None
for line in fp:
line = line.rstrip()
- if 'SRCREV' in line:
- sha = line.split('=')[-1].replace('"', '').strip()
- elif not project and uris or '_URI' in line:
- uris += line.split('\\')[0]
- if '\\' not in line:
+ if "SRCREV" in line:
+ sha = line.split("=")[-1].replace('"', "").strip()
+ elif not project and uris or "_URI" in line:
+ uris += line.split("\\")[0]
+ if "\\" not in line:
# In uris we've gathered a complete (possibly multi-line)
# assignment to a bitbake variable that ends with _URI.
# Try to pull an OpenBMC project out of it.
@@ -74,33 +75,33 @@
if project is None:
# We didn't find a project. Unset uris and look for
# another bitbake variable that ends with _URI.
- uris = ''
+ uris = ""
if project and sha:
return (project, sha)
- raise RuntimeError('No SRCREV or URI found in {}'.format(recipe))
+ raise RuntimeError("No SRCREV or URI found in {}".format(recipe))
def find_candidate_recipes(meta, args):
remote_fmt_args = (args.ssh_config_host, meta)
- remote = 'ssh://{}/openbmc/{}'.format(*remote_fmt_args)
+ remote = "ssh://{}/openbmc/{}".format(*remote_fmt_args)
try:
git_clone_or_reset(meta, remote, args)
except sh.ErrorReturnCode as e:
- log('{}'.format(e), args)
+ log("{}".format(e), args)
return []
- match_suffixes = ('bb', 'bbclass', 'inc')
- pathspecs = ('*.{}'.format(x) for x in match_suffixes)
- grep_args = ('-l', '-e', '_URI', '--and', '-e', 'github.com/openbmc')
+ match_suffixes = ("bb", "bbclass", "inc")
+ pathspecs = ("*.{}".format(x) for x in match_suffixes)
+ grep_args = ("-l", "-e", "_URI", "--and", "-e", "github.com/openbmc")
grep_args = (*grep_args, *pathspecs)
try:
- return git.grep(*grep_args, _cwd=meta).stdout.decode('utf-8').split()
+ return git.grep(*grep_args, _cwd=meta).stdout.decode("utf-8").split()
except sh.ErrorReturnCode_1:
pass
except sh.ErrorReturnCode as e:
- log('{}'.format(e), args)
+ log("{}".format(e), args)
return []
@@ -114,50 +115,50 @@
project_name, recipe_sha = extract_sha_from_recipe(full_recipe_path)
remote_fmt_args = (args.ssh_config_host, project_name)
- remote = 'ssh://{}/openbmc/{}'.format(*remote_fmt_args)
- ls_remote_args = [remote, 'refs/heads/{}'.format(args.branch)]
+ remote = "ssh://{}/openbmc/{}".format(*remote_fmt_args)
+ ls_remote_args = [remote, "refs/heads/{}".format(args.branch)]
try:
- project_sha = git('ls-remote', *ls_remote_args)
- project_sha = project_sha.stdout.decode('utf-8').split()[0]
+ project_sha = git("ls-remote", *ls_remote_args)
+ project_sha = project_sha.stdout.decode("utf-8").split()[0]
except sh.ErrorReturnCode as e:
- log('{}'.format(e), args)
+ log("{}".format(e), args)
continue
if project_sha == recipe_sha:
message_args = (recipe_basename, recipe_sha[:10])
- print('{} is up to date ({})'.format(*message_args))
+ print("{} is up to date ({})".format(*message_args))
continue
- change_id = 'autobump {} {} {}'.format(recipe, recipe_sha, project_sha)
- hash_object_args = ['-t', 'blob', '--stdin']
- change_id = git(sh.echo(change_id), 'hash-object', *hash_object_args)
- change_id = 'I{}'.format(change_id.strip())
+ change_id = "autobump {} {} {}".format(recipe, recipe_sha, project_sha)
+ hash_object_args = ["-t", "blob", "--stdin"]
+ change_id = git(sh.echo(change_id), "hash-object", *hash_object_args)
+ change_id = "I{}".format(change_id.strip())
- query_args = ['query', 'change:{}'.format(change_id)]
+ query_args = ["query", "change:{}".format(change_id)]
gerrit_query_result = args.gerrit(*query_args)
- gerrit_query_result = gerrit_query_result.stdout.decode('utf-8')
+ gerrit_query_result = gerrit_query_result.stdout.decode("utf-8")
- if (change_id in gerrit_query_result):
+ if change_id in gerrit_query_result:
message_args = (recipe_basename, change_id)
- print('{} {} already exists'.format(*message_args))
+ print("{} {} already exists".format(*message_args))
continue
message_args = (recipe_basename, recipe_sha[:10], project_sha[:10])
- print('{} updating from {} to {}'.format(*message_args))
+ print("{} updating from {} to {}".format(*message_args))
remote_args = (args.ssh_config_host, project_name)
- remote = 'ssh://{}/openbmc/{}'.format(*remote_args)
+ remote = "ssh://{}/openbmc/{}".format(*remote_args)
git_clone_or_reset(project_name, remote, args)
try:
- revlist = '{}..{}'.format(recipe_sha, project_sha)
+ revlist = "{}..{}".format(recipe_sha, project_sha)
shortlog = git.shortlog(revlist, _cwd=project_name)
- shortlog = shortlog.stdout.decode('utf-8')
+ shortlog = shortlog.stdout.decode("utf-8")
except sh.ErrorReturnCode as e:
- log('{}'.format(e), args)
+ log("{}".format(e), args)
continue
- reset_args = ['--hard', 'origin/{}'.format(args.branch)]
+ reset_args = ["--hard", "origin/{}".format(args.branch)]
git.reset(*reset_args, _cwd=meta)
recipe_content = None
@@ -165,28 +166,28 @@
recipe_content = fd.read()
recipe_content = recipe_content.replace(recipe_sha, project_sha)
- with open(full_recipe_path, 'w') as fd:
+ with open(full_recipe_path, "w") as fd:
fd.write(recipe_content)
git.add(recipe, _cwd=meta)
commit_summary_args = (project_name, recipe_sha[:10], project_sha[:10])
- commit_msg = '{}: srcrev bump {}..{}'.format(*commit_summary_args)
- commit_msg += '\n\n{}'.format(shortlog)
- commit_msg += '\n\nChange-Id: {}'.format(change_id)
+ commit_msg = "{}: srcrev bump {}..{}".format(*commit_summary_args)
+ commit_msg += "\n\n{}".format(shortlog)
+ commit_msg += "\n\nChange-Id: {}".format(change_id)
- git.commit(sh.echo(commit_msg), '-s', '-F', '-', _cwd=meta)
+ git.commit(sh.echo(commit_msg), "-s", "-F", "-", _cwd=meta)
push_args = [
- 'origin',
- 'HEAD:refs/for/{}%topic=autobump'.format(args.branch)
+ "origin",
+ "HEAD:refs/for/{}%topic=autobump".format(args.branch),
]
if not args.dry_run:
git.push(*push_args, _cwd=meta)
def main():
- app_description = '''OpenBMC bitbake recipe bumping tool.
+ app_description = """OpenBMC bitbake recipe bumping tool.
Find bitbake metadata files (recipes) that use the git fetcher
and check the project repository for newer revisions.
@@ -194,37 +195,52 @@
Generate commits that update bitbake metadata files with SRCREV.
Push generated commits to the OpenBMC Gerrit instance for review.
- '''
+ """
parser = argparse.ArgumentParser(
description=app_description,
- formatter_class=argparse.RawDescriptionHelpFormatter)
+ formatter_class=argparse.RawDescriptionHelpFormatter,
+ )
- parser.set_defaults(branch='master')
+ parser.set_defaults(branch="master")
parser.add_argument(
- '-d', '--dry-run', dest='dry_run', action='store_true',
- help='perform a dry run only')
+ "-d",
+ "--dry-run",
+ dest="dry_run",
+ action="store_true",
+ help="perform a dry run only",
+ )
parser.add_argument(
- '-m', '--meta-repository', dest='meta_repository', action='append',
- help='meta repository to check for updates')
+ "-m",
+ "--meta-repository",
+ dest="meta_repository",
+ action="append",
+ help="meta repository to check for updates",
+ )
parser.add_argument(
- '-v', '--verbose', dest='noisy', action='store_true',
- help='enable verbose status messages')
+ "-v",
+ "--verbose",
+ dest="noisy",
+ action="store_true",
+ help="enable verbose status messages",
+ )
parser.add_argument(
- 'ssh_config_host', metavar='SSH_CONFIG_HOST_ENTRY',
- help='SSH config host entry for Gerrit connectivity')
+ "ssh_config_host",
+ metavar="SSH_CONFIG_HOST_ENTRY",
+ help="SSH config host entry for Gerrit connectivity",
+ )
args = parser.parse_args()
- setattr(args, 'gerrit', sh.ssh.bake(args.ssh_config_host, 'gerrit'))
+ setattr(args, "gerrit", sh.ssh.bake(args.ssh_config_host, "gerrit"))
- metas = getattr(args, 'meta_repository')
+ metas = getattr(args, "meta_repository")
if metas is None:
- metas = args.gerrit('ls-projects', '-m', 'meta-')
- metas = metas.stdout.decode('utf-8').split()
+ metas = args.gerrit("ls-projects", "-m", "meta-")
+ metas = metas.stdout.decode("utf-8").split()
metas = [os.path.split(x)[-1] for x in metas]
for meta in metas:
find_and_process_bumps(meta, args)
-if __name__ == '__main__':
+if __name__ == "__main__":
sys.exit(0 if main() else 1)
diff --git a/openbmctool/README.md b/openbmctool/README.md
index 9f68e3b..6abcbe7 100644
--- a/openbmctool/README.md
+++ b/openbmctool/README.md
@@ -4,78 +4,83 @@
## Connecting to a system
-An IP address or hostname, password, and username are required for
-connecting to a BMC.
+An IP address or hostname, password, and username are required for connecting to
+a BMC.
These are passed in with the following options:
+
- `-H`: The hostname or IP for the BMC
-- `-U`: The username
-One of the password options:
+- `-U`: The username One of the password options:
- `-P`: The password, provided in-line
- `-A`: Prompt for a password
-- `-E`: Take the password from envvar OPENBMCTOOL_PASSWORD
+- `-E`: Take the password from envvar `OPENBMCTOOL_PASSWORD`
## Enabling and Disabling Local BMC User Accounts
-The local user accounts on the BMC, such as root, can be disabled, queried,
-and re-enabled with the 'local_users' sub-command.
+The local user accounts on the BMC, such as root, can be disabled, queried, and
+re-enabled with the `local_users` sub-command.
-Important: After disabling local users, an LDAP user will need to be used
-for further interaction with the BMC, including if using openbmctool to
-enable local users again.
+Important: After disabling local users, an LDAP user will need to be used for
+further interaction with the BMC, including if using openbmctool to enable local
+users again.
To view current local user account status:
-```
+
+```sh
openbmctool <connection options> local_users queryenabled
```
To disable all local user accounts:
-```
+
+```sh
openbmctool <connection options> local_users disableall
```
To re-enable all local user accounts:
-```
+
+```sh
openbmctool <connection options> local_users enableall
```
## Remote logging via rsyslog
-The BMC has the ability to stream out local logs (that go to the systemd journal)
-via [rsyslog](https://www.rsyslog.com/).
+The BMC has the ability to stream out local logs (that go to the systemd
+journal) via [rsyslog](https://www.rsyslog.com/).
The BMC will send everything. Any kind of filtering and appropriate storage will
have to be managed on the rsyslog server. Various examples are available on the
internet. Here are few pointers:
-https://www.rsyslog.com/storing-and-forwarding-remote-messages/
-https://www.rsyslog.com/doc/rsyslog%255Fconf%255Ffilter.html
-https://www.thegeekdiary.com/understanding-rsyslog-filter-options/
+
+- <https://www.rsyslog.com/storing-and-forwarding-remote-messages/>
+- <https://www.rsyslog.com/doc/rsyslog%255Fconf%255Ffilter.html>
+- <https://www.thegeekdiary.com/understanding-rsyslog-filter-options/>
### Configuring rsyslog server for remote logging
-```
+```sh
openbmctool <connection options> logging remote_logging_config -a <IP address> -p <port>
```
-The IP address and port to be provided are of the remote rsyslog server.
-Once this command is run, the remote rsyslog server will start receiving logs
-from the BMC.
+The IP address and port to be provided are of the remote rsyslog server. Once
+this command is run, the remote rsyslog server will start receiving logs from
+the BMC.
-Hostname can be specified instead of IP address, if DNS is configured on the BMC.
+Hostname can be specified instead of IP address, if DNS is configured on the
+BMC.
### Disabling remote logging
-```
+```sh
openbmctool <connection options> logging remote_logging disable
```
It is recommended to disable remote logging before switching remote logging from
-an existing remote server to a new one (i.e before re-running the remote_logging_config
-option).
+an existing remote server to a new one (i.e before re-running the
+`remote_logging_config` option).
### Querying remote logging config
-```
+```sh
openbmctool <connection options> logging remote_logging view
```
@@ -84,63 +89,75 @@
## BMC Certificate management
-Certificate management allows replacing the existing certificate and private
-key file with another (possibly certification Authority (CA) signed)
-certificate and private key file. Certificate management allows the user to
-install server, client and root certificates.
+Certificate management allows replacing the existing certificate and private key
+file with another (possibly certification Authority (CA) signed) certificate and
+private key file. Certificate management allows the user to install server,
+client and root certificates.
### Update HTTPS server certificate
-```
+
+```sh
openbmctool <connection options> certificate update server https -f <File>
```
+
File: The [PEM](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) file
- containing both certificate and private key.
+containing both certificate and private key.
### Update LDAP client certificate
-```
+
+```sh
openbmctool <connection options> certificate update client ldap -f <File>
```
+
File: The PEM file containing both certificate and private key.
### Update LDAP root certificate
-```
+
+```sh
openbmctool <connection options> certificate update authority ldap -f <File>
```
+
File: The PEM file containing only certificate.
-
### Delete HTTPS server certificate
-```
+
+```sh
openbmctool <connection options> certificate delete server https
```
+
Deleting a certificate will create a new self-signed certificate and will
install the same.
### Delete LDAP client certificate
-```
+
+```sh
openbmctool <connection options> certificate delete client ldap
```
### Delete LDAP root certificate
-```
+
+```sh
openbmctool <connection options> certificate delete authority ldap
```
+
Deleting the root certificate can cause an LDAP service outage. Please refer to
the LDAP documentation before using this command.
## BMC LDAP Configuration
-In BMC, LDAP is used for remote authentication. BMC doesn't support remote user-management functionality.
+In BMC, LDAP is used for remote authentication. BMC doesn't support remote
+user-management functionality.
BMC supports secure/non-secure LDAP configuration.
### Create LDAP Configuration
#### NonSecure
-```
-openbmctool.py <connection options> ldap enable --uri="ldap://<ldap server IP/hostname>" --bindDN=<bindDN> --baseDN=<basDN> --bindPassword=<bindPassword> --scope="sub/one/base" --serverType="OpenLDAP/ActiveDirectory"
+```sh
+openbmctool.py <connection options> ldap enable --uri="ldap://<ldap server IP/hostname>" --bindDN=<bindDN> --baseDN=<basDN> --bindPassword=<bindPassword> --scope="sub/one/base" --serverType="OpenLDAP/ActiveDirectory"
```
+
NOTE: configuring FQDN (fully qualified domain name/ hostname) in the "uri"
parameter requires that DNS server be configured on the BMC.
@@ -148,15 +165,15 @@
BMC.
#### Secure
-```
-openbmctool.py <connection options> ldap enable --uri="ldaps://<ldap server IP/hostname>" --bindDN=<bindDN> --baseDN=<basDN> --bindPassword=<bindPassword> --scope="sub/one/base" --serverType="OpenLDAP/ActiveDirectory"
+```sh
+openbmctool.py <connection options> ldap enable --uri="ldaps://<ldap server IP/hostname>" --bindDN=<bindDN> --baseDN=<basDN> --bindPassword=<bindPassword> --scope="sub/one/base" --serverType="OpenLDAP/ActiveDirectory"
```
-NOTE:
-a) It is quite common to encounter the following error when running the
+
+NOTE: a) It is quite common to encounter the following error when running the
openbmctool.py command string shown above:
-xyz.openbmc_project.Common.Error.NoCACertificate
+`xyz.openbmc_project.Common.Error.NoCACertificate`
This error means that the BMC client needs to verify that the LDAP server's
certificate has been signed by a known CA. The service action would be for the
@@ -165,47 +182,46 @@
To upload the CA certificate to the BMC, refer to the "Update LDAP root
certificate" section of this document.
-b) openbmctool doesn't support individual LDAP config property update,
- To update a single property user need to recreate the LDAP config with the
- changed values.
+b) openbmctool doesn't support individual LDAP config property update, To update
+a single property user need to recreate the LDAP config with the changed values.
### Delete/Erase LDAP Configuration
-```
-openbmctool.py <connection options> ldap disable
+```sh
+openbmctool.py <connection options> ldap disable
```
+
NOTE: Make sure that root user is enabled before running the above command
otherwise BMC would not be accessible.
-To enable root user, refer to the "To re-enable all local user accounts"
-section of this document.
+To enable root user, refer to the "To re-enable all local user accounts" section
+of this document.
Currently openbmctool doesn't have support for specific user enablement.
### Add privilege mapping
-```
+```sh
openbmctool.py <connection options> ldap privilege-mapper create --groupName=<groupName> --privilege="priv-admin/priv-user"
```
### Delete privilege mapping
-```
+```sh
openbmctool.py <connection options> ldap privilege-mapper delete --groupName=<groupName>
```
### List privilege mapping
-```
+```sh
openbmctool.py <connection options> ldap privilege-mapper list
```
The normal workflow for LDAP configuration would be as shown below
- Configure the DNS server.
-- Configure LDAP.
- a) Configure CA certificate if secure LDAP server is being configured.
- b) Create LDAP Configuration with local user.
+- Configure LDAP. a) Configure CA certificate if secure LDAP server is being
+ configured. b) Create LDAP Configuration with local user.
- Configure user privilege.
NOTE:
@@ -218,13 +234,11 @@
Action: Add the privilege (refer to the section "Add privilege mapping")
-
-b) The following message may mean that the user lacks the required privileges
-on the BMC:
-"Insufficient Privilege"
+b) The following message may mean that the user lacks the required privileges on
+the BMC: "Insufficient Privilege"
Action: Add the privilege (refer to the section "Add privilege mapping") with
privilege=priv-admin
-c) Once LDAP is set up, openbmctool connection options work with both LDAP
-and local users.
+c) Once LDAP is set up, openbmctool connection options work with both LDAP and
+local users.
diff --git a/overlay/overlay b/overlay/overlay
index e708f41..aa72b9e 100755
--- a/overlay/overlay
+++ b/overlay/overlay
@@ -32,15 +32,15 @@
exit 1
else
echo "${o_options}" |
- fstab_option_iter |
- while read FS_MNTOPT
- do
- case $FS_MNTOPT in
- upperdir=*|workdir=*)
- rm -rf "$(echo $FS_MNTOPT | fstab_option_value)"
- ;;
- esac
- done
+ fstab_option_iter |
+ while read FS_MNTOPT
+ do
+ case $FS_MNTOPT in
+ upperdir=*|workdir=*)
+ rm -rf "$(echo $FS_MNTOPT | fstab_option_value)"
+ ;;
+ esac
+ done
fi
}
diff --git a/prepare-emmc-qemu/prepare-emmc-qemu b/prepare-emmc-qemu/prepare-emmc-qemu
index fd2b14f..8859847 100755
--- a/prepare-emmc-qemu/prepare-emmc-qemu
+++ b/prepare-emmc-qemu/prepare-emmc-qemu
@@ -2,7 +2,7 @@
set -eu
-print_help() {
+function print_help() {
script_name=$(basename $0)
echo NAME
echo '\t'$script_name: Assemble an OpenBMC eMMC image that can be booted under QEMU
@@ -19,7 +19,7 @@
echo '\t'$script_name 'p10bmc' '~/src/openbmc/openbmc/build/p10bmc'
}
-detect_xzdec() {
+function detect_xzdec() {
if command -v xz >/dev/null
then
echo xz -dc
diff --git a/sensor_yaml_config/README.md b/sensor_yaml_config/README.md
index 161a29f..e740826 100644
--- a/sensor_yaml_config/README.md
+++ b/sensor_yaml_config/README.md
@@ -1,30 +1,41 @@
# openbmc-utils
-* `upload_and_update.py`
-A tool to upload a tarball to TFTP server and update BMC with it.
-**Note**: It uses legacy methods to update BMC so it may break in future when the code update is refactored.
+- `upload_and_update.py` A tool to upload a tarball to TFTP server and update
+ BMC with it. **Note**: It uses legacy methods to update BMC so it may break in
+ future when the code update is refactored.
-* `sensor_yaml_config.py`
-A tool to help write IPMI sensor yaml config.
-**Note**: This script requires python3.6 or above.
+- `sensor_yaml_config.py` A tool to help write IPMI sensor yaml config.
+ **Note**: This script requires python3.6 or above.
- * To sort the yaml config:
- ```
- sensor_yaml_config.py -i <input.yaml> -o <output.yaml>
- ```
- * To add the missing enityID, entityInstance, and sensorNamePattern:
- ```
- sensor_yaml_config.py -i <input.yaml> -o <output.yaml> -f
- ```
- * To add missing core/dimm temperature sensors based on RPT (generated by OpenPOWER op-build):
- ```
- sensor_yaml_config.py -i <input.yaml> -o <output.yaml> -f -r <machine.rpt>
- ```
- * To generate a sensor map from example yaml config, which could be used for future:
- ```
- sensor_yaml_config.py -i <sample.yaml> -o <sensor_map.yaml> -g
- ```
- * To generate a DCMI sensor json config, which is used by phosphor-ipmi-config:
- ```
- sensor_yaml_config.py -i <input.yaml> -o <output.json> -d
- ```
+ - To sort the yaml config:
+
+ ```sh
+ sensor_yaml_config.py -i <input.yaml> -o <output.yaml>
+ ```
+
+ - To add the missing enityID, entityInstance, and sensorNamePattern:
+
+ ```sh
+ sensor_yaml_config.py -i <input.yaml> -o <output.yaml> -f
+ ```
+
+ - To add missing core/dimm temperature sensors based on RPT (generated by
+ OpenPOWER op-build):
+
+ ```sh
+ sensor_yaml_config.py -i <input.yaml> -o <output.yaml> -f -r <machine.rpt>
+ ```
+
+ - To generate a sensor map from example yaml config, which could be used for
+ future:
+
+ ```sh
+ sensor_yaml_config.py -i <sample.yaml> -o <sensor_map.yaml> -g
+ ```
+
+ - To generate a DCMI sensor json config, which is used by
+ phosphor-ipmi-config:
+
+ ```sh
+ sensor_yaml_config.py -i <input.yaml> -o <output.json> -d
+ ```
diff --git a/sensor_yaml_config/sensor_map.yaml b/sensor_yaml_config/sensor_map.yaml
index 4af0405..e522c97 100644
--- a/sensor_yaml_config/sensor_map.yaml
+++ b/sensor_yaml_config/sensor_map.yaml
@@ -1,750 +1,969 @@
? !!python/tuple
-- /org/open_power/control/occ0
-- !!python/tuple [org.open_power.OCC.Status]
-: {entityID: 210, sensorNamePattern: nameLeaf}
+ - /org/open_power/control/occ0
+ - !!python/tuple [org.open_power.OCC.Status]
+: { entityID: 210, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /org/open_power/control/occ1
-- !!python/tuple [org.open_power.OCC.Status]
-: {entityID: 210, sensorNamePattern: nameLeaf}
+ - /org/open_power/control/occ1
+ - !!python/tuple [org.open_power.OCC.Status]
+: { entityID: 210, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /org/open_power/control/volatile
-- !!python/tuple [xyz.openbmc_project.Object.Enable]
-: {entityID: 33, sensorNamePattern: nameLeaf}
+ - /org/open_power/control/volatile
+ - !!python/tuple [xyz.openbmc_project.Object.Enable]
+: { entityID: 33, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 3, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/cpu
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 3, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 3, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/cpu0
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 3, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core0
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core0
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core1
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core1
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core10
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core10
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core11
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core11
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core12
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core12
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core13
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core13
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core14
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core14
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core15
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core15
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core16
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core16
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core17
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core17
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core18
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core18
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core19
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core19
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core2
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core2
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core20
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core20
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core21
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core21
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core22
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core22
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core23
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core23
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core3
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core3
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core4
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core4
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core5
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core5
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core6
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core6
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core7
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core7
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core8
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core8
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu0/core9
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu0/core9
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 3, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/cpu1
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 3, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core0
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core0
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core1
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core1
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core10
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core10
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core11
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core11
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core12
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core12
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core13
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core13
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core14
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core14
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core15
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core15
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core16
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core16
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core17
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core17
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core18
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core18
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core19
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core19
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core2
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core2
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core20
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core20
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core21
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core21
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core22
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core22
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core23
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core23
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core3
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core3
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core4
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core4
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core5
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core5
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core6
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core6
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core7
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core7
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core8
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core8
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/cpu1/core9
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 208, sensorNamePattern: nameParentLeaf}
+ - /system/chassis/motherboard/cpu1/core9
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 208, sensorNamePattern: nameParentLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm0
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm0
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm1
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm1
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm10
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm10
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm11
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm11
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm12
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm12
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm13
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm13
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm14
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm14
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm15
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm15
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm2
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm2
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm3
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm3
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm4
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm4
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm5
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm5
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm6
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm6
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm7
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm7
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm8
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm8
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/dimm9
-- !!python/tuple [xyz.openbmc_project.Inventory.Item, xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/dimm9
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/gv100card0
-- !!python/tuple [xyz.openbmc_project.Inventory.Decorator.Replaceable, xyz.openbmc_project.Inventory.Item,
- xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 216, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/gv100card0
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Decorator.Replaceable,
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 216, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/gv100card1
-- !!python/tuple [xyz.openbmc_project.Inventory.Decorator.Replaceable, xyz.openbmc_project.Inventory.Item,
- xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 216, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/gv100card1
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Decorator.Replaceable,
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 216, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/gv100card2
-- !!python/tuple [xyz.openbmc_project.Inventory.Decorator.Replaceable, xyz.openbmc_project.Inventory.Item,
- xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 216, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/gv100card2
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Decorator.Replaceable,
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 216, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/gv100card3
-- !!python/tuple [xyz.openbmc_project.Inventory.Decorator.Replaceable, xyz.openbmc_project.Inventory.Item,
- xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 216, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/gv100card3
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Decorator.Replaceable,
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 216, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/gv100card4
-- !!python/tuple [xyz.openbmc_project.Inventory.Decorator.Replaceable, xyz.openbmc_project.Inventory.Item,
- xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 216, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/gv100card4
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Decorator.Replaceable,
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 216, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /system/chassis/motherboard/gv100card5
-- !!python/tuple [xyz.openbmc_project.Inventory.Decorator.Replaceable, xyz.openbmc_project.Inventory.Item,
- xyz.openbmc_project.State.Decorator.OperationalStatus]
-: {entityID: 216, sensorNamePattern: nameLeaf}
+ - /system/chassis/motherboard/gv100card5
+ - !!python/tuple [
+ xyz.openbmc_project.Inventory.Decorator.Replaceable,
+ xyz.openbmc_project.Inventory.Item,
+ xyz.openbmc_project.State.Decorator.OperationalStatus,
+ ]
+: { entityID: 216, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/control/host0/TPMEnable
-- !!python/tuple [xyz.openbmc_project.Control.TPM.Policy]
-: {entityID: 3, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/control/host0/TPMEnable
+ - !!python/tuple [xyz.openbmc_project.Control.TPM.Policy]
+: { entityID: 3, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/control/host0/auto_reboot
-- !!python/tuple [xyz.openbmc_project.Control.Boot.RebootPolicy]
-: {entityID: 33, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/control/host0/auto_reboot
+ - !!python/tuple [xyz.openbmc_project.Control.Boot.RebootPolicy]
+: { entityID: 33, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/control/host0/turbo_allowed
-- !!python/tuple [xyz.openbmc_project.Control.Host.TurboAllowed]
-: {entityID: 3, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/control/host0/turbo_allowed
+ - !!python/tuple [xyz.openbmc_project.Control.Host.TurboAllowed]
+: { entityID: 3, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/current/ps0_output_current
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/current/ps0_output_current
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/current/ps1_output_current
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/current/ps1_output_current
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/fan_tach/fan0_0
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 29, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/fan_tach/fan0_0
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 29, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/fan_tach/fan0_1
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 29, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/fan_tach/fan0_1
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 29, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/fan_tach/fan1_0
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 29, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/fan_tach/fan1_0
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 29, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/fan_tach/fan1_1
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 29, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/fan_tach/fan1_1
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 29, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/fan_tach/fan2_0
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 29, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/fan_tach/fan2_0
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 29, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/fan_tach/fan2_1
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 29, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/fan_tach/fan2_1
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 29, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/fan_tach/fan3_0
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 29, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/fan_tach/fan3_0
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 29, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/fan_tach/fan3_1
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 29, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/fan_tach/fan3_1
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 29, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/power/fan_disk_power
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/power/fan_disk_power
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/power/p0_io_power
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/power/p0_io_power
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/power/p0_mem_power
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/power/p0_mem_power
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/power/p0_power
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/power/p0_power
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/power/p1_io_power
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/power/p1_io_power
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/power/p1_mem_power
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/power/p1_mem_power
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/power/p1_power
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/power/p1_power
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/power/ps0_input_power
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/power/ps0_input_power
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/power/ps1_input_power
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/power/ps1_input_power
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/power/total_power
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/power/total_power
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/ambient
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 64, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/ambient
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 64, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm0_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm0_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm10_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm10_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm11_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm11_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm12_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm12_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm13_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm13_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm14_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm14_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm15_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm15_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm1_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm1_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm2_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm2_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm3_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm3_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm4_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm4_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm5_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm5_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm6_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm6_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm7_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm7_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm8_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm8_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/dimm9_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 32, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/dimm9_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 32, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/gpu0_core_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 216, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/gpu0_core_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 216, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/gpu0_mem_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 217, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/gpu0_mem_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 217, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/gpu1_core_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 216, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/gpu1_core_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 216, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/gpu1_mem_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 217, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/gpu1_mem_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 217, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/gpu2_core_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 216, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/gpu2_core_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 216, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/gpu2_mem_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 217, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/gpu2_mem_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 217, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/gpu3_core_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 216, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/gpu3_core_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 216, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/gpu3_mem_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 217, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/gpu3_mem_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 217, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/gpu4_core_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 216, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/gpu4_core_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 216, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/gpu4_mem_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 217, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/gpu4_mem_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 217, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/gpu5_core_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 216, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/gpu5_core_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 216, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/gpu5_mem_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 217, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/gpu5_mem_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 217, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core0_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core0_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core10_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core10_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core11_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core11_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core12_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core12_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core13_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core13_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core14_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core14_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core15_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core15_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core16_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core16_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core17_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core17_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core18_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core18_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core19_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core19_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core1_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core1_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core20_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core20_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core21_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core21_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core22_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core22_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core23_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core23_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core2_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core2_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core3_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core3_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core4_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core4_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core5_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core5_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core6_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core6_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core7_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core7_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core8_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core8_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_core9_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_core9_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p0_vdd_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 218, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p0_vdd_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 218, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core0_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core0_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core10_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core10_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core11_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core11_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core12_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core12_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core13_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core13_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core14_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core14_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core15_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core15_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core16_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core16_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core17_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core17_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core18_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core18_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core19_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core19_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core1_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core1_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core20_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core20_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core21_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core21_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core22_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core22_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core23_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core23_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core2_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core2_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core3_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core3_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core4_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core4_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core5_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core5_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core6_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core6_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core7_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core7_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core8_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core8_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_core9_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 208, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_core9_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 208, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/p1_vdd_temp
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 218, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/p1_vdd_temp
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 218, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/temperature/pcie
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 35, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/temperature/pcie
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 35, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/voltage/ps0_input_voltage
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/voltage/ps0_input_voltage
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/voltage/ps0_output_voltage
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/voltage/ps0_output_voltage
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/voltage/ps1_input_voltage
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/voltage/ps1_input_voltage
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/sensors/voltage/ps1_output_voltage
-- !!python/tuple [xyz.openbmc_project.Sensor.Value]
-: {entityID: 10, sensorNamePattern: nameLeaf}
+ - /xyz/openbmc_project/sensors/voltage/ps1_output_voltage
+ - !!python/tuple [xyz.openbmc_project.Sensor.Value]
+: { entityID: 10, sensorNamePattern: nameLeaf }
? !!python/tuple
-- /xyz/openbmc_project/state/host0
-- !!python/tuple [xyz.openbmc_project.Control.Boot.RebootAttempts]
-: {entityID: 34, sensorNamePattern: nameProperty}
+ - /xyz/openbmc_project/state/host0
+ - !!python/tuple [xyz.openbmc_project.Control.Boot.RebootAttempts]
+: { entityID: 34, sensorNamePattern: nameProperty }
? !!python/tuple
-- /xyz/openbmc_project/state/host0
-- !!python/tuple [xyz.openbmc_project.State.Boot.Progress]
-: {entityID: 34, sensorNamePattern: nameProperty}
+ - /xyz/openbmc_project/state/host0
+ - !!python/tuple [xyz.openbmc_project.State.Boot.Progress]
+: { entityID: 34, sensorNamePattern: nameProperty }
? !!python/tuple
-- /xyz/openbmc_project/state/host0
-- !!python/tuple [xyz.openbmc_project.State.OperatingSystem.Status]
-: {entityID: 35, sensorNamePattern: nameProperty}
+ - /xyz/openbmc_project/state/host0
+ - !!python/tuple [xyz.openbmc_project.State.OperatingSystem.Status]
+: { entityID: 35, sensorNamePattern: nameProperty }
diff --git a/tof-voters/README.md b/tof-voters/README.md
index 10cd873..1d733cc 100644
--- a/tof-voters/README.md
+++ b/tof-voters/README.md
@@ -1,11 +1,15 @@
+# tof-voters
+
This tool is used for determining who is qualified for voting in a TOF election,
-based on the [requirements](https://github.com/openbmc/docs/blob/master/tof/membership-and-voting.md#metrics)
+based on the
+[requirements](https://github.com/openbmc/docs/blob/master/tof/membership-and-voting.md#metrics)
set out by the TOF.
The tool will query Gerrit for commits and reviews, process them, and generate a
report of qualified individuals.
The typical use of the tool is something like this:
+
```sh
./voters dump-gerrit --after=2021-06-30
./voters analyze-commits --before "2022-01-01" --after "2021-06-30"
@@ -17,6 +21,7 @@
The above will yield a JSON dictionary of "users:points" where 'qualified' is
set in the users' dictionary from `report.json` like:
+
```json
{
"user1": 16,
diff --git a/tof-voters/libvoters/subcmd/analyze-reviews.py b/tof-voters/libvoters/subcmd/analyze-reviews.py
index b3323fa..d5ccade 100644
--- a/tof-voters/libvoters/subcmd/analyze-reviews.py
+++ b/tof-voters/libvoters/subcmd/analyze-reviews.py
@@ -78,7 +78,7 @@
comments_per_user[reviewer] += 1
print(project, id_number)
- for (user, count) in comments_per_user.items():
+ for user, count in comments_per_user.items():
if count < 3:
continue
print(" ", user, count)
diff --git a/tof-voters/libvoters/subcmd/dump-gerrit.py b/tof-voters/libvoters/subcmd/dump-gerrit.py
index 455f0e6..a934523 100644
--- a/tof-voters/libvoters/subcmd/dump-gerrit.py
+++ b/tof-voters/libvoters/subcmd/dump-gerrit.py
@@ -3,6 +3,7 @@
import argparse
import json
import os
+
from sh import ssh # type: ignore
diff --git a/tof-voters/libvoters/time.py b/tof-voters/libvoters/time.py
index efcee29..6139fd5 100644
--- a/tof-voters/libvoters/time.py
+++ b/tof-voters/libvoters/time.py
@@ -1,6 +1,6 @@
#!/usr/bin/python3
-from enum import Enum
from datetime import datetime, timezone
+from enum import Enum
class TimeOfDay(Enum):
diff --git a/tracing/README.md b/tracing/README.md
index 5ee628f..a125b52 100644
--- a/tracing/README.md
+++ b/tracing/README.md
@@ -1,27 +1,25 @@
-Description
-===========
+# trace
-The trace script automates the process of enabling named sets of tracepoints
-and dumping the trace file over the SSH connection, then cleaning up after
-itself.
+## Description
-Usage
-=====
+The trace script automates the process of enabling named sets of tracepoints and
+dumping the trace file over the SSH connection, then cleaning up after itself.
+
+## Usage
To run:
-```
+```text
Usage: ./trace [USER@]HOST EVENTSET [EVENTSET...]
Valid EVENTSETs: fsi, occ, sbefifo, timer, sched
-
```
To stop the trace output and disable the tracepoints, hit `Return`.
For example, capturing the defined tracepoints for the `sched` event set:
-```
+```sh
$ ./trace root@my-bmc sched
+ set -eou pipefail
+ set -x
diff --git a/tracing/trace b/tracing/trace
index 89840e1..db1b74f 100755
--- a/tracing/trace
+++ b/tracing/trace
@@ -7,10 +7,10 @@
if [ $# -lt 2 ]
then
- echo Usage: $0 [USER@]HOST EVENTSET [EVENTSET...]
- echo
- echo Valid EVENTSETs: fsi, occ, sbefifo, timer, sched
- exit 1
+ echo Usage: $0 [USER@]HOST EVENTSET [EVENTSET...]
+ echo
+ echo Valid EVENTSETs: fsi, occ, sbefifo, timer, sched
+ exit 1
fi
TRACE_TARGET="$1"
@@ -20,8 +20,8 @@
TRACESCRIPT_PATH="$(mktemp obmc-fsi-trace.XXXXXX)"
TRACESCRIPT="$(basename "${TRACESCRIPT_PATH}")"
-on_exit() {
- rm -f "${TRACESCRIPT_PATH}"
+function on_exit() {
+ rm -f "${TRACESCRIPT_PATH}"
}
trap on_exit EXIT
diff --git a/witherspoon-debug/README.md b/witherspoon-debug/README.md
index 3840aba..1e8d977 100644
--- a/witherspoon-debug/README.md
+++ b/witherspoon-debug/README.md
@@ -1,30 +1,28 @@
-Description
-===========
+# Description
-The OpenBMC debugtools tarball clashes with the filesystem layout of
-witherspoon systems, and contains a number of other outstanding issues with
-respect to the tools it deploys. The debug script here documents and executes
-the workarounds necessary to make it functional.
+The OpenBMC debugtools tarball clashes with the filesystem layout of witherspoon
+systems, and contains a number of other outstanding issues with respect to the
+tools it deploys. The debug script here documents and executes the workarounds
+necessary to make it functional.
-Usage
------
-```
+## Usage
+
+```sh
./debug [USER@]HOST TARBALL
```
For example:
-```
-$ ./debug root@my-witherspoon obmc-phosphor-debug-tarball-witherspoon.tar.xz
+```sh
+./debug root@my-witherspoon obmc-phosphor-debug-tarball-witherspoon.tar.xz
```
-Notes
------
+## Notes
The script will:
-1. Ensure `/usr/local` is a tmpfs mountpoint (may not be if system is
- configured for Field Mode)
+1. Ensure `/usr/local` is a tmpfs mountpoint (may not be if system is configured
+ for Field Mode)
2. Deploy the debugtools tarball to `/usr/local`
3. Make `perf(1)` work by
1. Installing a fake `expand(1)` if necessary
diff --git a/witherspoon-debug/debug b/witherspoon-debug/debug
index 42c7581..cfdf0b2 100755
--- a/witherspoon-debug/debug
+++ b/witherspoon-debug/debug
@@ -7,8 +7,8 @@
if [ $# -lt 2 ]
then
- echo Usage: $0 [user@][host] [tarball]
- exit 1
+ echo Usage: $0 [user@][host] [tarball]
+ exit 1
fi
TARGET="$1"