示例#1
0
  void wakeUpNodeCollection(int nodeid) {

    LinkableNode node = getNode(nodeid);

    if (node == null) {
      LogUtils.warnf(
          this, "wakeUpNodeCollection: node not found during scheduling with ID %d", nodeid);
      scheduleNodeCollection(nodeid);
    } else {
      // get collections
      // get readyRunnuble
      // wakeup RR
      Collection<SnmpCollection> collections =
          getSnmpCollections(nodeid, node.getSnmpPrimaryIpAddr(), node.getSysoid());
      LogUtils.debugf(
          this,
          "wakeUpNodeCollection: fetched SnmpCollections from scratch, iterating over %d objects to wake them up",
          collections.size());
      for (SnmpCollection collection : collections) {
        ReadyRunnable rr = getReadyRunnable(collection);
        if (rr == null) {
          LogUtils.warnf(this, "wakeUpNodeCollection: found null ReadyRunnable");
          return;
        } else {
          rr.wakeUp();
        }
      }
    }
  }
示例#2
0
  /**
   * This method schedules a {@link SnmpCollection} for node for each package. Also schedule
   * discovery link on package when not still activated.
   *
   * @param node
   */
  private void scheduleCollectionForNode(final LinkableNode node) {

    for (final SnmpCollection snmpcoll :
        getSnmpCollections(node.getNodeId(), node.getSnmpPrimaryIpAddr(), node.getSysoid())) {
      if (m_activepackages.contains(snmpcoll.getPackageName())) {
        LogUtils.debugf(
            this, "ScheduleCollectionForNode: package active: %s", snmpcoll.getPackageName());
      } else {
        // schedule discovery link
        LogUtils.debugf(
            this,
            "ScheduleCollectionForNode: Scheduling Discovery Link for Active Package: %s",
            snmpcoll.getPackageName());
        final DiscoveryLink discovery = this.getDiscoveryLink(snmpcoll.getPackageName());
        if (discovery.getScheduler() == null) {
          discovery.setScheduler(m_scheduler);
        }
        discovery.schedule();
        m_activepackages.add(snmpcoll.getPackageName());
      }
      if (snmpcoll.getScheduler() == null) {
        snmpcoll.setScheduler(m_scheduler);
      }
      LogUtils.debugf(
          this,
          "ScheduleCollectionForNode: Scheduling SNMP Collection for Package/NodeId: %s/%d/%s",
          snmpcoll.getPackageName(),
          node.getNodeId(),
          snmpcoll.getInfo());
      snmpcoll.schedule();
    }
  }
示例#3
0
 LinkableNode getNode(int nodeid) {
   synchronized (m_nodes) {
     for (LinkableNode node : m_nodes) {
       if (node.getNodeId() == nodeid) return node;
     }
     return null;
   }
 }
示例#4
0
 /**
  * getLinkableNodesOnPackage
  *
  * @param pkg a {@link java.lang.String} object.
  * @return a {@link java.util.Collection} object.
  */
 public Collection<LinkableNode> getLinkableNodesOnPackage(String pkg) {
   Collection<LinkableNode> nodesOnPkg = new ArrayList<LinkableNode>();
   synchronized (m_nodes) {
     for (final LinkableNode node : m_nodes) {
       if (isInterfaceInPackage(node.getSnmpPrimaryIpAddr(), pkg)) nodesOnPkg.add(node);
     }
     return nodesOnPkg;
   }
 }
示例#5
0
 private LinkableNode removeNode(InetAddress ipaddr) {
   synchronized (m_nodes) {
     Iterator<LinkableNode> ite = m_nodes.iterator();
     while (ite.hasNext()) {
       LinkableNode curNode = ite.next();
       if (curNode.getSnmpPrimaryIpAddr().equals(ipaddr)) {
         ite.remove();
         return curNode;
       }
     }
   }
   return null;
 }
示例#6
0
 private LinkableNode removeNode(int nodeid) {
   synchronized (m_nodes) {
     Iterator<LinkableNode> ite = m_nodes.iterator();
     while (ite.hasNext()) {
       LinkableNode curNode = ite.next();
       if (curNode.getNodeId() == nodeid) {
         ite.remove();
         return curNode;
       }
     }
     return null;
   }
 }
示例#7
0
  void suspendNodeCollection(int nodeid) {
    LogUtils.debugf(
        this, "suspendNodeCollection: suspend collection LinkableNode for node %d", nodeid);

    try {
      m_queryMgr.update(nodeid, QueryManager.ACTION_UPTODATE);
    } catch (SQLException sqlE) {
      LogUtils.errorf(
          this,
          sqlE,
          "suspendNodeCollection: SQL Exception while syncing node object with database information.");
    }

    LinkableNode node = getNode(nodeid);

    if (node == null) {
      LogUtils.warnf(this, "suspendNodeCollection: found null ReadyRunnable");
    } else {
      // get collections
      // get readyRunnuble
      // suspend RR
      Collection<SnmpCollection> collections =
          getSnmpCollections(nodeid, node.getSnmpPrimaryIpAddr(), node.getSysoid());
      LogUtils.debugf(
          this,
          "suspendNodeCollection: fetched SnmpCollections from scratch, iterating over %d objects to wake them up",
          collections.size());
      for (SnmpCollection collection : collections) {
        ReadyRunnable rr = getReadyRunnable(collection);
        if (rr == null) {
          LogUtils.warnf(this, "suspendNodeCollection: suspend: node not found: %d", nodeid);
          return;
        } else {
          rr.suspend();
        }
      }
    }
  }
示例#8
0
  void deleteNode(int nodeid) {
    LogUtils.debugf(this, "deleteNode: deleting LinkableNode for node %s", nodeid);

    try {
      m_queryMgr.update(nodeid, QueryManager.ACTION_DELETE);
    } catch (SQLException sqlE) {
      LogUtils.errorf(
          this,
          sqlE,
          "deleteNode: SQL Exception while syncing node object with database information.");
    }

    LinkableNode node = removeNode(nodeid);

    if (node == null) {
      LogUtils.warnf(this, "deleteNode: node not found: %d", nodeid);
    } else {
      Collection<SnmpCollection> collections =
          getSnmpCollections(nodeid, node.getSnmpPrimaryIpAddr(), node.getSysoid());
      LogUtils.debugf(
          this,
          "deleteNode: fetched SnmpCollections from scratch, iterating over %d objects to wake them up",
          collections.size());
      for (SnmpCollection collection : collections) {
        ReadyRunnable rr = getReadyRunnable(collection);

        if (rr == null) {
          LogUtils.warnf(this, "deleteNode: found null ReadyRunnable");
          return;
        } else {
          rr.unschedule();
        }
      }
    }

    // database changed need reload packageiplist
    m_linkdConfig.updatePackageIpListMap();
  }
示例#9
0
  public boolean runSingleCollection(final int nodeId) {
    try {
      final LinkableNode node = m_queryMgr.getSnmpNode(nodeId);

      for (final SnmpCollection snmpColl :
          getSnmpCollections(nodeId, node.getSnmpPrimaryIpAddr(), node.getSysoid())) {
        snmpColl.setScheduler(m_scheduler);
        snmpColl.run();

        final DiscoveryLink link = getDiscoveryLink(snmpColl.getPackageName());
        link.setScheduler(m_scheduler);
        link.run();
      }

      return true;
    } catch (final SQLException e) {
      LogUtils.debugf(
          this,
          "runSingleCollection: unable to get linkable node from database with ID %d",
          nodeId);
    }
    return false;
  }