Search in sources :

Example 16 with Server

use of io.fabric8.insight.metrics.model.Server in project fabric8 by jboss-fuse.

the class DetectingGateway method destroy.

public void destroy() {
    server.close();
    for (SocketWrapper socket : new ArrayList<>(socketsConnecting)) {
        handleConnectFailure(socket, null);
    }
    for (ConnectedSocketInfo socket : new ArrayList<>(socketsConnected)) {
        handleShutdown(socket);
    }
    server = null;
    connectHandler.setGateway(null);
    connectHandler = null;
}
Also used : SocketWrapper(io.fabric8.gateway.SocketWrapper) SslSocketWrapper(io.fabric8.gateway.handlers.detecting.protocol.ssl.SslSocketWrapper)

Example 17 with Server

use of io.fabric8.insight.metrics.model.Server in project fabric8 by jboss-fuse.

the class Java2SwaggerJsonMojo method execute.

public void execute() throws MojoExecutionException {
    List<Class<?>> resourceClasses = loadResourceClasses();
    List<Object> resourceObjects = new ArrayList<Object>();
    for (Class<?> resourceClass : resourceClasses) {
        try {
            resourceObjects.add(resourceClass.newInstance());
        } catch (InstantiationException e) {
            throw new MojoExecutionException(e.getMessage(), e);
        } catch (IllegalAccessException e) {
            throw new MojoExecutionException(e.getMessage(), e);
        }
    }
    Thread.currentThread().setContextClassLoader(getClassLoader());
    List<Feature> features = new ArrayList<Feature>();
    features.add(new SwaggerFeature());
    JAXRSServerFactoryBean serverFacBean = new JAXRSServerFactoryBean();
    serverFacBean.setAddress(address);
    serverFacBean.setServiceBeans(resourceObjects);
    serverFacBean.setFeatures(features);
    Server server = serverFacBean.create();
    InputStream in = null;
    try {
        String res = "";
        for (Class<?> resourceClass : resourceClasses) {
            com.wordnik.swagger.annotations.Api api = resourceClass.getAnnotation(com.wordnik.swagger.annotations.Api.class);
            if (api != null) {
                String apiPath = api.value();
                String serverAddress = server.getEndpoint().getEndpointInfo().getAddress();
                String apiDocs = serverAddress + "/api-docs";
                URL url = new URL(apiDocs + apiPath);
                in = url.openStream();
                res = res + getStringFromInputStream(in);
            }
        }
        generateJson(resourceClasses, res);
    } catch (Exception e) {
        throw new MojoExecutionException(e.getMessage(), e);
    } finally {
        server.stop();
    }
}
Also used : MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) Server(org.apache.cxf.endpoint.Server) InputStream(java.io.InputStream) ArrayList(java.util.ArrayList) JAXRSServerFactoryBean(org.apache.cxf.jaxrs.JAXRSServerFactoryBean) SwaggerFeature(io.fabric8.cxf.endpoint.SwaggerFeature) Feature(org.apache.cxf.feature.Feature) URL(java.net.URL) IOException(java.io.IOException) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) SwaggerFeature(io.fabric8.cxf.endpoint.SwaggerFeature)

Example 18 with Server

use of io.fabric8.insight.metrics.model.Server in project fabric8 by jboss-fuse.

the class FabricServiceImpl method getGitUrl.

@Override
public String getGitUrl() {
    assertValid();
    String gitServers = ZkPath.GIT.getPath();
    try {
        CuratorFramework curatorFramework = curator.get();
        if (curatorFramework != null) {
            List<String> servers = getChildrenSafe(curatorFramework, gitServers);
            for (String server : servers) {
                String serverPath = gitServers + "/" + server;
                String answer = getFirstService(serverPath);
                if (!Strings.isNullOrEmpty(answer)) {
                    return answer;
                }
            }
        }
    } catch (Exception e) {
        // On exception just return uri.
        LOGGER.warn("Failed to find Git URL " + gitServers + ". " + e, e);
    }
    return null;
}
Also used : CuratorFramework(org.apache.curator.framework.CuratorFramework) ProfileDependencyException(io.fabric8.api.ProfileDependencyException) EncryptionOperationNotPossibleException(org.jasypt.exceptions.EncryptionOperationNotPossibleException) FabricException(io.fabric8.api.FabricException) IOException(java.io.IOException)

