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"};