Search in sources :

Example 31 with ActionReport

use of org.glassfish.api.ActionReport in project Payara by payara.

the class BaseMonitoringNotifierConfigurer method execute.

@Override
public void execute(AdminCommandContext context) {
    final ActionReport actionReport = context.getActionReport();
    Properties extraProperties = actionReport.getExtraProperties();
    if (extraProperties == null) {
        extraProperties = new Properties();
        actionReport.setExtraProperties(extraProperties);
    }
    Config config = targetUtil.getConfig(target);
    final MonitoringServiceConfiguration configuration = config.getExtensionByType(MonitoringServiceConfiguration.class);
    ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
    notifierClass = (Class<C>) genericSuperclass.getActualTypeArguments()[0];
    C c = configuration.getNotifierByType(notifierClass);
    try {
        if (c == null) {
            ConfigSupport.apply(new SingleConfigCode<MonitoringServiceConfiguration>() {

                @Override
                public Object run(final MonitoringServiceConfiguration configurationProxy) throws PropertyVetoException, TransactionFailure {
                    C c = configurationProxy.createChild(notifierClass);
                    applyValues(c);
                    configurationProxy.getNotifierList().add(c);
                    actionReport.setActionExitCode(ActionReport.ExitCode.SUCCESS);
                    return configurationProxy;
                }
            }, configuration);
        } else {
            ConfigSupport.apply(new SingleConfigCode<C>() {

                @Override
                public Object run(C cProxy) throws PropertyVetoException, TransactionFailure {
                    applyValues(cProxy);
                    actionReport.setActionExitCode(ActionReport.ExitCode.SUCCESS);
                    return cProxy;
                }
            }, c);
        }
        if (dynamic) {
            if (server.isDas()) {
                if (targetUtil.getConfig(target).isDas()) {
                    configureDynamically();
                }
            } else {
                configureDynamically();
            }
        }
    } catch (TransactionFailure ex) {
        logger.log(Level.WARNING, "Exception during command ", ex);
        actionReport.setMessage(ex.getCause().getMessage());
        actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
    }
}
Also used : ParameterizedType(java.lang.reflect.ParameterizedType) PropertyVetoException(java.beans.PropertyVetoException) TransactionFailure(org.jvnet.hk2.config.TransactionFailure) Config(com.sun.enterprise.config.serverbeans.Config) MonitoringServiceConfiguration(fish.payara.jmx.monitoring.configuration.MonitoringServiceConfiguration) ActionReport(org.glassfish.api.ActionReport) Properties(java.util.Properties)

Example 32 with ActionReport

use of org.glassfish.api.ActionReport in project Payara by payara.

the class TestHipchatNotifier method execute.

