Config yaml as input instead of directory

Giving the config yaml directory will make the perl to merge
and break the existing perl script. Instead of a directory path
config.yaml itself is given as input to the gen_ipmi_sensor.pl.
Removed unsused attributes and fixed path for some virtual sensors.

Change-Id: Icef03392f0c350e81b63ef2d7c9c377bcff8ccbf
Signed-off-by: Dhruvaraj Subhashchandran <dhruvaraj@in.ibm.com>
diff --git a/gen_ipmi_sensor.pl b/gen_ipmi_sensor.pl
index a54341e..1d3a1dd 100755
--- a/gen_ipmi_sensor.pl
+++ b/gen_ipmi_sensor.pl
@@ -12,18 +12,18 @@
 my $serverwizFile  = "";
 my $debug           = 0;
 my $outputFile     = "";
-my $metaDir   = "";
+my $metaDataFile   = "";
 
 # Command line argument parsing
 GetOptions(
 "i=s" => \$serverwizFile,    # string
-"m=s" => \$metaDir,     # string
+"m=s" => \$metaDataFile,     # string
 "o=s" => \$outputFile,       # string
 "d"   => \$debug,
 )
 or printUsage();
 
-if (($serverwizFile eq "") or ($outputFile eq "") or ($metaDir eq ""))
+if (($serverwizFile eq "") or ($outputFile eq "") or ($metaDataFile eq ""))
 {
     printUsage();
 }
@@ -36,26 +36,8 @@
 #Get the metadata for that sensor from the metadata file.
 #Merge the data into the outputfile
 
-my $sensorTypeConfig;
-my $tmpSensor;
-opendir my $dir,$metaDir or die "Cannot open directory: $!";
-my @files = readdir $dir;
-foreach my $file (@files){
-    my ($filename,$extn) = split(/\.([^\.]+)$/,$file);
-    if((defined($extn)) and ( $extn eq "yaml")) {
-        my $metaDataFile = $metaDir."/".$file;
-        my $tmpSensor = LoadFile($metaDataFile);
-        if(!keys %{$sensorTypeConfig}) {
-            %{$sensorTypeConfig} = %{$tmpSensor};
-        }
-        else {
-            %{$sensorTypeConfig} = (%{$sensorTypeConfig},%{$tmpSensor});
-        }
-    }
-}
-
-
 open(my $fh, '>', $outputFile) or die "Could not open file '$outputFile' $!";
+my $sensorTypeConfig = LoadFile($metaDataFile);
 
 my @interestedTypes = keys %{$sensorTypeConfig};
 my %types;
@@ -76,7 +58,8 @@
 
         $sensorID = $targetObj->getAttribute($target, "IPMI_SENSOR_ID");
 
-        $sensorType = $targetObj->getAttribute($target, "IPMI_SENSOR_TYPE");
+        $sensorType = hex($targetObj->getAttribute($target,
+                             "IPMI_SENSOR_TYPE"));
 
         $sensorReadingType = $targetObj->getAttribute($target,
                              "IPMI_SENSOR_READING_TYPE");
@@ -104,7 +87,7 @@
         #number to it.
         $obmcPath = Util::getObmcName(\@inventory,$path);
         #if unable to get the obmc path then get from yaml
-        if (not defined $obmcPath) {
+        if ((not defined $obmcPath) or ($obmcPath eq "/system")){
             if ($path eq "/sys-0") {
                 $obmcPath = $sensorTypeConfig->{$sensorType}->{"path"};
             }
@@ -128,9 +111,14 @@
 
         print $fh $sensorID.":\n";
 
+        my $serviceInterface =
+            $sensorTypeConfig->{$sensorType}->{"serviceInterface"};
+        my $readingType = $sensorTypeConfig->{$sensorType}->{"readingType"};
+
         printDebug("$sensorID : $sensorType : $sensorReadingType :$obmcPath \n");
 
-        writeToFile($sensorType,$sensorReadingType,$obmcPath,$sensorTypeConfig,$fh);
+        writeToFile($sensorType,$sensorReadingType,$obmcPath,$serviceInterface,
+            $readingType,$sensorTypeConfig,$fh);
 
     }
 
@@ -143,18 +131,15 @@
 
 sub writeToFile
 {
-    my ($sensorType,$sensorReadingType,$path,$sensorTypeConfig,$fh) = @_;
+    my ($sensorType,$sensorReadingType,$path,$serviceInterface,
+        $readingType,$sensorTypeConfig,$fh) = @_;
+
     print $fh "  sensorType: ".$sensorType."\n";
     print $fh "  path: ".$path."\n";
 
     print $fh "  sensorReadingType: ".$sensorReadingType."\n";
-    print $fh "  updateInterface: ".$sensorTypeConfig->{$sensorType}->{"updateInterface"}."\n";
-    if (defined($sensorTypeConfig->{$sensorType}->{"readingType"})) {
-        print $fh "  readingType: ".$sensorTypeConfig->{$sensorType}->{"readingType"}."\n";
-    }
-    if (defined($sensorTypeConfig->{$sensorType}->{"byteOffset"})) {
-        print $fh "  byteOffset: ".$sensorTypeConfig->{$sensorType}->{"byteOffset"}."\n";
-    }
+    print $fh "  serviceInterface: ".$serviceInterface."\n";
+    print $fh "  readingType: ".$readingType."\n";
     print $fh "  interfaces:"."\n";
 
     my $interfaces = $sensorTypeConfig->{$sensorType}->{"interfaces"};