Example 19 with Server

use of io.fabric8.insight.metrics.model.Server in project fabric8 by jboss-fuse.

the class MXBeansProvider method activateInternal.

private void activateInternal() {
    MBeanServer server = mbeanServer.get();
    try {
        ProfileManagement profileMXBean = new ProfileManagementImpl();
        server.registerMBean(new StandardMBean(profileMXBean, ProfileManagement.class, true), new ObjectName(ProfileManagement.OBJECT_NAME));
    } catch (JMException ex) {
        throw new IllegalStateException(ex);
    }
}
Also used : ProfileManagement(io.fabric8.api.mxbean.ProfileManagement) StandardMBean(javax.management.StandardMBean) JMException(javax.management.JMException) MBeanServer(javax.management.MBeanServer) ObjectName(javax.management.ObjectName)

Example 20 with Server

use of io.fabric8.insight.metrics.model.Server in project fabric8 by jboss-fuse.

the class ContainerProviderUtils method buildInstallAndStartScript.

/**
 * Creates a shell script for installing and starting up a container.
 *
 * @param options
 * @return
 * @throws MalformedURLException
 */
public static String buildInstallAndStartScript(String name, CreateRemoteContainerOptions options) throws MalformedURLException, URISyntaxException {
    String distFilename = String.format(DISTNAME_PATTERN, "karaf", FabricConstants.FABRIC_VERSION);
    String systemDistPath = String.format(SYSTEM_DIST, "karaf", FabricConstants.FABRIC_VERSION);
    StringBuilder sb = new StringBuilder();
    sb.append("#!/bin/bash").append("\n");
    if (logger.isTraceEnabled()) {
        sb.append("set -x ").append("\n");
        sb.append("export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }' ").append("\n");
    }
    // Export environmental variables
    HashMap<String, String> environmentalVariables = new HashMap<>();
    if (options.getEnvironmentalVariables() != null) {
        environmentalVariables.putAll(options.getEnvironmentalVariables());
    }
    for (Map.Entry<String, String> entry : environmentalVariables.entrySet()) {
        sb.append("export ").append(entry.getKey()).append("=\"").append(entry.getValue()).append("\"").append("\n");
    }
    sb.append(RUN_FUNCTION).append("\n");
    sb.append(SUDO_N_FUNCTION).append("\n");
    sb.append(DOWNLOAD_FUNCTION).append("\n");
    sb.append(MAVEN_DOWNLOAD_FUNCTION).append("\n");
    sb.append(UPDATE_PKGS).append("\n");
    sb.append(INSTALL_CURL).append("\n");
    sb.append(INSTALL_UNZIP).append("\n");
    sb.append(INSTALL_JDK).append("\n");
    sb.append(VALIDATE_REQUIREMENTS).append("\n");
    sb.append(EXIT_IF_NOT_EXISTS).append("\n");
    sb.append(COPY_NODE_METADATA).append("\n");
    sb.append(KARAF_CHECK).append("\n");
    sb.append(REPLACE_IN_FILE).append("\n");
    sb.append(REPLACE_PROPERTY_VALUE).append("\n");
    sb.append(UNCOMMENT_LINE).append("\n");
    sb.append(CONFIGURE_HOSTNAMES).append("\n");
    sb.append(FIND_FREE_PORT).append("\n");
    sb.append(WAIT_FOR_PORT).append("\n");
    sb.append(EXTRACT_ZIP).append("\n");
    sb.append(GENERATE_SSH_KEYS).append("\n");
    sb.append("run mkdir -p ").append(options.getPath()).append("\n");
    sb.append("run cd ").append(options.getPath()).append("\n");
    sb.append("run mkdir -p ").append(name).append("\n");
    sb.append("run cd ").append(name).append("\n");
    // We need admin access to be able to install curl & java.
    if (options.isAdminAccess()) {
        // This is not really needed.
        // Its just here as a silly workaround for some cases which fail to get the first thing installed.
        sb.append("update_pkgs").append("\n");
        sb.append("install_openjdk").append("\n");
        sb.append("install_curl").append("\n");
        sb.append("install_unzip").append("\n");
    }
    sb.append("validate_requirements").append("\n");
    List<String> fallbackRepositories = new ArrayList<String>();
    List<String> optionsRepos = options.getFallbackRepositories();
    if (optionsRepos != null) {
        fallbackRepositories.addAll(optionsRepos);
    }
    extractZipIntoDirectory(sb, options.getProxyUri(), "io.fabric8", "fabric8-karaf", FabricConstants.FABRIC_VERSION, fallbackRepositories);
    sb.append("run cd `").append(FIRST_FABRIC_DIRECTORY).append("`\n");
    sb.append("run mkdir -p ").append(systemDistPath).append("\n");
    sb.append("run cp ../").append(distFilename).append(" ").append(systemDistPath).append("/\n");
    sb.append("run rm ../").append(distFilename).append("\n");
    sb.append("run chmod +x bin/*").append("\n");
    List<String> lines = new ArrayList<String>();
    String globalResolver = options.getResolver() != null ? options.getResolver() : ZkDefs.DEFAULT_RESOLVER;
    lines.add(ZkDefs.GLOBAL_RESOLVER_PROPERTY + "=" + globalResolver);
    if (options.getBindAddress() != null && !options.getBindAddress().isEmpty()) {
        lines.add(ZkDefs.BIND_ADDRESS + "=" + options.getBindAddress());
    }
    if (options.getManualIp() != null && !options.getManualIp().isEmpty()) {
        lines.add(ZkDefs.MANUAL_IP + "=" + options.getManualIp());
    }
    appendFile(sb, "etc/system.properties", lines);
    replacePropertyValue(sb, "etc/system.properties", "karaf.name", name);
    String dataStoreFile = "etc/" + Constants.DATASTORE_PID + ".cfg";
    for (Map.Entry<String, String> entry : options.getDataStoreProperties().entrySet()) {
        String key = entry.getKey();
        String value = entry.getValue();
        replacePropertyValue(sb, dataStoreFile, key, value);
        uncomment_line(sb, dataStoreFile, key);
    }
    // Apply port range
    sb.append("BIND_ADDRESS=").append(options.getBindAddress() != null && !options.getBindAddress().isEmpty() ? options.getBindAddress() : "0.0.0.0").append("\n");
    sb.append("SSH_PORT=").append("\"").append("`find_free_port ").append(Ports.mapPortToRange(DEFAULT_SSH_PORT, options.getMinimumPort(), options.getMaximumPort())).append(" ").append(options.getMaximumPort()).append("`\"").append("\n");
    sb.append("RMI_REGISTRY_PORT=").append("\"").append("`find_free_port ").append(Ports.mapPortToRange(DEFAULT_RMI_REGISTRY_PORT, options.getMinimumPort(), options.getMaximumPort())).append(" ").append(options.getMaximumPort()).append("`\"").append("\n");
    sb.append("RMI_SERVER_PORT=").append("\"").append("`find_free_port ").append(Ports.mapPortToRange(DEFAULT_RMI_SERVER_PORT, options.getMinimumPort(), options.getMaximumPort())).append(" ").append(options.getMaximumPort()).append("`\"").append("\n");
    sb.append("JMX_SERVER_URL=\"").append("service:jmx:rmi:\\/\\/${BIND_ADDRESS}:${RMI_SERVER_PORT}\\/jndi\\/rmi:\\/\\/${BIND_ADDRESS}:${RMI_REGISTRY_PORT}\\/karaf-").append(name).append("\"\n");
    sb.append("HTTP_PORT=").append("\"").append("`find_free_port ").append(Ports.mapPortToRange(DEFAULT_HTTP_PORT, options.getMinimumPort(), options.getMaximumPort())).append(" ").append(options.getMaximumPort()).append("`\"").append("\n");
    replacePropertyValue(sb, "etc/org.apache.karaf.shell.cfg", "sshPort", "$SSH_PORT");
    replacePropertyValue(sb, "etc/org.apache.karaf.shell.cfg", "sshHost", "$BIND_ADDRESS");
    replacePropertyValue(sb, "etc/org.apache.karaf.management.cfg", "rmiRegistryPort", "$RMI_REGISTRY_PORT");
    replacePropertyValue(sb, "etc/org.apache.karaf.management.cfg", "rmiServerPort", "$RMI_SERVER_PORT");
    replacePropertyValue(sb, "etc/org.apache.karaf.management.cfg", "rmiServerHost", "$BIND_ADDRESS");
    replacePropertyValue(sb, "etc/org.apache.karaf.management.cfg", "rmiRegistryHost", "$BIND_ADDRESS");
    // ENTESB-2733: do not change serviceUrl, let's leave it with placeholders
    // replacePropertyValue(sb, "etc/org.apache.karaf.management.cfg", "serviceUrl", "$JMX_SERVER_URL");
    replacePropertyValue(sb, "etc/org.ops4j.pax.web.cfg", "org.osgi.service.http.port", "$HTTP_PORT");
    replaceLineInFile(sb, "etc/jetty.xml", String.valueOf(DEFAULT_HTTP_PORT), "$HTTP_PORT");
    appendFile(sb, "etc/system.properties", Arrays.asList(ZkDefs.MINIMUM_PORT + "=" + options.getMinimumPort()));
    appendFile(sb, "etc/system.properties", Arrays.asList(ZkDefs.MAXIMUM_PORT + "=" + options.getMaximumPort()));
    appendFile(sb, "etc/system.properties", Arrays.asList("\n"));
    // Read all system properties
    for (Map.Entry<String, Properties> entry : options.getSystemProperties().entrySet()) {
        Properties sysprops = entry.getValue();
        for (Map.Entry syspropEntry : sysprops.entrySet()) {
            Object type = syspropEntry.getKey();
            Object value = syspropEntry.getValue();
            appendFile(sb, "etc/system.properties", Arrays.asList(type + "=" + value));
        }
    }
    // TODO: Be simple & move all of the code below under system properties MAP.
    if (options.getPreferredAddress() != null) {
        appendFile(sb, "etc/system.properties", Arrays.asList(HostUtils.PREFERED_ADDRESS_PROPERTY_NAME + "=" + options.getPreferredAddress()));
    }
    String zkPasswordEncode = System.getProperty("zookeeper.password.encode", "true");
    if (options.isEnsembleServer()) {
        appendFile(sb, "etc/system.properties", Arrays.asList("zookeeper.password = " + options.getZookeeperPassword()));
        appendFile(sb, "etc/system.properties", Arrays.asList("zookeeper.password.encode = " + zkPasswordEncode));
        appendFile(sb, "etc/system.properties", Arrays.asList(CreateEnsembleOptions.ENSEMBLE_AUTOSTART + "=true"));
        appendFile(sb, "etc/system.properties", Arrays.asList(CreateEnsembleOptions.AGENT_AUTOSTART + "=true"));
        appendFile(sb, "etc/system.properties", Arrays.asList(CreateEnsembleOptions.PROFILES_AUTOIMPORT_PATH + "=${runtime.home}/fabric/import/"));
        if (options.getUsers() != null) {
            appendFile(sb, "etc/users.properties", Arrays.asList("\n"));
            for (Map.Entry<String, String> entry : options.getUsers().entrySet()) {
                appendFile(sb, "etc/users.properties", Arrays.asList(entry.getKey() + "=" + entry.getValue()));
            }
        }
    } else if (options.getZookeeperUrl() != null) {
        appendFile(sb, "etc/system.properties", Arrays.asList("zookeeper.url = " + options.getZookeeperUrl()));
        appendFile(sb, "etc/system.properties", Arrays.asList("zookeeper.password = " + options.getZookeeperPassword()));
        appendFile(sb, "etc/system.properties", Arrays.asList("zookeeper.password.encode = " + zkPasswordEncode));
        appendFile(sb, "etc/system.properties", Arrays.asList(CreateEnsembleOptions.AGENT_AUTOSTART + "=true"));
        appendToLineInFile(sb, "etc/org.apache.karaf.features.cfg", "featuresBoot=", "fabric-agent,fabric-git,");
    }
    // Add the proxyURI to the list of repositories
    if (options.getProxyUri() != null) {
        appendToLineInFile(sb, "etc/org.ops4j.pax.url.mvn.cfg", "repositories=", options.getProxyUri().toString() + ",");
    }
    // Just for ensemble servers we want to copy their creation metadata for import.
    if (options.isEnsembleServer()) {
        CreateContainerMetadata metadata = options.getMetadataMap().get(name);
        if (metadata != null) {
            byte[] metadataPayload = ObjectUtils.toBytes(metadata);
            if (metadataPayload != null && metadataPayload.length > 0) {
                sb.append("copy_node_metadata ").append(name).append(" ").append(new String(Base64Encoder.encode(metadataPayload))).append("\n");
            }
        }
    }
    sb.append("generate_ssh_keys").append("\n");
    sb.append("configure_hostnames").append(" ").append(options.getHostNameContext()).append("\n");
    String jvmOptions = options.getJvmOpts();
    if (jvmOptions == null) {
        jvmOptions = "-XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass";
    } else if (!jvmOptions.contains("-XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass")) {
        jvmOptions = jvmOptions + " -XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass";
    }
    if (!jvmOptions.contains("-server")) {
        jvmOptions = jvmOptions + " -server";
    }
    environmentalVariables.put("JAVA_OPTS", jvmOptions);
    ArrayList<String> setenv = new ArrayList<String>();
    for (Map.Entry<String, String> entry : environmentalVariables.entrySet()) {
        setenv.add("export " + entry.getKey() + "=\"" + entry.getValue() + "\"\n");
    }
    writeFile(sb, "bin/setenv", setenv);
    sb.append("nohup bin/start &").append("\n");
    sb.append("karaf_check `pwd`").append("\n");
    sb.append("wait_for_port $SSH_PORT").append("\n");
    sb.append("wait_for_port $RMI_REGISTRY_PORT").append("\n");
    return sb.toString();
}
Also used : HashMap(java.util.HashMap) CreateContainerMetadata(io.fabric8.api.CreateContainerMetadata) ArrayList(java.util.ArrayList) Properties(java.util.Properties) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

HashMap (java.util.HashMap)20 Test (org.junit.Test)19 IOException (java.io.IOException)18 File (java.io.File)9 Map (java.util.Map)9 ClientInvokerImpl (io.fabric8.dosgi.tcp.ClientInvokerImpl)8 ServerInvokerImpl (io.fabric8.dosgi.tcp.ServerInvokerImpl)8 ArrayList (java.util.ArrayList)8 Profile (io.fabric8.api.Profile)7 ServerInvoker (io.fabric8.dosgi.io.ServerInvoker)7 InvocationHandler (java.lang.reflect.InvocationHandler)7 DispatchQueue (org.fusesource.hawtdispatch.DispatchQueue)7 Container (io.fabric8.api.Container)6 KubernetesClient (io.fabric8.kubernetes.client.KubernetesClient)6 Version (io.fabric8.api.Version)5 CuratorFramework (org.apache.curator.framework.CuratorFramework)5 FabricException (io.fabric8.api.FabricException)4 RuntimeProperties (io.fabric8.api.RuntimeProperties)4 InputStream (java.io.InputStream)4 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)3