/** {@inheritDoc} */
 @Transactional
 public void deleteInterface(final Integer nodeId, final String ipAddr) {
   final OnmsIpInterface iface = m_ipInterfaceDao.findByNodeIdAndIpAddress(nodeId, ipAddr);
   if (iface != null && shouldDelete(iface)) {
     m_ipInterfaceDao.delete(iface);
     iface.visit(new DeleteEventVisitor(m_eventForwarder));
   }
 }
  @Transactional
  private OnmsIpInterface saveOrUpdate(final OnmsIpInterface iface) {
    iface.visit(new ServiceTypeFulfiller());
    infof(this, "SaveOrUpdating IpInterface %s", iface);
    m_ipInterfaceDao.saveOrUpdate(iface);
    m_ipInterfaceDao.flush();

    return iface;
  }
 /** {@inheritDoc} */
 @Transactional
 public OnmsIpInterface getPrimaryInterfaceForNode(final OnmsNode node) {
   final OnmsNode dbNode = getDbNode(node);
   if (dbNode == null) {
     return null;
   } else {
     final OnmsIpInterface primaryIface = dbNode.getPrimaryInterface();
     if (primaryIface != null) {
       m_ipInterfaceDao.initialize(primaryIface);
       m_ipInterfaceDao.initialize(primaryIface.getMonitoredServices());
     }
     return primaryIface;
   }
 }
  @Transactional
  public OnmsMonitoredService updateMonitoredServiceState(
      final Integer nodeId, final String ipAddress, final String svcName) {
    final OnmsIpInterface iface = m_ipInterfaceDao.findByNodeIdAndIpAddress(nodeId, ipAddress);
    assertNotNull(
        iface, "could not find interface with nodeid %d and ipAddr %s", nodeId, ipAddress);

    return new UpsertTemplate<OnmsMonitoredService, MonitoredServiceDao>(
        m_transactionManager, m_monitoredServiceDao) {

      @Override
      protected OnmsMonitoredService query() {
        return iface.getMonitoredServiceByServiceType(svcName);
      }

      @Override
      protected OnmsMonitoredService doUpdate(OnmsMonitoredService dbObj) { // NMS-3906
        debugf(
            this,
            "current status of service %s on node with IP %s is %s ",
            dbObj.getServiceName(),
            dbObj.getIpAddress().getHostAddress(),
            dbObj.getStatus());
        if ("S".equals(dbObj.getStatus())) {
          debugf(
              this,
              "suspending polling for service %s on node with IP %s",
              dbObj.getServiceName(),
              dbObj.getIpAddress().getHostAddress());
          dbObj.setStatus("F");
          m_monitoredServiceDao.update(dbObj);
          sendEvent(EventConstants.SUSPEND_POLLING_SERVICE_EVENT_UEI, dbObj);
        }
        if ("R".equals(dbObj.getStatus())) {
          debugf(
              this,
              "resume polling for service %s on node with IP %s",
              dbObj.getServiceName(),
              dbObj.getIpAddress().getHostAddress());
          dbObj.setStatus("A");
          m_monitoredServiceDao.update(dbObj);
          sendEvent(EventConstants.RESUME_POLLING_SERVICE_EVENT_UEI, dbObj);
        }
        return dbObj;
      }

      @Override
      protected OnmsMonitoredService doInsert() {
        return null;
      }

      private void sendEvent(String eventUEI, OnmsMonitoredService dbObj) {
        final EventBuilder bldr = new EventBuilder(eventUEI, "ProvisionService");
        bldr.setNodeid(dbObj.getNodeId());
        bldr.setInterface(dbObj.getIpAddress());
        bldr.setService(dbObj.getServiceName());
        m_eventForwarder.sendNow(bldr.getEvent());
      }
    }.execute();
  }
 /** {@inheritDoc} */
 @Transactional
 public OnmsMonitoredService addMonitoredService(
     final Integer ipInterfaceId, final String svcName) {
   final OnmsIpInterface iface = m_ipInterfaceDao.get(ipInterfaceId);
   assertNotNull(iface, "could not find interface with id %d", ipInterfaceId);
   return addMonitoredService(iface, svcName);
 }
 /** {@inheritDoc} */
 @Transactional
 public OnmsMonitoredService addMonitoredService(
     final Integer nodeId, final String ipAddress, final String svcName) {
   final OnmsIpInterface iface = m_ipInterfaceDao.findByNodeIdAndIpAddress(nodeId, ipAddress);
   assertNotNull(
       iface, "could not find interface with nodeid %d and ipAddr %s", nodeId, ipAddress);
   return addMonitoredService(iface, svcName);
 }
  /** {@inheritDoc} */
  @Transactional
  public OnmsIpInterface setIsPrimaryFlag(final Integer nodeId, final String ipAddress) {
    // TODO upsert? not sure if this needs one.. leave the todo here in case
    if (nodeId == null) {
      LogUtils.debugf(this, "nodeId is null!");
      return null;
    } else if (ipAddress == null) {
      LogUtils.debugf(this, "ipAddress is null!");
      return null;
    }
    final OnmsIpInterface svcIface = m_ipInterfaceDao.findByNodeIdAndIpAddress(nodeId, ipAddress);
    if (svcIface == null) {
      LogUtils.infof(
          this, "unable to find IPInterface for nodeId=%s, ipAddress=%s", nodeId, ipAddress);
      return null;
    }
    OnmsIpInterface primaryIface = null;
    if (svcIface.isPrimary()) {
      primaryIface = svcIface;
    } else if (svcIface.getNode().getPrimaryInterface() == null) {
      svcIface.setIsSnmpPrimary(PrimaryType.PRIMARY);
      m_ipInterfaceDao.saveOrUpdate(svcIface);
      m_ipInterfaceDao.flush();
      primaryIface = svcIface;
    } else {
      svcIface.setIsSnmpPrimary(PrimaryType.SECONDARY);
      m_ipInterfaceDao.saveOrUpdate(svcIface);
      m_ipInterfaceDao.flush();
    }

    m_ipInterfaceDao.initialize(primaryIface);
    return primaryIface;
  }
  @Before
  @Override
  public void setUp() throws Exception {
    super.setUp();
    startServer("None&8&", "10");

    // Initialize Mocks
    m_transactionManager = new MockPlatformTransactionManager();
    m_ipInterfaceDao = EasyMock.createMock(IpInterfaceDao.class);
    m_eventProxy = EasyMock.createMock(EventProxy.class);
    NetworkBuilder builder = new NetworkBuilder();
    builder.addNode("winsrv");
    builder
        .addInterface(getServer().getInetAddress().getHostAddress())
        .addSnmpInterface(1)
        .setCollectionEnabled(true);
    builder.getCurrentNode().setId(1);
    OnmsIpInterface iface = builder.getCurrentNode().getIpInterfaces().iterator().next();
    iface.setIsSnmpPrimary(PrimaryType.PRIMARY);
    iface.setId(1);
    EasyMock.expect(m_ipInterfaceDao.load(1)).andReturn(iface).anyTimes();
    EasyMock.replay(m_ipInterfaceDao, m_eventProxy);

    // Initialize NSClient Configuration
    String nsclient_config =
        "<nsclient-config port=\""
            + getServer().getLocalPort()
            + "\" retry=\"1\" timeout=\"3000\" />";
    NSClientPeerFactory.setInstance(
        new NSClientPeerFactory(new ByteArrayInputStream(nsclient_config.getBytes())));
    NSClientDataCollectionConfigFactory.setInstance(
        new NSClientDataCollectionConfigFactory(
            "src/test/resources/nsclient-datacollection-config.xml"));

    // Initialize Collection Agent
    m_collectionAgent = DefaultCollectionAgent.create(1, m_ipInterfaceDao, m_transactionManager);
  }
  @Test
  @JUnitSnmpAgents(
      value = {
        @JUnitSnmpAgent(
            host = ROUTER1_IP,
            port = 161,
            resource = "classpath:linkd/nms17216/router1-walk.txt")
      })
  @Transactional
  public final void testRouter1() throws MarshalException, ValidationException, IOException {
    m_capsd.init();
    m_capsd.start();
    m_capsd.scanSuspectInterface(ROUTER1_IP);

    List<OnmsIpInterface> ips = m_interfaceDao.findByIpAddress(ROUTER1_IP);
    assertTrue("Has only one ip interface", ips.size() == 1);

    OnmsIpInterface ip = ips.get(0);

    for (OnmsIpInterface ipinterface : ip.getNode().getIpInterfaces()) {
      if (ipinterface.getIfIndex() != null)
        System.out.println(
            "ROUTER1_IP_IF_MAP.put(InetAddress.getByName(\""
                + ipinterface.getIpHostName()
                + "\"), "
                + ipinterface.getIfIndex()
                + ");");
    }

    for (OnmsSnmpInterface snmpinterface : ip.getNode().getSnmpInterfaces()) {
      if (snmpinterface.getIfName() != null)
        System.out.println(
            "ROUTER1_IF_IFNAME_MAP.put("
                + snmpinterface.getIfIndex()
                + ", \""
                + snmpinterface.getIfName()
                + "\");");
      if (snmpinterface.getIfDescr() != null)
        System.out.println(
            "ROUTER1_IF_IFDESCR_MAP.put("
                + snmpinterface.getIfIndex()
                + ", \""
                + snmpinterface.getIfDescr()
                + "\");");
      if (snmpinterface.getPhysAddr() != null)
        System.out.println(
            "ROUTER1_IF_MAC_MAP.put("
                + snmpinterface.getIfIndex()
                + ", \""
                + snmpinterface.getPhysAddr()
                + "\");");
      if (snmpinterface.getIfAlias() != null)
        System.out.println(
            "ROUTER1_IF_IFALIAS_MAP.put("
                + snmpinterface.getIfIndex()
                + ", \""
                + snmpinterface.getIfAlias()
                + "\");");
    }

    m_capsd.stop();
  }
示例#10
0
 @Before
 public void setUp() {
   MockLogAppender.setupLogging();
   m_populator.populateDatabase();
   m_interfaces = m_ipInterfaceDao.findAll();
 }