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/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__":