Github user merrimanr commented on a diff in the pull request:

    https://github.com/apache/incubator-metron/pull/316#discussion_r102076209
  
    --- 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 --
    
    Done


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to