From b403f7310ce1c4895ccdface96aea96304e6662b Mon Sep 17 00:00:00 2001
From: zhaoertao <zhaoertao@8638fb3e-16cb-4fca-ae20-7b5d299a9bcd>
Date: Fri, 29 Jun 2012 07:30:32 +0000
Subject: [PATCH] enhance 'rinv' for CMM.

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.7@13200 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
---
 xCAT-server/lib/xcat/plugins/blade.pm | 38 ++++++++++++++++++++-------
 1 file changed, 29 insertions(+), 9 deletions(-)

diff --git a/xCAT-server/lib/xcat/plugins/blade.pm b/xCAT-server/lib/xcat/plugins/blade.pm
index 6aa6783c9..b85cc13f7 100644
--- a/xCAT-server/lib/xcat/plugins/blade.pm
+++ b/xCAT-server/lib/xcat/plugins/blade.pm
@@ -1919,7 +1919,7 @@ sub inv {
       push @invitems,(qw(bios diag mprom mparom));
       next;
     }
-    if ($item =~ /^bios/) {
+    if ($item =~ /^bios/ and $mptype !~ /mm/) {
       my $biosver;
       my $biosbuild;
       my $biosdate;
@@ -1931,7 +1931,7 @@ sub inv {
       if ($session->{ErrorStr}) { return (1,$session->{ErrorStr}); }
       push @output,"BIOS: $biosver ($biosbuild $biosdate)";
     }
-    if ($item =~ /^diag/) {
+    if ($item =~ /^diag/ and $mptype !~ /mm/) {
       my $diagver;
       my $diagdate;
       my $diagbuild;
@@ -1946,7 +1946,7 @@ sub inv {
       $diagdate = $data;
       push @output,"Diagnostics:  $diagver ($diagbuild $diagdate)";
     }
-    if ($item =~ /^[sm]prom/) {
+    if ($item =~ /^[sm]prom/ and $mptype !~ /mm/) {
       my $spver;
       my $spbuild;
       $data=$session->get([$bladempveroid,$slot]);
@@ -1973,13 +1973,28 @@ sub inv {
       push @output,"Management Module firmware: $mpaver ($mpabuild $mpadate)";
     }
     if ($item =~ /^model/ or $item =~ /^mtm/) {
-      $data=$session->get([$blademtmoid,$slot]);
-      if ($session->{ErrorStr}) { return (1,$session->{ErrorStr}); }
-      push @output,"Machine Type/Model: ".$data;
-      $updatehash{mtm}=$data;
+      if ($mptype eq 'cmm') {
+        my $type = $session->get(['1.3.6.1.4.1.2.3.51.2.2.21.1.1.1', '0']);
+        if ($session->{ErrorStr}) { return (1,$session->{ErrorStr}); }
+        my $model = $session->get(['1.3.6.1.4.1.2.3.51.2.2.21.1.1.2', '0']);
+        if ($session->{ErrorStr}) { return (1,$session->{ErrorStr}); }
+        push @output, "Machine Type/Model: ".$type.$model;
+        $updatehash{mtm}=$type.$model;
+      } else {
+        my $type=$session->get([$blademtmoid,$slot]);
+        if ($session->{ErrorStr}) { return (1,$session->{ErrorStr}); }
+        my $model = $session->get([$bladeomodel, $slot]);
+        if ($session->{ErrorStr}) { return (1,$session->{ErrorStr}); }
+        push @output,"Machine Type/Model: ".$type.$model;
+        $updatehash{mtm}=$type.$model;
+      }
     }
     if ($item =~ /^uuid/ or $item =~ /^guid/) {
-      $data=$session->get([$bladeuuidoid,$slot]);
+      if ($mptype eq 'cmm') {
+          $data=$session->get(['.1.3.6.1.4.1.2.3.51.2.2.21.2.1.1.6', '1']);
+      } else {
+          $data=$session->get([$bladeuuidoid,$slot]);
+      }
       if ($session->{ErrorStr}) { return (1,$session->{ErrorStr}); }
       $data =~ s/ //;
       $data =~ s/ /-/;
@@ -1991,7 +2006,12 @@ sub inv {
       $updatehash{uuid}=$data;
     }
     if ($item =~ /^serial/) {
-      $data=$session->get([$bladeserialoid,$slot]);
+      if ($mptype eq 'cmm') {
+          #chassisInfoVpd->chassisVpd->chassisSerialNumber
+          $data=$session->get(['1.3.6.1.4.1.2.3.51.2.2.21.1.1.3','0']);
+      } else {
+          $data=$session->get([$bladeserialoid,$slot]);
+      }
       if ($session->{ErrorStr}) { return (1,$session->{ErrorStr}); }
       push @output,"Serial Number: ".$data;
       $updatehash{serial}=$data;