Mailing List Archive

Cisco 6k vss switches don't list all modules
Hello


Found that "show modules" don't list all modules on vss joined switches.
Just list modules from "active" switch.

This is how I make it to work on vss switches I have access to.
C6807-XL and C6832-X running 15.4(1)SY4.


Added
"cisco;command;ios::ShowModule;show module switch;c6500 ios vss"
before "show module" to rancid.types.base and change some lines in ios.pm
to extract correct info.


$diff -C3 ios.pm.org ios.pm
*** ios.pm.org 2019-01-10 13:24:32.314276935 +0100
--- ios.pm 2019-01-10 13:26:16.863676437 +0100
***************
*** 1,8 ****
package ios;
##
##
## Copyright (c) 1997-2018 by Henry Kilmer and John Heasley
## All rights reserved.
##
--- 1,8 ----
package ios;
##
##
## Copyright (c) 1997-2018 by Henry Kilmer and John Heasley
## All rights reserved.
##
***************
*** 85,90 ****
--- 85,92 ----
our $I0;
our $DO_SHOW_VLAN;

+ our $vss_show_module; # Use "show module switch" on 6k VSS systems
+
@ISA = qw(Exporter rancid main);
#XXX @Exporter::EXPORT = qw($VERSION @commandtable %commands @commands);

***************
*** 116,121 ****
--- 118,124 ----
$I0 = 0;
$DO_SHOW_VLAN = 0;

+ $vss_show_module = 0; # Use "show module switch" on 6k VSS systems
# add content lines and separators
ProcessHistory("","","","!RANCID-CONTENT-TYPE: $devtype\n!\n");
ProcessHistory("COMMENTS","keysort","B0","!\n");
***************
*** 1877,1887 ****

my(@lines);
my($slot, $pa);

while (<$INPUT>) {
tr/\015//d;
! return if (/^\s*\^$/);
! last if (/online diag status/i);
last if (/^$prompt/);
next if (/^(\s*|\s*$cmd\s*)$/);
return(-1) if (/command authorization failed/i);
--- 1880,1900 ----

my(@lines);
my($slot, $pa);
+ my($switch, $switch_n);

+ if ($vss_show_module == 1) {
+ while (<$INPUT>) {
+ last if (/^$prompt/);
+ }
+ return(0);
+ }
while (<$INPUT>) {
tr/\015//d;
! next if (/^\s*\^$/);
! if (/online diag status/i) {
! $vss_show_module = 1;
! next;
! }
last if (/^$prompt/);
next if (/^(\s*|\s*$cmd\s*)$/);
return(-1) if (/command authorization failed/i);
***************
*** 1891,1907 ****
s/^$1\s{$len}//;
}

# match slot/card info line
if (/^ *(\d+)\s+(\d+)\s+(.*)\s+(\S+)\s+(\S+)\s*$/) {
! $lines[$1 * 1000] .= "!Slot $1: type $3, $2 ports\n!Slot $1: part $4, serial $5\n";

! $lines[$1 * 1000] =~ s/\s+,/,/g;
next;
}
# now match the Revs in the second paragraph of o/p and stick it in
# the array with the previous bits...grumble.
if (/^ *(\d+)\s+\S+\s+to\s+\S+\s+(\S+)\s+(\S*)\s+(\S+)(\s+\S+)?\s*$/) {
! $lines[$1 * 1000] .= "!Slot $1: hvers $2, firmware $3, sw $4\n";
! $lines[$1 * 1000] =~ s/\s+,/,/g;
next;
}
# grab the sub-modules, if any
--- 1904,1928 ----
s/^$1\s{$len}//;
}

+ # match Switch Number: 1 Role: Virtual Switch Active/Standby
+ if (/^ *Switch Number: *(\d) .*Virtual Switch\s+(\S+)/) {
+ $switch_n = $1;
+ $switch = "Sw$1 ";
+ ProcessHistory("Module","","","!Virtual Switch $1 is $2\n");
+ next;
+ }
+
# match slot/card info line
if (/^ *(\d+)\s+(\d+)\s+(.*)\s+(\S+)\s+(\S+)\s*$/) {
! $lines[$switch_n * 10000 + $1 * 1000] .= "!Slot ${switch}$1: type $3, $2 ports\n!Slot ${switch}$1:
part $4, serial $5\n";
! $lines[$switch_n * 10000 + $1 * 1000] =~ s/\s+,/,/g;
next;
}
# now match the Revs in the second paragraph of o/p and stick it in
# the array with the previous bits...grumble.
if (/^ *(\d+)\s+\S+\s+to\s+\S+\s+(\S+)\s+(\S*)\s+(\S+)(\s+\S+)?\s*$/) {
! $lines[$switch_n * 10000 + $1 * 1000] .= "!Slot ${switch}$1: hvers $2, firmware $3, sw $4\n";
! $lines[$switch_n * 10000 + $1 * 1000] =~ s/\s+,/,/g;
next;
}
# grab the sub-modules, if any
***************
*** 1909,1921 ****
my($idx);
$pa = 0 if ($1 != $slot);
$slot = $1;
! $idx = $1 * 1000 + $1 * 10 + $pa;
! $lines[$idx] .= "!Slot $1/$pa: type $2\n";
! $lines[$idx] .= "!Slot $slot/$pa: part $3, serial $4\n";
! $lines[$idx] .= "!Slot $slot/$pa: hvers $5\n";
$pa++;
}
}
foreach $slot (@lines) {
next if ($slot =~ /^\s*$/);
ProcessHistory("Module","","","$slot!\n");
--- 1930,1945 ----
my($idx);
$pa = 0 if ($1 != $slot);
$slot = $1;
! $idx = $switch_n * 10000 + $1 * 1000 + $1 * 10 + $pa;
! $lines[$idx] .= "!Slot ${switch}$1/$pa: type $2\n";
! $lines[$idx] .= "!Slot ${switch}$slot/$pa: part $3, serial $4\n";
! $lines[$idx] .= "!Slot ${switch}$slot/$pa: hvers $5\n";
$pa++;
}
}
+ if ( $switch_n != 0 ) {
+ ProcessHistory("Module","","","!\n");
+ }
foreach $slot (@lines) {
next if ($slot =~ /^\s*$/);
ProcessHistory("Module","","","$slot!\n");
===================================================


Also tested on WS-C4500X-32 cat4500e-universalk9.SPA.03.08.06.E.152-4.E6 using
"show modules" command for vss cluster.




Result after fix to my 6832-X switch.
==================================
...
!
!Virtual Switch 1 is Standby
!Virtual Switch 2 is Active
!
!Slot Sw1 1: type 6832-X-LE 32P SFP+ Multi-Rate (Hot), 40 ports
!Slot Sw1 1: part C6832-X-LE, serial xxxxx
!Slot Sw1 1: hvers 2.0, firmware 15.2(02r)SYS, sw 15.4(1)SY4
!
!Slot Sw1 1/0: type Policy Feature Card 4
!Slot Sw1 1/0: part C6840-X-LE-PFC, serial xxxxx
!Slot Sw1 1/0: hvers 1.0
!
!Slot Sw1 1/1: type Policy Feature Card 4
!Slot Sw1 1/1: part C6840-X-LE-PFC, serial xxxxx
!Slot Sw1 1/1: hvers 1.0
!
!Slot Sw2 1: type 6832-X-LE 32P SFP+ Multi-Rate (Active), 40 ports
!Slot Sw2 1: part C6832-X-LE, serial xxxxx
!Slot Sw2 1: hvers 2.0, firmware 15.2(02r)SYS, sw 15.4(1)SY4
!
!Slot Sw2 1/2: type Policy Feature Card 4
!Slot Sw2 1/2: part C6840-X-LE-PFC, serial xxxxx
!Slot Sw2 1/2: hvers 1.0
!
!Slot Sw2 1/3: type Policy Feature Card 4
!Slot Sw2 1/3: part C6840-X-LE-PFC, serial xxxxx
!Slot Sw2 1/3: hvers 1.0
!
...

raw output from "show module switch" and "show module"
===========================
...
vss-gw#show module switch
Switch Number: 1 Role: Virtual Switch Standby
---------------------- -----------------------------
Mod Ports Card Type Model Serial No.
--- ----- -------------------------------------- ------------------ -----------
1 40 6832-X-LE 32P SFP+ Multi-Rate (Hot) C6832-X-LE xxxxx

Mod MAC addresses Hw Fw Sw Status
--- ---------------------------------- ------ ------------ ------------ -------
1 706b.aaaa.4039 to 706b.aaaa.40a9 2.0 15.2(02r)SYS 15.4(1)SY4 Ok

Mod Sub-Module Model Serial Hw Status
---- --------------------------- ------------------ ----------- ------- -------
1 Policy Feature Card 4 C6840-X-LE-PFC xxxxx 1.0 Ok
1 Policy Feature Card 4 C6840-X-LE-PFC xxxxx 1.0 Ok

Mod Online Diag Status
---- -------------------
1 Pass

Switch Number: 2 Role: Virtual Switch Active
---------------------- -----------------------------
Mod Ports Card Type Model Serial No.
--- ----- -------------------------------------- ------------------ -----------
1 40 6832-X-LE 32P SFP+ Multi-Rate (Active) C6832-X-LE xxxxx

Mod MAC addresses Hw Fw Sw Status
--- ---------------------------------- ------ ------------ ------------ -------
1 006c.aaaa.fe51 to 006c.aaaa.fec1 2.0 15.2(02r)SYS 15.4(1)SY4 Ok

Mod Sub-Module Model Serial Hw Status
---- --------------------------- ------------------ ----------- ------- -------
1 Policy Feature Card 4 C6840-X-LE-PFC xxxxx 1.0 Ok
1 Policy Feature Card 4 C6840-X-LE-PFC xxxxx 1.0 Ok

Mod Online Diag Status
---- -------------------
1 Pass

vss-gw#show module
Mod Ports Card Type Model Serial No.
--- ----- -------------------------------------- ------------------ -----------
1 40 6832-X-LE 32P SFP+ Multi-Rate (Active) C6832-X-LE xxxxx

Mod MAC addresses Hw Fw Sw Status
--- ---------------------------------- ------ ------------ ------------ -------
1 006c.aaaa.fe51 to 006c.aaaa.fec1 2.0 15.2(02r)SYS 15.4(1)SY4 Ok

Mod Sub-Module Model Serial Hw Status
---- --------------------------- ------------------ ----------- ------- -------
1 Policy Feature Card 4 C6840-X-LE-PFC xxxxx 1.0 Ok
1 Policy Feature Card 4 C6840-X-LE-PFC xxxxx 1.0 Ok

Mod Online Diag Status
---- -------------------
1 Pass
vss-gw#
...
================================

Is there any other switch platforms using "show modules" in ios.pm that will interfere with this fix?


/Peo
----------------------------------------------------------
Per-Olof Olsson Email: peo@chalmers.se
Chalmers tekniska högskola IT-avdelningen
Sven Hultins gata 8 412 96 Göteborg
Tel: 031/772 6738 Mob: 0707 88 3708
----------------------------------------------------------

_______________________________________________
Rancid-discuss mailing list
Rancid-discuss@shrubbery.net
http://www.shrubbery.net/mailman/listinfo/rancid-discuss