mirror of https://github.com/apache/druid.git
Merge pull request #311 from metamx/versions
Add versions to static page
This commit is contained in:
commit
8aba4ad3d2
|
@ -53,4 +53,20 @@
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||||
|
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -168,7 +168,15 @@
|
||||||
</goals>
|
</goals>
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||||
|
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -104,6 +104,14 @@
|
||||||
</goals>
|
</goals>
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||||
|
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
|
@ -71,4 +71,20 @@
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||||
|
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -101,6 +101,17 @@
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||||
|
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<artifactId>maven-shade-plugin</artifactId>
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
<executions>
|
<executions>
|
||||||
|
|
|
@ -160,4 +160,20 @@
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||||
|
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -116,4 +116,20 @@
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||||
|
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -55,4 +55,19 @@
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||||
|
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
|
3
pom.xml
3
pom.xml
|
@ -41,6 +41,7 @@
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<metamx.java-util.version>0.25.0</metamx.java-util.version>
|
<metamx.java-util.version>0.25.0</metamx.java-util.version>
|
||||||
<apache.curator.version>2.1.0-incubating</apache.curator.version>
|
<apache.curator.version>2.1.0-incubating</apache.curator.version>
|
||||||
|
<druid.api.version>0.1.3</druid.api.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
|
@ -65,7 +66,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.druid</groupId>
|
<groupId>io.druid</groupId>
|
||||||
<artifactId>druid-api</artifactId>
|
<artifactId>druid-api</artifactId>
|
||||||
<version>0.1.3</version>
|
<version>${druid.api.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Compile Scope -->
|
<!-- Compile Scope -->
|
||||||
|
|
|
@ -133,6 +133,14 @@
|
||||||
</goals>
|
</goals>
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||||
|
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
|
@ -66,4 +66,19 @@
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||||
|
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -220,8 +220,6 @@
|
||||||
<artifactId>caliper</artifactId>
|
<artifactId>caliper</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
@ -235,6 +233,14 @@
|
||||||
</goals>
|
</goals>
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||||
|
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.antlr</groupId>
|
<groupId>org.antlr</groupId>
|
||||||
|
|
|
@ -20,10 +20,16 @@
|
||||||
package io.druid.server;
|
package io.druid.server;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.google.inject.Injector;
|
||||||
|
import io.druid.initialization.DruidModule;
|
||||||
|
import io.druid.initialization.Initialization;
|
||||||
|
import io.druid.server.initialization.ExtensionsConfig;
|
||||||
|
|
||||||
import javax.ws.rs.GET;
|
import javax.ws.rs.GET;
|
||||||
import javax.ws.rs.Path;
|
import javax.ws.rs.Path;
|
||||||
import javax.ws.rs.Produces;
|
import javax.ws.rs.Produces;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
|
@ -33,20 +39,60 @@ public class StatusResource
|
||||||
@GET
|
@GET
|
||||||
@Produces("application/json")
|
@Produces("application/json")
|
||||||
public Status doGet()
|
public Status doGet()
|
||||||
|
{
|
||||||
|
return getStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Status getStatus()
|
||||||
{
|
{
|
||||||
return new Status(
|
return new Status(
|
||||||
StatusResource.class.getPackage().getImplementationVersion(),
|
Initialization.class.getPackage().getImplementationVersion(),
|
||||||
|
getExtensionVersions(),
|
||||||
new Memory(Runtime.getRuntime())
|
new Memory(Runtime.getRuntime())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Status {
|
/**
|
||||||
|
* Load the unique extensions and return their implementation-versions
|
||||||
|
*
|
||||||
|
* @return map of extensions loaded with their respective implementation versions.
|
||||||
|
*/
|
||||||
|
private static List<ModuleVersion> getExtensionVersions()
|
||||||
|
{
|
||||||
|
final Injector injector = Initialization.makeStartupInjector();
|
||||||
|
final ExtensionsConfig config = injector.getInstance(ExtensionsConfig.class);
|
||||||
|
final List<DruidModule> druidModules = Initialization.getFromExtensions(config, DruidModule.class);
|
||||||
|
|
||||||
|
List<ModuleVersion> moduleVersions = new ArrayList<>();
|
||||||
|
for (DruidModule module : druidModules) {
|
||||||
|
|
||||||
|
String artifact = module.getClass().getPackage().getImplementationTitle();
|
||||||
|
String version = module.getClass().getPackage().getImplementationVersion();
|
||||||
|
|
||||||
|
ModuleVersion moduleVersion;
|
||||||
|
if (artifact != null) {
|
||||||
|
moduleVersion = new ModuleVersion(module.getClass().getCanonicalName(), artifact, version);
|
||||||
|
} else {
|
||||||
|
moduleVersion = new ModuleVersion(module.getClass().getCanonicalName());
|
||||||
|
}
|
||||||
|
|
||||||
|
moduleVersions.add(moduleVersion);
|
||||||
|
}
|
||||||
|
return moduleVersions;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Status
|
||||||
|
{
|
||||||
final String version;
|
final String version;
|
||||||
|
final List<ModuleVersion> modules;
|
||||||
final Memory memory;
|
final Memory memory;
|
||||||
|
|
||||||
public Status(String version, Memory memory)
|
public Status(
|
||||||
|
String version, List<ModuleVersion> modules, Memory memory
|
||||||
|
)
|
||||||
{
|
{
|
||||||
this.version = version;
|
this.version = version;
|
||||||
|
this.modules = modules;
|
||||||
this.memory = memory;
|
this.memory = memory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,20 +102,94 @@ public class StatusResource
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JsonProperty
|
||||||
|
public List<ModuleVersion> getModules()
|
||||||
|
{
|
||||||
|
return modules;
|
||||||
|
}
|
||||||
|
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
public Memory getMemory()
|
public Memory getMemory()
|
||||||
{
|
{
|
||||||
return memory;
|
return memory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
final String NL = "\n";
|
||||||
|
StringBuilder output = new StringBuilder();
|
||||||
|
output.append(String.format("Druid version - %s", version)).append(NL).append(NL);
|
||||||
|
|
||||||
|
if (modules.size() > 0) {
|
||||||
|
output.append("Registered Druid Modules").append(NL);
|
||||||
|
} else {
|
||||||
|
output.append("No Druid Modules loaded !");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (ModuleVersion moduleVersion : modules) {
|
||||||
|
output.append(moduleVersion).append(NL);
|
||||||
|
}
|
||||||
|
return output.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Memory {
|
public static class ModuleVersion
|
||||||
|
{
|
||||||
|
final String name;
|
||||||
|
final String artifact;
|
||||||
|
final String version;
|
||||||
|
|
||||||
|
public ModuleVersion(String name)
|
||||||
|
{
|
||||||
|
this(name, "", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
public ModuleVersion(String name, String artifact, String version)
|
||||||
|
{
|
||||||
|
this.name = name;
|
||||||
|
this.artifact = artifact;
|
||||||
|
this.version = version;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty
|
||||||
|
public String getArtifact()
|
||||||
|
{
|
||||||
|
return artifact;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty
|
||||||
|
public String getVersion()
|
||||||
|
{
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
if (artifact.isEmpty()) {
|
||||||
|
return String.format(" - %s ", name);
|
||||||
|
} else {
|
||||||
|
return String.format(" - %s (%s-%s)", name, artifact, version);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Memory
|
||||||
|
{
|
||||||
final long maxMemory;
|
final long maxMemory;
|
||||||
final long totalMemory;
|
final long totalMemory;
|
||||||
final long freeMemory;
|
final long freeMemory;
|
||||||
final long usedMemory;
|
final long usedMemory;
|
||||||
|
|
||||||
public Memory(Runtime runtime) {
|
public Memory(Runtime runtime)
|
||||||
|
{
|
||||||
maxMemory = runtime.maxMemory();
|
maxMemory = runtime.maxMemory();
|
||||||
totalMemory = runtime.totalMemory();
|
totalMemory = runtime.totalMemory();
|
||||||
freeMemory = runtime.freeMemory();
|
freeMemory = runtime.freeMemory();
|
||||||
|
@ -99,5 +219,6 @@ public class StatusResource
|
||||||
{
|
{
|
||||||
return usedMemory;
|
return usedMemory;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,9 @@
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
<div>
|
||||||
|
<h2>Druid Version: ${pom.version} Druid API Version: ${druid.api.version}</h2>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<a href="view.html">View Information about the Cluster</a>
|
<a href="view.html">View Information about the Cluster</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -51,8 +51,20 @@
|
||||||
<version>${project.parent.version}</version>
|
<version>${project.parent.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||||
|
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-shade-plugin</artifactId>
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
|
|
@ -27,6 +27,8 @@ import io.druid.cli.convert.ConvertProperties;
|
||||||
import io.druid.cli.validate.DruidJsonValidator;
|
import io.druid.cli.validate.DruidJsonValidator;
|
||||||
import io.druid.initialization.Initialization;
|
import io.druid.initialization.Initialization;
|
||||||
import io.druid.server.initialization.ExtensionsConfig;
|
import io.druid.server.initialization.ExtensionsConfig;
|
||||||
|
import org.apache.log4j.Level;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -41,7 +43,7 @@ public class Main
|
||||||
|
|
||||||
builder.withDescription("Druid command-line runner.")
|
builder.withDescription("Druid command-line runner.")
|
||||||
.withDefaultCommand(Help.class)
|
.withDefaultCommand(Help.class)
|
||||||
.withCommands(Help.class);
|
.withCommands(Help.class, Version.class);
|
||||||
|
|
||||||
builder.withGroup("server")
|
builder.withGroup("server")
|
||||||
.withDescription("Run one of the Druid server types.")
|
.withDescription("Run one of the Druid server types.")
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
/*
|
||||||
|
* Druid - a distributed column store.
|
||||||
|
* Copyright (C) 2012, 2013 Metamarkets Group Inc.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.druid.cli;
|
||||||
|
|
||||||
|
import io.airlift.command.Command;
|
||||||
|
import io.druid.server.StatusResource;
|
||||||
|
|
||||||
|
@Command(
|
||||||
|
name = "version",
|
||||||
|
description = "Returns Druid version information"
|
||||||
|
)
|
||||||
|
public class Version implements Runnable
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
System.out.println(StatusResource.getStatus());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue