CumulusTorSwitchService implements ISwitchService { @Override public SwitchHardwareInfo getSwitchHardwareInfo( SwitchNode switchNode ) { SwitchHardwareInfo hwInfo = hwInfoCache.get( switchNode ); if ( hwInfo != null ) { return hwInfo; } else { hwInfo = new SwitchHardwareInfo(); } CumulusTorSwitchSession switchSession = (CumulusTorSwitchSession) getSession( switchNode ); boolean cacheResult = true; try { SshExecResult result = switchSession.executeEnhanced( CumulusConstants.HARDWARE_MODEL_MANUFACTURER_COMMAND ); result.logIfError( logger ); if ( result.getExitCode() != 0 ) cacheResult = false; String[] hwResult = result.getStdoutAsString().split( "," ); if ( hwResult.length >= 2 ) { hwInfo.setManufacturer( hwResult[0].trim() ); hwInfo.setModel( hwResult[1].trim() ); } String serialCommand = CumulusConstants.GET_SERIAL_ID_COMMAND.replaceAll( "\\{password\\}", qr( switchNode.getPassword() ) ); result = switchSession.executeEnhanced( serialCommand ); result.logIfError( logger ); if ( result.getExitCode() != 0 ) cacheResult = false; String serialResult = result.getStdoutAsString().trim(); hwInfo.setChassisSerialId( serialResult ); String partNumberCommand = CumulusConstants.GET_PART_NUMBER_COMMAND.replaceAll( "\\{password\\}", qr( switchNode.getPassword() ) ); result = switchSession.executeEnhanced( partNumberCommand ); result.logIfError( logger ); if ( result.getExitCode() != 0 ) cacheResult = false; String partNumberResult = result.getStdoutAsString().trim(); hwInfo.setPartNumber( partNumberResult ); String manufactureDateCommand = CumulusConstants.GET_MANUFACTURE_DATE_COMMAND.replaceAll( "\\{password\\}", qr( switchNode.getPassword() ) ); result = switchSession.executeEnhanced( manufactureDateCommand ); result.logIfError( logger ); if ( result.getExitCode() != 0 ) cacheResult = false; String manufactureDateResult = result.getStdoutAsString().trim(); hwInfo.setManufactureDate( manufactureDateResult ); SwitchPort mgmtPort = getSwitchPort( switchNode, CumulusConstants.MANAGEMENT_PORT_NAME ); if ( mgmtPort != null ) { hwInfo.setManagementMacAddress( mgmtPort.getMacAddress() ); } else { logger.warn( "Couldn't determine management MAC address of management port on switch " + switchNode.getSwitchId() ); cacheResult = false; } } catch ( Exception e ) { logger.warn( "Exception received while getting hardware model and serial number on switch " + switchNode.getSwitchId(), e ); cacheResult = false; } if ( cacheResult ) hwInfoCache.set( switchNode, hwInfo ); return ( hwInfo ); }  @Override String getSwitchType(); @Override List<SwitchType> getSupportedSwitchTypes(); @Override boolean discoverSwitch( SwitchNode switchNode ); @Override SwitchSession getSession( SwitchNode switchNode ); @Override boolean isPoweredOn( SwitchNode switchNode ); @Override SwitchOsInfo getSwitchOsInfo( SwitchNode switchNode ); @Override SwitchHardwareInfo getSwitchHardwareInfo( SwitchNode switchNode ); @Override boolean updateSwitchIpAddress( SwitchNode switchNode, String ipAddress, String netmask, String gateway ); @Override boolean setPassword( SwitchNode switchNode, String username, String newPassword ); @Override boolean updateSwitchTimeServer( SwitchNode switchNode, String timeServer ); @Override List<String> getSwitchPortList( SwitchNode switchNode ); @Override SwitchPort getSwitchPort( SwitchNode switchNode, String portName ); @Override PortStatus getSwitchPortStatus( SwitchNode switchNode, String portName ); @Override boolean setSwitchPortStatus( SwitchNode switchNode, String portName, PortStatus portStatus ); @Override boolean updateSwitchPort( SwitchNode switchNode, String portName, SwitchPort portInfo ); @Override SwitchVlan getSwitchVlan( SwitchNode switchNode, String vlanName ); @Override List<String> getSwitchVlans( SwitchNode switchNode ); @Override List<SwitchVlan> getSwitchVlansBulk( SwitchNode switchNode ); @Override boolean createVlan( SwitchNode switchNode, SwitchVlan vlan ); @Override boolean updateVlan( SwitchNode switchNode, String vlanName, SwitchVlan vlan ); @Override boolean deleteVlan( SwitchNode switchNode, String vlanName ); @Override List<String> getSwitchLacpGroups( SwitchNode switchNode ); @Override SwitchLacpGroup getSwitchLacpGroup( SwitchNode switchNode, String lacpGroupName ); @Override boolean createLacpGroup( SwitchNode switchNode, SwitchLacpGroup lacpGroup ); @Override boolean deleteLacpGroup( SwitchNode switchNode, String lacpGroupName ); @Override boolean reboot( SwitchNode switchNode ); @Override boolean upgrade( SwitchNode switchNode, SwitchUpgradeInfo upgradeInfo ); @Deprecated @Override boolean applyNetworkConfiguration( SwitchNode switchNode, SwitchNetworkConfiguration networkConfiguration ); @Override List<SwitchVxlan> getSwitchVxlans( SwitchNode switchNode ); @Override List<SwitchVxlan> getSwitchVxlansMatchingVlan( SwitchNode switchNode, String vlanName ); @Override boolean createVxlan( SwitchNode switchNode, SwitchVxlan vxlan ); @Override boolean deleteVxlan( SwitchNode switchNode, String vxlanName, String vlanName ); @Override void deletePortOrBondFromVlan( SwitchNode switchNode, String vlanId, String portOrBondName ); @Override void deletePortFromLacpGroup( SwitchNode switchNode, String lacpGroupName, String portName ); @Override List<SwitchPort> getSwitchPortListBulk( SwitchNode switchNode ); @Override boolean configureOspf( SwitchNode switchNode, SwitchOspfConfig ospf ); @Override SwitchOspfConfig getOspf( SwitchNode switchNode ); @Override boolean configureBgp( SwitchNode switchNode, SwitchBgpConfig bgp ); @Override SwitchBgpConfig getBgpConfiguration( SwitchNode switchNode ); @Override SwitchSensorInfo getSwitchSensorInfo( SwitchNode switchNode ); @Override boolean configureMclag( SwitchNode switchNode, SwitchMclagInfo mclag ); @Override SwitchMclagInfo getMclagStatus( SwitchNode switchNode ); @Override void applySwitchBulkConfigs( SwitchNode switchNode, List<PluginSwitchBulkConfig> switchBulkConfigs ); @Override void configureIpv4DefaultRoute( SwitchNode switchNode, String gateway, String portId ); @Override void deleteIpv4DefaultRoute( SwitchNode switchNode ); @Override List<ServerComponentEvent> getComponentSwitchEventList( ServiceHmsNode serviceNode,
                                                                   SwitchComponentEnum component ); @Override List<HmsApi> getSupportedHmsSwitchApi( ServiceHmsNode serviceNode ); @Override void setSwitchTime( SwitchNode switchNode, long time ); @Override void configureSnmp( SwitchNode switchNode, SwitchSnmpConfig config ); @Override SwitchSnmpConfig getSnmp( SwitchNode switchNode );  }
@Test public void testGetSwitchHardwareInfo() { SwitchHardwareInfo hwInfo = null; try { hwInfo = cumulusTorSwitchService_Obj.getSwitchHardwareInfo( switchNode_Obj ); assertNotNull( "HWInfo is null", hwInfo ); if ( hwInfo != null ) { logger.info( "[Device IP : " + switchNode_Obj.getIpAddress() + "] Found Switch Hardware information." ); logger.info( "Hardware info: " ); logger.info( "Class Name: " + hwInfo.getClass().getName() ); logger.info( "Model: " + hwInfo.getModel() ); logger.info( "Manufacturer: " + hwInfo.getManufacturer() ); logger.info( "Chassis Serial Id: " + hwInfo.getChassisSerialId() ); logger.info( "Part Number: " + hwInfo.getPartNumber() ); logger.info( "Manufacture Date: " + hwInfo.getManufactureDate() ); logger.info( "Management Mac Address: " + hwInfo.getManagementMacAddress() ); } } catch ( Exception e ) { logger.info( "Error while getting Switch Hardware information: " + e.toString() ); if ( PRINT_STACK_TRACE ) logger.debug( e.getStackTrace() ); if ( FAIL_ON_EXCEPTION ) fail(); } }