@Override
public void execute(AdminCommandContext context) {
    ActionReport actionReport = context.getActionReport();
    Config config = targetUtil.getConfig(target);
    if (config == null) {
        context.getActionReport().setMessage("No such config named: " + target);
        context.getActionReport().setActionExitCode(ActionReport.ExitCode.FAILURE);
        return;
    }
    HipchatNotifierConfiguration hipchatConfig = config.getExtensionByType(HipchatNotifierConfiguration.class);
    if (roomName == null) {
        roomName = hipchatConfig.getRoomName();
    }
    if (token == null) {
        token = hipchatConfig.getToken();
    }
    // prepare hipchat message
    HipchatNotificationEvent event = factory.buildNotificationEvent(SUBJECT, MESSAGE);
    HipchatMessageQueue queue = new HipchatMessageQueue();
    queue.addMessage(new HipchatMessage(event, event.getSubject(), event.getMessage()));
    HipchatNotifierConfigurationExecutionOptions options = new HipchatNotifierConfigurationExecutionOptions();
    options.setRoomName(roomName);
    options.setToken(token);
    HipchatNotificationRunnable notifierRun = new HipchatNotificationRunnable(queue, options);
    // set up logger to store result
    Logger logger = Logger.getLogger(HipchatNotificationRunnable.class.getCanonicalName());
    BlockingQueueHandler bqh = new BlockingQueueHandler(10);
    bqh.setLevel(Level.FINE);
    Level oldLevel = logger.getLevel();
    logger.setLevel(Level.FINE);
    logger.addHandler(bqh);
    // send message, this occurs in its own thread
    Thread notifierThread = new Thread(notifierRun, "test-hipchat-notifier-thread");
    notifierThread.start();
    try {
        notifierThread.join();
    } catch (InterruptedException ex) {
        Logger.getLogger(TestHipchatNotifier.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        logger.setLevel(oldLevel);
    }
    LogRecord message = bqh.poll();
    logger.removeHandler(bqh);
    if (message == null) {
        // something's gone wrong
        Logger.getLogger(TestHipchatNotifier.class.getName()).log(Level.SEVERE, "Failed to send HipChat message");
        actionReport.setMessage("Failed to send HipChat message");
        actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
    } else {
        actionReport.setMessage(message.getMessage());
        if (message.getLevel() == Level.FINE) {
            actionReport.setActionExitCode(ActionReport.ExitCode.SUCCESS);
        } else {
            actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
        }
    }
}
Also used : Config(com.sun.enterprise.config.serverbeans.Config) ActionReport(org.glassfish.api.ActionReport) Logger(java.util.logging.Logger) BlockingQueueHandler(fish.payara.nucleus.notification.BlockingQueueHandler) LogRecord(java.util.logging.LogRecord) Level(java.util.logging.Level)

Example 33 with ActionReport

use of org.glassfish.api.ActionReport in project Payara by payara.

the class TestNewRelicNotifier method execute.

@Override
public void execute(AdminCommandContext context) {
    ActionReport actionReport = context.getActionReport();
    Config config = targetUtil.getConfig(target);
    if (config == null) {
        context.getActionReport().setMessage("No such config named: " + target);
        context.getActionReport().setActionExitCode(ActionReport.ExitCode.FAILURE);
        return;
    }
    NewRelicNotifierConfiguration newRelicConfig = config.getExtensionByType(NewRelicNotifierConfiguration.class);
    if (key == null) {
        key = newRelicConfig.getKey();
    }
    if (accountId == null) {
        accountId = newRelicConfig.getAccountId();
    }
    // prepare NewRelic message
    NewRelicNotificationEvent event = factory.buildNotificationEvent(SUBJECT, MESSAGE);
    event.setEventType(SUBJECT);
    NewRelicEventMessageQueue queue = new NewRelicEventMessageQueue();
    queue.addMessage(new NewRelicEventMessage(event, event.getSubject(), event.getMessage()));
    NewRelicNotifierConfigurationExecutionOptions options = new NewRelicNotifierConfigurationExecutionOptions();
    options.setKey(key);
    options.setAccountId(accountId);
    NewRelicNotificationRunnable notifierRun = new NewRelicNotificationRunnable(queue, options);
    // set up logger to store result
    Logger logger = Logger.getLogger(NewRelicNotificationRunnable.class.getCanonicalName());
    BlockingQueueHandler bqh = new BlockingQueueHandler();
    bqh.setLevel(Level.FINE);
    Level oldLevel = logger.getLevel();
    logger.setLevel(Level.FINE);
    logger.addHandler(bqh);
    // send message, this occurs in its own thread
    Thread notifierThread = new Thread(notifierRun, "test-newrelic-notifier-thread");
    notifierThread.start();
    try {
        notifierThread.join();
    } catch (InterruptedException ex) {
        Logger.getLogger(TestNewRelicNotifier.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        logger.setLevel(oldLevel);
    }
    LogRecord message = bqh.poll();
    logger.removeHandler(bqh);
    if (message == null) {
        // something's gone wrong
        Logger.getLogger(TestNewRelicNotifier.class.getName()).log(Level.SEVERE, "Failed to send New Relic message");
        actionReport.setMessage("Failed to send New Relic message");
        actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
    } else {
        actionReport.setMessage(message.getMessage());
        if (message.getLevel() == Level.FINE) {
            actionReport.setActionExitCode(ActionReport.ExitCode.SUCCESS);
        } else {
            actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
        }
    }
}
Also used : Config(com.sun.enterprise.config.serverbeans.Config) ActionReport(org.glassfish.api.ActionReport) Logger(java.util.logging.Logger) BlockingQueueHandler(fish.payara.nucleus.notification.BlockingQueueHandler) LogRecord(java.util.logging.LogRecord) Level(java.util.logging.Level)

Example 34 with ActionReport

use of org.glassfish.api.ActionReport in project Payara by payara.

the class TestSnmpNotifier method execute.

@Override
public void execute(AdminCommandContext context) {
    ActionReport actionReport = context.getActionReport();
    Config config = targetUtil.getConfig(target);
    if (config == null) {
        context.getActionReport().setMessage("No such config named: " + target);
        context.getActionReport().setActionExitCode(ActionReport.ExitCode.FAILURE);
        return;
    }
    SnmpNotifierConfiguration snmpConfig = config.getExtensionByType(SnmpNotifierConfiguration.class);
    if (community == null) {
        community = snmpConfig.getCommunity();
    }
    if (oid == null) {
        oid = snmpConfig.getOid();
    }
    if (version == null) {
        version = snmpConfig.getVersion();
    }
    if (hostName == null) {
        hostName = snmpConfig.getHost();
    }
    if (port == null) {
        port = snmpConfig.hashCode();
    }
    // prepare SNMP message
    SnmpNotificationEvent event = factory.buildNotificationEvent(SUBJECT, MESSAGE);
    SnmpMessageQueue queue = new SnmpMessageQueue();
    queue.addMessage(new SnmpMessage(event, event.getSubject(), event.getMessage()));
    SnmpNotifierConfigurationExecutionOptions options = new SnmpNotifierConfigurationExecutionOptions();
    options.setCommunity(community);
    options.setOid(oid);
    options.setVersion(version);
    options.setHost(hostName);
    options.setPort(port);
    SnmpNotificationRunnable notifierRun = null;
    try {
        TransportMapping transport = new DefaultUdpTransportMapping();
        Snmp snmp = new Snmp(transport);
        CommunityTarget cTarget = new CommunityTarget();
        cTarget.setCommunity(new OctetString(options.getCommunity()));
        int snmpVersion = SnmpNotifierService.decideOnSnmpVersion(options.getVersion());
        cTarget.setVersion(snmpVersion);
        cTarget.setAddress(new UdpAddress(options.getHost() + SnmpNotifierService.ADDRESS_SEPARATOR + options.getPort()));
        notifierRun = new SnmpNotificationRunnable(queue, options, snmp, cTarget, snmpVersion);
    } catch (IOException e) {
        Logger.getLogger(TestSnmpNotifier.class.getCanonicalName()).log(Level.SEVERE, "Error occurred while creating UDP transport", e);
        actionReport.setMessage("Error occurred while creating UDP transport");
        actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
    } catch (InvalidSnmpVersion invalidSnmpVersion) {
        Logger.getLogger(TestSnmpNotifier.class.getCanonicalName()).log(Level.SEVERE, "Error occurred while configuring SNMP version: " + invalidSnmpVersion.getMessage());
        actionReport.setMessage("Error occurred while configuring SNMP version: " + invalidSnmpVersion.getMessage());
        actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
    }
    // set up logger to store result
    Logger logger = Logger.getLogger(SnmpNotificationRunnable.class.getCanonicalName());
    BlockingQueueHandler bqh = new BlockingQueueHandler(10);
    bqh.setLevel(Level.FINE);
    Level oldLevel = logger.getLevel();
    logger.setLevel(Level.FINE);
    logger.addHandler(bqh);
    // send message, this occurs in its own thread
    Thread notifierThread = new Thread(notifierRun, "test-snmp-notifier-thread");
    notifierThread.start();
    try {
        notifierThread.join();
    } catch (InterruptedException ex) {
        Logger.getLogger(TestSnmpNotifier.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        logger.setLevel(oldLevel);
    }
    LogRecord message = bqh.poll();
    bqh.clear();
    if (message == null) {
        // something's gone wrong
        Logger.getLogger(TestSnmpNotifier.class.getName()).log(Level.SEVERE, "Failed to send SNMP message");
        actionReport.setMessage("Failed to send SNMP message");
        actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
    } else {
        actionReport.setMessage(message.getMessage());
        if (message.getLevel() == Level.FINE) {
            actionReport.setActionExitCode(ActionReport.ExitCode.SUCCESS);
        } else {
            actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
        }
    }
}
Also used : OctetString(org.snmp4j.smi.OctetString) UdpAddress(org.snmp4j.smi.UdpAddress) Config(com.sun.enterprise.config.serverbeans.Config) TransportMapping(org.snmp4j.TransportMapping) DefaultUdpTransportMapping(org.snmp4j.transport.DefaultUdpTransportMapping) DefaultUdpTransportMapping(org.snmp4j.transport.DefaultUdpTransportMapping) IOException(java.io.IOException) ActionReport(org.glassfish.api.ActionReport) Logger(java.util.logging.Logger) RestEndpoint(org.glassfish.api.admin.RestEndpoint) InvalidSnmpVersion(fish.payara.notification.snmp.exception.InvalidSnmpVersion) BlockingQueueHandler(fish.payara.nucleus.notification.BlockingQueueHandler) LogRecord(java.util.logging.LogRecord) Snmp(org.snmp4j.Snmp) Level(java.util.logging.Level) CommunityTarget(org.snmp4j.CommunityTarget)

Example 35 with ActionReport

use of org.glassfish.api.ActionReport in project Payara by payara.

the class TestXmppNotifier method execute.

@Override
public void execute(AdminCommandContext context) {
    ActionReport actionReport = context.getActionReport();
    Config config = targetUtil.getConfig(target);
    if (config == null) {
        context.getActionReport().setMessage("No such config named: " + target);
        context.getActionReport().setActionExitCode(ActionReport.ExitCode.FAILURE);
        return;
    }
    XmppNotifierConfiguration xmppConfig = config.getExtensionByType(XmppNotifierConfiguration.class);
    if (hostName == null) {
        hostName = xmppConfig.getHost();
    }
    if (port == null) {
        port = Integer.parseInt(xmppConfig.getPort());
    }
    if (serviceName == null) {
        serviceName = xmppConfig.getServiceName();
    }
    if (username == null) {
        username = xmppConfig.getUsername();
    }
    if (password == null) {
        password = xmppConfig.getPassword();
    }
    if (securityDisabled == null) {
        securityDisabled = Boolean.valueOf(xmppConfig.getSecurityDisabled());
    }
    if (roomId == null) {
        roomId = xmppConfig.getRoomId();
    }
    // prepare xmpp message
    XmppNotificationEvent event = factory.buildNotificationEvent(SUBJECT, MESSAGE);
    event.setEventType(SUBJECT);
    XmppMessageQueue queue = new XmppMessageQueue();
    queue.addMessage(new XmppMessage(event, event.getSubject(), event.getMessage()));
    XmppNotifierConfigurationExecutionOptions options = new XmppNotifierConfigurationExecutionOptions();
    options.setHost(hostName);
    options.setPort(port);
    options.setServiceName(serviceName);
    if (!Strings.isNullOrEmpty(username)) {
        options.setUsername(username);
    }
    if (!Strings.isNullOrEmpty(password)) {
        options.setPassword(password);
    }
    options.setSecurityDisabled(securityDisabled);
    options.setRoomId(roomId);
    XMPPTCPConnection connection = null;
    try {
        // Create connection
        XMPPTCPConnectionConfiguration configuration = XMPPTCPConnectionConfiguration.builder().setSecurityMode(options.getSecurityDisabled() ? ConnectionConfiguration.SecurityMode.disabled : ConnectionConfiguration.SecurityMode.required).setServiceName(options.getServiceName()).setHost(options.getHost()).setPort(options.getPort()).build();
        connection = new XMPPTCPConnection(configuration);
        connection.connect();
        if (options.getUsername() != null && options.getPassword() != null) {
            connection.login(options.getUsername(), options.getPassword());
        } else {
            connection.login();
        }
    } catch (SmackException | IOException | XMPPException ex) {
        actionReport.setMessage(ex.getMessage());
        actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
        queue.resetQueue();
        return;
    }
    XmppNotificationRunnable notifierRun = new XmppNotificationRunnable(queue, options, connection);
    // set up logger to store result
    Logger logger = Logger.getLogger(XmppNotificationRunnable.class.getCanonicalName());
    BlockingQueueHandler bqh = new BlockingQueueHandler();
    bqh.setLevel(Level.FINE);
    Level oldLevel = logger.getLevel();
    logger.setLevel(Level.FINE);
    logger.addHandler(bqh);
    // send message, this occurs in its own thread
    Thread notifierThread = new Thread(notifierRun, "test-xmpp-notifier-thread");
    notifierThread.start();
    try {
        notifierThread.join();
    } catch (InterruptedException ex) {
        Logger.getLogger(TestXmppNotifier.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        connection.disconnect();
        logger.setLevel(oldLevel);
    }
    LogRecord message = bqh.poll();
    bqh.clear();
    logger.removeHandler(bqh);
    if (message == null) {
        // something's gone wrong
        Logger.getGlobal().log(Level.SEVERE, "Failed to send XMPP message");
        actionReport.setMessage("Failed to send XMPP message");
        actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
    } else {
        actionReport.setMessage(message.getMessage());
        if (message.getLevel() == Level.FINE) {
            actionReport.setActionExitCode(ActionReport.ExitCode.SUCCESS);
        } else {
            actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
        }
    }
}
Also used : XMPPTCPConnection(org.jivesoftware.smack.tcp.XMPPTCPConnection) Config(com.sun.enterprise.config.serverbeans.Config) SmackException(org.jivesoftware.smack.SmackException) XMPPTCPConnectionConfiguration(org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration) IOException(java.io.IOException) ActionReport(org.glassfish.api.ActionReport) Logger(java.util.logging.Logger) BlockingQueueHandler(fish.payara.nucleus.notification.BlockingQueueHandler) LogRecord(java.util.logging.LogRecord) Level(java.util.logging.Level) XMPPException(org.jivesoftware.smack.XMPPException)

Aggregations

ActionReport (org.glassfish.api.ActionReport)508 TransactionFailure (org.jvnet.hk2.config.TransactionFailure)86 Properties (java.util.Properties)83 Config (com.sun.enterprise.config.serverbeans.Config)73 PropertyVetoException (java.beans.PropertyVetoException)72 ParameterMap (org.glassfish.api.admin.ParameterMap)66 Logger (java.util.logging.Logger)56 IOException (java.io.IOException)47 ArrayList (java.util.ArrayList)47 HashMap (java.util.HashMap)43 File (java.io.File)41 CommandTarget (org.glassfish.config.support.CommandTarget)30 Target (org.glassfish.internal.api.Target)30 Map (java.util.Map)27 Server (com.sun.enterprise.config.serverbeans.Server)25 List (java.util.List)25 ServiceLocator (org.glassfish.hk2.api.ServiceLocator)24 CommandRunner (org.glassfish.api.admin.CommandRunner)23 ExtendedDeploymentContext (org.glassfish.internal.deployment.ExtendedDeploymentContext)23 DeployCommandParameters (org.glassfish.api.deployment.DeployCommandParameters)19