Search in sources :

Example 36 with Processor

use of io.fabric8.watcher.Processor in project fabric8 by jboss-fuse.

the class CamelBackwardsCompatibleSupport method dumpRoutesStatsAsXml.

/**
 * This operation is only available from Apache Camel 2.10, and Fuse Camel 2.9 onwards.
 */
public static String dumpRoutesStatsAsXml(CamelFacade facade, String contextId) throws Exception {
    StringBuilder sb = new StringBuilder();
    sb.append("<camelContextStat").append(String.format(" id=\"%s\"", contextId)).append(">\n");
    // gather all the routes for this CamelContext, which requires JMX
    List<CamelRouteMBean> routes = facade.getRoutes(contextId);
    List<CamelProcessorMBean> processors = facade.getProcessors(contextId);
    // loop the routes, and append the processor stats if needed
    sb.append("  <routeStats>\n");
    for (CamelRouteMBean route : routes) {
        sb.append("    <routeStat").append(String.format(" id=\"%s\"", route.getRouteId()));
        sb.append(" ").append(dumpStatsAsXmlAttributes(route)).append(">\n");
        // add processor details if needed
        sb.append("      <processorStats>\n");
        for (CamelProcessorMBean processor : processors) {
            // the processor must belong to this route
            if (route.getRouteId().equals(processor.getRouteId())) {
                sb.append("        <processorStat").append(String.format(" id=\"%s\"", processor.getProcessorId()));
                sb.append(" ").append(dumpStatsAsXmlAttributes(processor)).append("/>\n");
            }
        }
        sb.append("      </processorStats>\n");
        sb.append("    </routeStat>\n");
    }
    sb.append("  </routeStats>\n");
    sb.append("</camelContextStat>");
    return sb.toString();
}
Also used : CamelProcessorMBean(io.fabric8.camel.facade.mbean.CamelProcessorMBean) CamelRouteMBean(io.fabric8.camel.facade.mbean.CamelRouteMBean)

Example 37 with Processor

use of io.fabric8.watcher.Processor in project fabric8 by fabric8io.

the class SessionListener method enhance.

private KubernetesList enhance(final Session session, Configuration configuration, KubernetesList kubernetesList) {
    if (configuration == null || configuration.getProperties() == null || !configuration.getProperties().containsKey(Constants.KUBERNETES_MODEL_PROCESSOR_CLASS)) {
        return kubernetesList;
    }
    String processorClassName = configuration.getProperties().get(Constants.KUBERNETES_MODEL_PROCESSOR_CLASS);
    try {
        final Object instance = SessionListener.class.getClassLoader().loadClass(processorClassName).newInstance();
        KubernetesListBuilder builder = new KubernetesListBuilder(kubernetesList);
        ((Visitable) builder).accept(new Visitor() {

            @Override
            public void visit(Object o) {
                for (Method m : findMethods(instance, o.getClass())) {
                    Named named = m.getAnnotation(Named.class);
                    if (named != null && !Strings.isNullOrBlank(named.value())) {
                        String objectName = o instanceof ObjectMeta ? getName((ObjectMeta) o) : getName((HasMetadata) o);
                        // If a name has been explicitly specified check if there is a match
                        if (!named.value().equals(objectName)) {
                            session.getLogger().warn("Named method:" + m.getName() + " with name:" + named.value() + " doesn't match: " + objectName + ", ignoring");
                            return;
                        }
                    }
                    try {
                        m.invoke(instance, o);
                    } catch (IllegalAccessException e) {
                    } catch (InvocationTargetException e) {
                        session.getLogger().error("Error invoking visitor method:" + m.getName() + " on:" + instance + "with argument:" + o);
                    }
                }
            }
        });
        return builder.build();
    } catch (Exception e) {
        session.getLogger().warn("Failed to load processor class:" + processorClassName + ". Ignoring");
        return kubernetesList;
    }
}
Also used : Named(javax.inject.Named) Visitor(io.fabric8.kubernetes.api.builder.Visitor) Visitable(io.fabric8.kubernetes.api.builder.Visitable) Util.readAsString(io.fabric8.arquillian.utils.Util.readAsString) Method(java.lang.reflect.Method) InvocationTargetException(java.lang.reflect.InvocationTargetException) MultiException(io.fabric8.utils.MultiException) InvocationTargetException(java.lang.reflect.InvocationTargetException) IOException(java.io.IOException)

Aggregations

Exchange (org.apache.camel.Exchange)33 Processor (org.apache.camel.Processor)33 Test (org.junit.Test)33 HashMap (java.util.HashMap)27 Map (java.util.Map)27 ArrayList (java.util.ArrayList)7 List (java.util.List)6 ReplicationController (io.fabric8.kubernetes.api.model.ReplicationController)5 Namespace (io.fabric8.kubernetes.api.model.Namespace)4 Service (io.fabric8.kubernetes.api.model.Service)4 ConfigMap (io.fabric8.kubernetes.api.model.ConfigMap)3 Container (io.fabric8.kubernetes.api.model.Container)3 ContainerPort (io.fabric8.kubernetes.api.model.ContainerPort)3 IntOrString (io.fabric8.kubernetes.api.model.IntOrString)3 PodSpec (io.fabric8.kubernetes.api.model.PodSpec)3 PodTemplateSpec (io.fabric8.kubernetes.api.model.PodTemplateSpec)3 PodTemplateSpecBuilder (io.fabric8.kubernetes.api.model.PodTemplateSpecBuilder)3 ReplicationControllerSpec (io.fabric8.kubernetes.api.model.ReplicationControllerSpec)3 Secret (io.fabric8.kubernetes.api.model.Secret)3 ObjectMeta (io.fabric8.kubernetes.api.model.ObjectMeta)2