All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.kaitoy.sneo.agent.FileMibAgentDynamicMBean Maven / Gradle / Ivy

/*_##########################################################################
  _##
  _##  Copyright (C) 2011-2012  Kaito Yamada
  _##
  _##########################################################################
*/

package com.github.kaitoy.sneo.agent;

import java.util.ArrayList;
import java.util.List;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;
import javax.management.MBeanParameterInfo;
import mx4j.AbstractDynamicMBean;
import org.snmp4j.smi.Variable;
import org.snmp4j.smi.VariableBinding;

public class FileMibAgentDynamicMBean extends AbstractDynamicMBean {

  private final String mbeanClassName;
  private final String moClassName;

  public FileMibAgentDynamicMBean(FileMibAgent mo) {
    this.mbeanClassName = this.getClass().getName();
    this.moClassName = mo.getClass().getName();
    setResource(mo);
  }

  @Override
  protected String getMBeanDescription() {
    return "DynamicMBean of " + moClassName;
  }

  @Override
  protected String getMBeanClassName() {
    return mbeanClassName;
  }

  public static List getMBeanAttributeInfoList() {
    List maiList = new ArrayList();

    maiList.add(
      new MBeanAttributeInfo(
        "Address",
        String.class.getName(),
        "The IP address and port of this agent.",
        true,
        false,
        false
      )
    );
    maiList.add(
      new MBeanAttributeInfo(
        "CommunityName",
        String.class.getName(),
        "The community name of this agent.",
        true,
        false,
        false
      )
    );
    maiList.add(
      new MBeanAttributeInfo(
        "SecurityName",
        String.class.getName(),
        "The security name of this agent.",
        true,
        false,
        false
      )
    );
    maiList.add(
      new MBeanAttributeInfo(
        "TrapTarget",
        String.class.getName(),
        "The target IP address to send trap . format: /",
        true,
        false,
        false
      )
    );
    maiList.add(
      new MBeanAttributeInfo(
        "FormatName",
        String.class.getName(),
        "The format of fileMIB this agent has loaded.",
        true,
        false,
        false
      )
    );
    maiList.add(
      new MBeanAttributeInfo(
        "FileMibPath",
        String.class.getName(),
        "The path of a fileMIB.",
        true,
        true,
        false
      )
    );
    maiList.add(
      new MBeanAttributeInfo(
        "Running",
        boolean.class.getName(),
        "The state of this SNMP agent.",
        true,
        false,
        true
      )
    );
    maiList.add(
      new MBeanAttributeInfo(
        "GatheringSnmpAccessStatistics",
        boolean.class.getName(),
        "The state of SNMP access statistics gatherer.",
        true,
        true,
        true
      )
    );

    return maiList;
  }

  @Override
  protected MBeanAttributeInfo[] createMBeanAttributeInfo() {
    return getMBeanAttributeInfoList().toArray(new MBeanAttributeInfo[0]);
  }

  public static List getMBeanOperationInfoList() {
    List moiList = new ArrayList();

    moiList.add(
      new MBeanOperationInfo(
        "start",
        "Start this SNMP agent.",
        new MBeanParameterInfo[0],
        Void.class.getName(),
        MBeanOperationInfo.ACTION
      )
    );
    moiList.add(
      new MBeanOperationInfo(
        "stop",
        "Stop this SNMP agent.",
        new MBeanParameterInfo[0],
        Void.class.getName(),
        MBeanOperationInfo.ACTION
      )
    );
    moiList.add(
      new MBeanOperationInfo(
        "reloadFileMib",
        "Reload fileMIB(s).",
        new MBeanParameterInfo[0],
        Void.class.getName(),
        MBeanOperationInfo.ACTION
      )
    );
    moiList.add(
      new MBeanOperationInfo(
        "getMib",
        "Get value by specified oid.",
        new MBeanParameterInfo[] {
          new MBeanParameterInfo(
            "oid",
            String.class.getName(),
            "The numeric OID with instance number of target."
          ),
        },
        VariableBinding.class.getName(),
        MBeanOperationInfo.INFO
      )
    );
    moiList.add(
      new MBeanOperationInfo(
        "walkMib",
        "Get values by specified oid for specified count.",
        new MBeanParameterInfo[] {
          new MBeanParameterInfo(
            "oid",
            String.class.getName(),
            "The numeric OID that specifies start point to search subtrees."
          ),
          new MBeanParameterInfo(
            "count",
            int.class.getName(),
            "The number of MIB instances to get"
          ),
        },
        List.class.getName(),
        MBeanOperationInfo.INFO
      )
    );
    moiList.add(
      new MBeanOperationInfo(
        "setMib",
        "Set specified variable-binding.",
        new MBeanParameterInfo[] {
          new MBeanParameterInfo(
            "varBind",
            String.class.getName(),
            "The variable-binding to set in following format(same as fileMIB's):  "
              + "::"
          ),
        },
        Variable.class.getName(),
        MBeanOperationInfo.ACTION
      )
    );
    moiList.add(
      new MBeanOperationInfo(
        "removeMessageProcessor",
        "Remove a Message Processor",
        new MBeanParameterInfo[] {
          new MBeanParameterInfo(
            "version",
            String.class.getName(),
            "1 or 2c "
          ),
        },
        String.class.getName(),
        MBeanOperationInfo.ACTION
      )
    );
    moiList.add(
      new MBeanOperationInfo(
        "reportSnmpAccessStatistics",
        "Report SNMP access statistics.",
        new MBeanParameterInfo[0],
        String.class.getName(),
        MBeanOperationInfo.INFO
      )
    );
    return moiList;
  }

  @Override
  protected MBeanOperationInfo[] createMBeanOperationInfo() {
    return getMBeanOperationInfoList().toArray(new MBeanOperationInfo[0]);
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy