[
https://issues.apache.org/jira/browse/METRON-503?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15873745#comment-15873745
]
ASF GitHub Bot commented on METRON-503:
---------------------------------------
Github user jjmeyer0 commented on a diff in the pull request:
https://github.com/apache/incubator-metron/pull/316#discussion_r101922040
--- Diff: metron-interface/metron-rest/src/test/resources/README.vm ---
@@ -0,0 +1,142 @@
+#[[#]]# Metron REST
+
+This module provides a RESTful API for interacting with Metron.
+
+#[[##]]# Prerequisites
+
+* A running Metron cluster
+* Java 8 installed
+* Storm CLI and Metron topology scripts (start_parser_topology.sh,
start_enrichment_topology.sh, start_elasticsearch_topology.sh) installed
+
+#[[##]]# Installation
+1. Package the application with Maven:
+```
+mvn clean package
+```
+
+1. Untar the archive in the target directory. The directory structure
will look like:
+```
+bin
+ start_metron_rest.sh
+lib
+ metron-rest-$METRON_VERSION.jar
+```
+
+1. Create an `application.yml` file with the contents of
[application-docker.yml](src/main/resources/application-docker.yml).
Substitute the appropriate Metron service urls (Kafka, Zookeeper, Storm, etc)
in properties containing `${docker.host.address}` and update the
`spring.datasource.*` properties as needed (see the [Security](#security)
section for more details).
+
+1. Start the application with this command:
+```
+./bin/start_metron_rest.sh /path/to/application.yml
+```
+
+#[[##]]# Usage
+
+The exposed REST endpoints can be accessed with the Swagger UI at
http://host:port/swagger-ui.html#/. The default port is 8080 but can be
changed in application.yml by setting "server.port" to the desired port.
+
+#[[##]]# Security
+
+The metron-rest module uses [Spring
Security](http://projects.spring.io/spring-security/) for authentication and
stores user credentials in a relational database. The H2 database is
configured by default and is intended only for development purposes. The "dev"
profile can be used to automatically load test users:
+```
+./bin/start_metron_rest.sh /path/to/application.yml
--spring.profiles.active=dev
+```
+
+For [production
use](http://docs.spring.io/spring-boot/docs/1.4.1.RELEASE/reference/htmlsingle/#boot-features-connect-to-production-database),
a relational database should be configured. For example, configuring MySQL
would be done as follows:
+
+1. Create a MySQL user for the Metron REST application
(http://dev.mysql.com/doc/refman/5.7/en/adding-users.html).
+
+1. Connect to MySQL and create a Metron REST database:
+```
+CREATE DATABASE IF NOT EXISTS metronrest
+```
+
+1. Add users:
+```
+use metronrest;
+insert into users (username, password, enabled) values
('your_username','your_password',1);
+insert into authorities (username, authority) values ('your_username',
'ROLE_USER');
+```
+
+1. Replace the H2 connection information in the application.yml file with
MySQL connection information:
+```
+spring:
+ datasource:
+ driverClassName: com.mysql.jdbc.Driver
+ url: jdbc:mysql://mysql_host:3306/metronrest
+ username: metron_rest_user
+ password: metron_rest_password
+ platform: mysql
+```
+
+1. Add a dependency for the MySQL JDBC connector in the metron-rest
pom.xml:
+```
+<dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <version>${mysql.client.version}</version>
+</dependency>
+```
+
+1. Follow the steps in the [Installation](#installation) section
+
+#[[##]]# API
+
+Request and Response objects are JSON formatted. The JSON schemas are
available in the Swagger UI.
+
+| |
+| ---------- |
+#foreach( $restControllerInfo in $endpoints )
+| [ `$restControllerInfo.getMethod().toString()
$restControllerInfo.getPath()`](#$restControllerInfo.getMethod().toString().toLowerCase()-$restControllerInfo.getPath().toLowerCase().replaceAll("/",
""))|
+#end
+
+#foreach( $restControllerInfo in $endpoints )
+#[[###]]# `$restControllerInfo.getMethod().toString()
$restControllerInfo.getPath()`
+ * Description: $restControllerInfo.getDescription()
+#if($restControllerInfo.getParameterDescriptions().size() > 0)
+ * Input:
+#end
+#foreach( $parameterDescription in
$restControllerInfo.getParameterDescriptions().entrySet())
+ * $parameterDescription.getKey() - $parameterDescription.getValue()
+#end
+ * Returns:
+#foreach( $response in $restControllerInfo.getResponses())
+ * $response.getCode() - $response.getMessage()
+#end
+
+#end
+
+#[[##]]# Testing
+
+Profiles are includes for both the metron-docker and Quick Dev
environments.
+
+#[[###]]# metron-docker
+
+Start the [metron-docker](../../metron-docker) environment. Build the
metron-rest module and start it with the Spring Boot Maven plugin:
+```
+mvn clean package
+mvn spring-boot:run -Drun.profiles=docker,dev
+```
+The metron-rest application will be available at
http://localhost:8080/swagger-ui.html#/.
+
+#[[###]]# Quick Dev
+
+Start the [Quick Dev](../../metron-deployment/vagrant/quick-dev-platform)
environment. Build the metron-rest module and start it with the Spring Boot
Maven plugin:
+```
+mvn clean package
+mvn spring-boot:run -Drun.profiles=vagrant,dev
+```
+The metron-rest application will be available at
http://localhost:8080/swagger-ui.html#/.
+
+To run the application locally on the Quick Dev host, package the
application and scp the archive to node1:
+```
+mvn clean package
+scp ./target/metron-rest-$METRON_VERSION-archive.tar.gz root@node1:~/
+```
+Login to node1 and unarchive the metron-rest application. Start the
application on a different port to avoid conflicting with Ambari:
+```
+java -jar ./lib/metron-rest-0.3.0.jar --spring.profiles.active=vagrant,dev
--server.port=8082
--- End diff --
Can we add a `-<metron-version>` instead of givin the current version?
> Metron REST API
> ---------------
>
> Key: METRON-503
> URL: https://issues.apache.org/jira/browse/METRON-503
> Project: Metron
> Issue Type: New Feature
> Reporter: Ryan Merriman
> Assignee: Ryan Merriman
> Attachments: Metron REST API.docx
>
>
> As discussed on the dev list ([DISCUSS] Metron REST API Requirements), this
> Jira includes adding a REST API to Metron.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)