Search in sources :

Example 31 with Event

use of io.fabric8.kubernetes.api.model.Event in project fabric8 by jboss-fuse.

the class ExceptionMavenCoordsTest method testQueryOfLogMessages.

@Test
public void testQueryOfLogMessages() throws Exception {
    Logger testLog = LoggerFactory.getLogger("io.fabric8.insight.log.log4j.TestLogger");
    // now lets force an exception with a stack trace from camel...
    try {
        CamelContextHelper.getMandatoryEndpoint(null, null);
    } catch (Throwable e) {
        testLog.error("Expected exception for testing: " + e, e);
    }
    // now lets find the error
    LogResults results = logQuery.allLogResults();
    List<LogEvent> logEvents = Log4jTest.assertNotEmpty(results);
    LogEvent log = logEvents.get(0);
    assertNotNull("Should have a log event", log);
    List<String> list = Arrays.asList(log.getException());
    assertTrue("Should have more than 1 items in the stack trace but got: " + list, list.size() > 1);
    String first = list.get(1);
    LOG.info("First line: " + first);
    String expects = "[org.apache.camel:camel-core:";
    assertTrue("Should have camel coordinate '" + expects + "' but got " + first, first.indexOf(expects) > 0);
    for (String line : list) {
        LOG.info(line);
    }
}
Also used : LogResults(io.fabric8.insight.log.LogResults) LogEvent(io.fabric8.insight.log.LogEvent) Logger(org.slf4j.Logger) Test(org.junit.Test)

Example 32 with Event

use of io.fabric8.kubernetes.api.model.Event in project fabric8 by jboss-fuse.

the class LogQuery method getLogEventList.

public LogResults getLogEventList(int count, Predicate<PaxLoggingEvent> predicate) {
    LogResults answer = new LogResults();
    answer.setHost(getHostName());
    long from = Long.MAX_VALUE;
    long to = Long.MIN_VALUE;
    if (appender != null) {
        LruList events = appender.getEvents();
        if (events != null) {
            Iterable<PaxLoggingEvent> iterable = events.getElements();
            if (iterable != null) {
                int matched = 0;
                for (PaxLoggingEvent event : iterable) {
                    if (event != null) {
                        long timestamp = event.getTimeStamp();
                        if (timestamp > to) {
                            to = timestamp;
                        }
                        if (timestamp < from) {
                            from = timestamp;
                        }
                        if (predicate == null || predicate.matches(event)) {
                            answer.addEvent(Logs.newInstance(event));
                            matched += 1;
                            if (count > 0 && matched >= count) {
                                break;
                            }
                        }
                    }
                }
            }
        }
    } else {
        LOG.warn("No VmLogAppender available!");
    }
    answer.setFromTimestamp(from);
    answer.setToTimestamp(to);
    return answer;
}
Also used : PaxLoggingEvent(org.ops4j.pax.logging.spi.PaxLoggingEvent) LogResults(io.fabric8.insight.log.LogResults) LruList(org.apache.karaf.shell.log.LruList)

Example 33 with Event

use of io.fabric8.kubernetes.api.model.Event in project fabric8 by jboss-fuse.

the class OpenShiftDeployAgent method groupEvent.

@Override
public void groupEvent(Group<ControllerNode> group, GroupEvent event) {
    if (isValid()) {
        if (group.isMaster()) {
            LOGGER.info("OpenShiftDeployAgent is the master");
        } else {
            LOGGER.info("OpenShiftDeployAgent is not the master");
        }
        try {
            DataStore dataStore = null;
            if (fabricService != null) {
                dataStore = fabricService.get().adapt(DataStore.class);
            } else {
                LOGGER.warn("No fabricService yet!");
            }
            if (group.isMaster()) {
                ControllerNode state = createState();
                group.update(state);
            }
            if (dataStore != null) {
                if (group.isMaster()) {
                    dataStore.trackConfiguration(runnable);
                    onConfigurationChanged();
                } else {
                    dataStore.untrackConfiguration(runnable);
                }
            }
        } catch (IllegalStateException e) {
        // Ignore
        }
    }
}
Also used : DataStore(io.fabric8.api.DataStore)

Example 34 with Event

use of io.fabric8.kubernetes.api.model.Event in project fabric8 by jboss-fuse.

the class StompProtocol method snoopConnectionParameters.

@Override
public void snoopConnectionParameters(final SocketWrapper socket, Buffer received, final Handler<ConnectionParameters> handler) {
    StompProtocolDecoder h = new StompProtocolDecoder(this);
    h.errorHandler(new Handler<String>() {

        @Override
        public void handle(String error) {
            LOG.info("STOMP protocol decoding error: " + error);
            socket.close();
        }
    });
    h.codecHandler(new Handler<StompFrame>() {

        @Override
        public void handle(StompFrame event) {
            if (event.action().equals(CONNECT) || event.action().equals(STOMP)) {
                ConnectionParameters parameters = new ConnectionParameters();
                parameters.protocolVirtualHost = event.getHeaderAsString(HOST);
                parameters.protocolUser = event.getHeaderAsString(USERID);
                parameters.protocolClientId = event.getHeaderAsString(CLIENT_ID);
                handler.handle(parameters);
            } else {
                LOG.info("Expected a CONNECT or STOMP frame");
                socket.close();
            }
        }
    });
    socket.readStream().dataHandler(h);
    h.handle(received);
}
Also used : ConnectionParameters(io.fabric8.gateway.handlers.loadbalancer.ConnectionParameters)

Example 35 with Event

use of io.fabric8.kubernetes.api.model.Event in project fabric8 by jboss-fuse.

the class MqttProtocol method snoopConnectionParameters.

@Override
public void snoopConnectionParameters(final SocketWrapper socket, final Buffer received, final Handler<ConnectionParameters> handler) {
    final MqttProtocolDecoder h = new MqttProtocolDecoder(this);
    h.errorHandler(new Handler<String>() {

        @Override
        public void handle(String error) {
            LOG.info("STOMP protocol decoding error: " + error);
            socket.close();
        }
    });
    h.codecHandler(new Handler<MQTTFrame>() {

        @Override
        public void handle(MQTTFrame event) {
            try {
                if (event.messageType() == org.fusesource.mqtt.codec.CONNECT.TYPE) {
                    CONNECT connect = new CONNECT().decode(event);
                    ConnectionParameters parameters = new ConnectionParameters();
                    if (connect.clientId() != null) {
                        parameters.protocolClientId = connect.clientId().toString();
                    }
                    if (connect.userName() != null) {
                        parameters.protocolUser = connect.userName().toString();
                        // containing the virtual host info.
                        if (parameters.protocolUser.contains("/")) {
                            // Strip off the virtual host part of the username..
                            String[] parts = parameters.protocolUser.split("/", 2);
                            parameters.protocolVirtualHost = parts[0];
                            parameters.protocolUser = parts[1];
                            // Update the connect frame to strip out the virtual host from the username field...
                            connect.userName(new UTF8Buffer(parameters.protocolUser));
                            // re-write the received buffer /w  the updated connect frame
                            Buffer tail = received.getBuffer((int) h.getBytesDecoded(), received.length());
                            BufferSupport.setLength(received, 0);
                            append(received, connect.encode());
                            received.appendBuffer(tail);
                        }
                    }
                    handler.handle(parameters);
                } else {
                    LOG.info("Expected a CONNECT frame");
                    socket.close();
                }
            } catch (java.net.ProtocolException e) {
                LOG.info("Invalid MQTT frame: " + e, e);
                socket.close();
            }
        }
    });
    socket.readStream().dataHandler(h);
    h.handle(received);
}
Also used : Buffer(org.vertx.java.core.buffer.Buffer) UTF8Buffer(org.fusesource.hawtbuf.UTF8Buffer) UTF8Buffer(org.fusesource.hawtbuf.UTF8Buffer) ConnectionParameters(io.fabric8.gateway.handlers.loadbalancer.ConnectionParameters) CONNECT(org.fusesource.mqtt.codec.CONNECT) MQTTFrame(org.fusesource.mqtt.codec.MQTTFrame)

Aggregations

Test (org.junit.Test)14 IOException (java.io.IOException)11 ConfigMap (io.fabric8.kubernetes.api.model.ConfigMap)8 ArrayList (java.util.ArrayList)6 ConnectionParameters (io.fabric8.gateway.handlers.loadbalancer.ConnectionParameters)5 File (java.io.File)5 Map (java.util.Map)5 CuratorFramework (org.apache.curator.framework.CuratorFramework)5 Logger (org.slf4j.Logger)5 CountDownLatch (java.util.concurrent.CountDownLatch)4 LoggerFactory (org.slf4j.LoggerFactory)4 ServiceDTO (io.fabric8.gateway.ServiceDTO)3 FutureHandler (io.fabric8.gateway.handlers.detecting.FutureHandler)3 HttpGatewayHandler (io.fabric8.gateway.handlers.http.HttpGatewayHandler)3 LogEvent (io.fabric8.insight.log.LogEvent)3 KubernetesClientException (io.fabric8.kubernetes.client.KubernetesClientException)3 URI (java.net.URI)3 URISyntaxException (java.net.URISyntaxException)3 HashMap (java.util.HashMap)3 ChildData (org.apache.curator.framework.recipes.cache.ChildData)3