sensor_yaml_config.py: Generate map from sample config

Generate a map from sensor path/interfaces to enityID and
sensorNamePattern.

Save the map as reference for further usage.

The map is generated from witherspoon's yaml:

 sensor_yaml_config.py -i witherspoon.yaml -o sensor_map.yaml -g

Change-Id: I493c1c60a4699edd03512f3a51c07dd035a69e89
Signed-off-by: Lei YU <mine260309@gmail.com>
diff --git a/leiyu/obmc-utils/README.md b/leiyu/obmc-utils/README.md
index 8136028..db19c5d 100644
--- a/leiyu/obmc-utils/README.md
+++ b/leiyu/obmc-utils/README.md
@@ -20,3 +20,7 @@
    ```
    sensor_yaml_config.py -i <input.yaml> -o <output.yaml> -e -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
+   ```
diff --git a/leiyu/obmc-utils/sensor_map.yaml b/leiyu/obmc-utils/sensor_map.yaml
new file mode 100644
index 0000000..b1db9d1
--- /dev/null
+++ b/leiyu/obmc-utils/sensor_map.yaml
@@ -0,0 +1,746 @@
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /org/open_power/control/volatile
+- !!python/tuple [xyz.openbmc_project.Object.Enable]
+: {entityID: 33, 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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!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}
+? !!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}
+? !!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}
+? !!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}
+? !!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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
+? !!python/tuple
+- /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}
diff --git a/leiyu/obmc-utils/sensor_yaml_config.py b/leiyu/obmc-utils/sensor_yaml_config.py
index 38f45bd..f68e132 100755
--- a/leiyu/obmc-utils/sensor_yaml_config.py
+++ b/leiyu/obmc-utils/sensor_yaml_config.py
@@ -109,10 +109,14 @@
     return yaml.load(open(f))
 
 
-def saveYaml(y, f):
-    noaliasDumper = yaml.dumper.SafeDumper
-    noaliasDumper.ignore_aliases = lambda self, data: True
-    yaml.dump(y, open(f, "w"), default_flow_style=False, Dumper=noaliasDumper)
+def saveYaml(y, f, safe=True):
+    if safe:
+        noaliasDumper = yaml.dumper.SafeDumper
+        noaliasDumper.ignore_aliases = lambda self, data: True
+        yaml.dump(y, open(f, "w"), default_flow_style=False,
+                  Dumper=noaliasDumper)
+    else:
+        yaml.dump(y, open(f, "w"))
 
 
 def getEntityId(p, i):
@@ -206,6 +210,8 @@
                         help='The .rpt file generated by op-build')
     parser.add_argument('-e', '--entity', action='store_true',
                         help='Fix entities')
+    parser.add_argument('-g', '--generate', action='store_true',
+                        help='Generate maps for entityID and sensorNamePattern')
 
     args = parser.parse_args()
     args = vars(args)
@@ -244,7 +250,20 @@
                         print('Added sensor id:', s.sensorId,
                               ', path:', y[s.sensorId]['path'])
 
-    saveYaml(y, args['output'])
+    if args['generate']:
+        m = {}
+        for i in y:
+            path = y[i]['path']
+            intfs = tuple(sorted(list(y[i]['interfaces'].keys())))
+            entityId = y[i]['entityID']
+            sensorNamePattern = y[i]['sensorNamePattern']
+            m[(path, intfs)] = {'entityID': entityId,
+                                'sensorNamePattern': sensorNamePattern}
+        y = m
+
+    safe = False if args['generate'] else True
+
+    saveYaml(y, args['output'], safe)
 
 
 if __name__ == "__main__":