[metron] branch feature/METRON-2088-support-hdp-3.1 updated: METRON-2169 Upgrade to Kafka 2.0.0 and Storm 1.2.1 (merrimanr) closes apache/metron#1490

2019-08-27 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch feature/METRON-2088-support-hdp-3.1
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to 
refs/heads/feature/METRON-2088-support-hdp-3.1 by this push:
 new 15e5276  METRON-2169 Upgrade to Kafka 2.0.0 and Storm 1.2.1 
(merrimanr) closes apache/metron#1490
15e5276 is described below

commit 15e527601eee02d33f0a93388471e9525cbd927d
Author: merrimanr 
AuthorDate: Tue Aug 27 13:48:09 2019 -0500

METRON-2169 Upgrade to Kafka 2.0.0 and Storm 1.2.1 (merrimanr) closes 
apache/metron#1490
---
 dependencies_with_url.csv  |  32 +++
 metron-analytics/metron-maas-service/pom.xml   |   4 +
 metron-analytics/metron-profiler-repl/pom.xml  |   5 +
 metron-analytics/metron-profiler-spark/pom.xml |   6 ++
 metron-analytics/metron-profiler-storm/pom.xml |  30 +++---
 .../storm/integration/ProfilerIntegrationTest.java |  10 +-
 metron-contrib/metron-performance/pom.xml  |   2 +-
 .../ansible/roles/metron-builder/tasks/build.yml   |   2 +-
 .../ansible/roles/metron-builder/tasks/clean.yml   |   2 +-
 metron-interface/metron-rest/pom.xml   |  22 +++--
 .../org/apache/metron/rest/config/KafkaConfig.java |  63 ++---
 .../apache/metron/rest/config/ZookeeperConfig.java |   9 --
 .../metron/rest/service/impl/KafkaServiceImpl.java |  59 ++--
 .../org/apache/metron/rest/config/TestConfig.java  |  33 ---
 .../rest/service/impl/KafkaServiceImplTest.java|  69 +-
 metron-platform/metron-common/pom.xml  |   8 +-
 .../org/apache/metron/common/utils/KafkaUtils.java |   8 +-
 .../metron-elasticsearch-common/pom.xml|  21 +
 .../metron-enrichment-storm/pom.xml|  19 ++--
 metron-platform/metron-enrichment/pom.xml  |   6 ++
 metron-platform/metron-hbase-server/pom.xml|   6 ++
 .../metron-indexing/metron-indexing-common/pom.xml |   6 ++
 .../metron-indexing/metron-indexing-storm/pom.xml  |   5 +
 metron-platform/metron-integration-test/pom.xml|  15 ++-
 .../integration/components/KafkaComponent.java | 104 +++--
 metron-platform/metron-management/pom.xml  |  22 ++---
 .../metron-parsing/metron-parsers-common/pom.xml   |  21 ++---
 .../metron-parsing/metron-parsers/pom.xml  |  11 ++-
 .../metron/parsers/topology/ParserTopologyCLI.java |   2 +-
 metron-platform/metron-pcap-backend/pom.xml|  15 ---
 .../integration/PcapTopologyIntegrationTest.java   |   9 +-
 metron-platform/metron-pcap/pom.xml|  29 +-
 .../metron-solr/metron-solr-common/pom.xml |  19 +---
 .../metron-solr/metron-solr-storm/pom.xml  |  48 +-
 .../metron-storm-kafka-override/pom.xml|  24 -
 metron-platform/metron-storm-kafka/pom.xml |  24 -
 metron-platform/metron-test-utilities/pom.xml  |   2 +-
 .../metron-writer/metron-writer-common/pom.xml |   2 +-
 .../apache/metron/writer/kafka/KafkaWriter.java|  10 +-
 .../metron/writer/kafka/KafkaWriterTest.java   |   4 +-
 metron-stellar/stellar-zeppelin/pom.xml|   6 ++
 pom.xml|  26 ++
 42 files changed, 379 insertions(+), 441 deletions(-)

diff --git a/dependencies_with_url.csv b/dependencies_with_url.csv
index 0065f9b..9d7b0fa 100644
--- a/dependencies_with_url.csv
+++ b/dependencies_with_url.csv
@@ -5,6 +5,8 @@ org.objenesis:objenesis:jar:2.1:compile,Apache 
v2,http://objenesis.org/
 org.ow2.asm:asm:jar:4.1:compile,BSD,http://asm.ow2.org/
 org.ow2.asm:asm:jar:5.0.3:compile,BSD,http://asm.ow2.org/
 org.ow2.asm:asm:jar:5.0.4:compile,BSD,http://asm.ow2.org/
+asm:asm-commons:jar:3.1:compile,BSD,https://asm.ow2.io/
+asm:asm-tree:jar:3.1:compile,BSD,https://asm.ow2.io/
 
org.reflections:reflections:jar:0.9.10:compile,BSD,https://github.com/ronmamo/reflections
 org.javassist:javassist:jar:3.19.0-GA:compile,Apache 
v2,https://github.com/jboss-javassist/javassist
 org.javassist:javassist:jar:3.17.1-GA:compile,Apache 
v2,https://github.com/jboss-javassist/javassist
@@ -43,6 +45,7 @@ javax.annotation:jsr250-api:jar:1.0:compile,COMMON 
DEVELOPMENT AND DISTRIBUTION
 javax.annotation:javax.annotation-api:jar:1.3.2:compile,CDDL 
1.1,https://github.com/javaee/javax.annotation/
 javax.annotation:javax.annotation-api:jar:1.2:compile,CDDL 
1.1,https://github.com/javaee/javax.annotation/
 javax.mail:mail:jar:1.4:compile,Common Development and Distribution License 
(CDDL) v1.0,https://glassfish.dev.java.net/javaee5/mail/
+javax.mail:mail:jar:1.4.1:compile,Common Development and Distribution License 
(CDDL) v1.0,https://glassfish.dev.java.net/javaee5/mail/
 
javax.servlet:javax.servlet-api:jar:3.1.0:compile,CDDL,http://servlet-spec.java.net
 javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile,CDDL 
1.1,https://github.com/jax-rs/api
 javax.xml.bind:jaxb-api:jar

[metron] branch master updated: METRON-2149 Shaded jar classifier is not consistent (merrimanr) closes apache/metron#1436

2019-08-23 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new e6ca3c7  METRON-2149 Shaded jar classifier is not consistent 
(merrimanr) closes apache/metron#1436
e6ca3c7 is described below

commit e6ca3c71d8120516afcf816be2cda81093088b72
Author: merrimanr 
AuthorDate: Fri Aug 23 16:42:01 2019 -0500

METRON-2149 Shaded jar classifier is not consistent (merrimanr) closes 
apache/metron#1436
---
 metron-analytics/metron-maas-common/pom.xml|  1 +
 metron-analytics/metron-maas-service/pom.xml   |  6 ++
 metron-analytics/metron-profiler-client/pom.xml|  8 ++
 .../src/main/assembly/assembly.xml |  2 +-
 metron-analytics/metron-profiler-common/pom.xml|  6 ++
 metron-analytics/metron-profiler-repl/pom.xml  |  8 ++
 .../src/main/assembly/assembly.xml |  2 +-
 metron-analytics/metron-profiler-spark/pom.xml |  3 +
 .../src/main/assembly/assembly.xml |  2 +-
 .../src/main/scripts/start_batch_profiler.sh   |  4 +-
 metron-analytics/metron-profiler-storm/pom.xml |  8 ++
 .../src/main/scripts/start_profiler_topology.sh|  3 +-
 metron-analytics/metron-statistics/pom.xml |  3 +
 metron-contrib/metron-performance/pom.xml  |  8 ++
 .../src/main/assembly/assembly.xml |  2 +-
 .../src/main/scripts/load_tool.sh  |  2 +-
 .../common-services/METRON/CURRENT/metainfo.xml|  3 +
 .../packaging/docker/rpm-docker/SPECS/metron.spec  | 35 +++--
 .../packaging/docker/rpm-docker/pom.xml|  6 ++
 metron-interface/metron-rest/pom.xml   | 22 ++
 .../metron-rest/src/main/assembly/assembly.xml |  2 +-
 .../metron-rest/src/main/scripts/metron-rest.sh|  2 +
 metron-platform/elasticsearch-shaded/pom.xml   |  2 +
 .../metron-common-storm/pom.xml|  6 ++
 metron-platform/metron-common/pom.xml  | 51 +++--
 .../metron-common/src/main/assembly/assembly.xml   |  2 +-
 .../metron-common/src/main/scripts/stellar |  5 +-
 .../src/main/scripts/zk_load_configs.sh|  3 +-
 metron-platform/metron-data-management/pom.xml | 89 ++
 .../src/main/assembly/assembly.xml |  2 +-
 .../src/main/scripts/flatfile_loader.sh|  7 +-
 .../src/main/scripts/flatfile_summarizer.sh|  7 +-
 .../src/main/scripts/maxmind_enrichment_load.sh| 10 +--
 .../src/main/scripts/prune_hdfs_files.sh   |  2 +-
 .../src/main/scripts/threatintel_bulk_prune.sh |  2 +-
 .../src/main/scripts/threatintel_taxii_load.sh |  2 +-
 .../metron-elasticsearch-common/pom.xml| 27 ++-
 .../metron-elasticsearch-storm/pom.xml | 19 +
 .../main/scripts/start_elasticsearch_topology.sh   |  5 +-
 .../metron-enrichment-common/pom.xml   |  1 +
 .../metron-enrichment-storm/pom.xml|  6 ++
 .../src/main/scripts/start_enrichment_topology.sh  |  3 +-
 metron-platform/metron-hbase-client/pom.xml|  2 +
 metron-platform/metron-hbase-server/pom.xml|  6 ++
 .../metron-indexing/metron-indexing-common/pom.xml | 11 +--
 .../metron-indexing/metron-indexing-storm/pom.xml  |  6 ++
 .../src/main/scripts/start_hdfs_topology.sh|  3 +-
 metron-platform/metron-integration-test/pom.xml|  1 +
 metron-platform/metron-management/pom.xml  |  3 +
 .../src/main/assembly/assembly.xml |  2 +-
 .../metron-parsing/metron-parsers-common/pom.xml   |  6 ++
 .../metron-parsing/metron-parsers/pom.xml  |  6 ++
 .../metron-parsing/metron-parsing-storm/pom.xml|  6 ++
 .../src/main/scripts/start_parser_topology.sh  |  8 +-
 metron-platform/metron-pcap-backend/pom.xml| 40 ++
 .../src/main/assembly/assembly.xml |  2 +-
 .../src/main/scripts/pcap_inspector.sh |  2 +-
 .../src/main/scripts/pcap_query.sh |  2 +-
 .../src/main/scripts/start_pcap_topology.sh|  6 +-
 metron-platform/metron-pcap/pom.xml| 14 
 .../metron-solr/metron-solr-common/pom.xml |  6 ++
 .../metron-solr/metron-solr-storm/pom.xml  |  6 ++
 .../src/main/scripts/start_solr_topology.sh|  3 +-
 .../metron-storm-kafka-override/pom.xml|  2 +
 metron-platform/metron-storm-kafka/pom.xml |  1 +
 .../metron-writer/metron-writer-common/pom.xml | 45 ++-
 .../metron-writer/metron-writer-storm/pom.xml  |  6 ++
 metron-stellar/stellar-common/pom.xml  | 10 ++-
 .../stellar-common/src/main/assembly/assembly.xml  | 12 ---
 .../src/main/scripts/deployed/stellar  |  4 +-
 metron-stellar/stellar-zeppelin/pom.xml|  1 +
 71 files changed, 444 insertions(+), 167 deletions(-)

diff --git a/metron-analytics

[metron] branch master updated: METRON-2148 Stellar REST POST function (merrimanr) closes apache/metron#1440

2019-07-11 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 42ce5ad  METRON-2148 Stellar REST POST function (merrimanr) closes 
apache/metron#1440
42ce5ad is described below

commit 42ce5add9ae5b20bb3667e81e8aaa148f48a4d42
Author: merrimanr 
AuthorDate: Thu Jul 11 08:16:30 2019 -0500

METRON-2148 Stellar REST POST function (merrimanr) closes apache/metron#1440
---
 metron-stellar/stellar-common/README.md|  98 ++-
 .../metron/stellar/common/utils/JSONUtils.java |   6 +-
 .../metron/stellar/dsl/functions/RestConfig.java   |  23 +-
 .../stellar/dsl/functions/RestFunctions.java   | 657 +
 .../functions/RestFunctionsIntegrationTest.java| 490 +++
 .../stellar/dsl/functions/RestFunctionsTest.java   | 449 +++---
 6 files changed, 1095 insertions(+), 628 deletions(-)

diff --git a/metron-stellar/stellar-common/README.md 
b/metron-stellar/stellar-common/README.md
index 5e48b1c..9f1634b 100644
--- a/metron-stellar/stellar-common/README.md
+++ b/metron-stellar/stellar-common/README.md
@@ -963,6 +963,16 @@ Where:
   * Input:
 * url - URI to the REST service
 * rest_config - Optional - Map (in curly braces) of name:value pairs, each 
overriding the global config parameter of the same name. Default is the empty 
Map, meaning no overrides.
+* query_parameters - Optional - Map (in curly braces) of name:value pairs 
that will be added to the request as query parameters
+  * Returns: JSON results as a Map
+  
+### `REST_POST`
+  * Description: Performs a REST POST request and parses the JSON results into 
a map.
+  * Input:
+* url - URI to the REST service
+* post_data - POST data that will be sent in the POST request.  Must be 
well-formed JSON unless the 'enforce.json' property is set to false.
+* rest_config - Optional - Map (in curly braces) of name:value pairs, each 
overriding the global config parameter of the same name. Default is the empty 
Map, meaning no overrides.
+* query_parameters - Optional - Map (in curly braces) of name:value pairs 
that will be added to the request as query parameters
   * Returns: JSON results as a Map
 
 ### `ROUND`
@@ -1649,15 +1659,64 @@ that specify what should be included when searching for 
Stellar functions.
 
 ## Stellar REST Client
 
-Stellar provides a REST Client with the `REST_GET` function.  This function 
depends on the Apache HttComponents library for
-executing Http requests.  The syntax is:
+Stellar provides a REST Client with the `REST_GET` and `REST_POST` functions.  
This function depends on the Apache HttComponents library for
+executing Http requests.  
+
+### REST GET Syntax
+The REST_GET function requires a URI along with an optional configuration and 
an optional map of query parameters.  The syntax is:
 ```
-REST_GET( uri , optional config )
+REST_GET( uri , optional config , optional query parameters )
+```
+
+### REST POST Syntax
+The REST_POST function requires a URI and POST data along with an optional 
configuration and an optional map of query parameters.  The syntax is:
+```
+REST_POST( uri , data, optional config , optional query parameters )
 ```
 
 ### Configuration
 
-The second argument is an optional Map of settings.  The following settings 
are available:
+Stellar REST functions can be configured several different ways.  Sensible 
defaults are set for applicable settings with the option to override settings 
at different levels.
+For REST_GET, configuration settings are applied in this order (last has 
highest priority):
+1. Default settings
+2. Settings stored in the Global Config for all Stellar REST functions
+3. Settings stored in the Global Config for all Stellar REST_GET calls
+4. Settings passed into the function call as an argument
+
+For REST_POST, configuration settings are applied in this order (last has 
highest priority):
+1. Default settings
+2. Settings stored in the Global Config for all Stellar REST functions
+3. Settings stored in the Global Config for all Stellar REST_POST calls
+4. Settings passed into the function call as an argument
+
+For example, assume the Global Config is set to:
+```
+{
+  "stellar.rest.settings": {
+"proxy.basic.auth.user": "global_proxy_user",
+"basic.auth.user": "global_user",
+"empty.content.override": "global content override"
+  },
+  "stellar.rest.get.settings": {
+"basic.auth.user": "rest_get_user",
+"empty.content.override": "rest get content override"
+  }
+}
+```
+and the function call is:
+```
+REST_GET('some uri', { "empty.content.override": "function config override" } )
+```
+After the various settings are applied in order of priority, the final 

[metron] branch master updated: METRON-2061 Solr documents with date fields cannot be updated with Dao classes (merrimanr) closes apache/metron#1374

2019-07-02 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 8792882  METRON-2061 Solr documents with date fields cannot be updated 
with Dao classes (merrimanr) closes apache/metron#1374
8792882 is described below

commit 87928824509c5f6ab314375be720dd64d8361cf4
Author: merrimanr 
AuthorDate: Tue Jul 2 08:47:27 2019 -0500

METRON-2061 Solr documents with date fields cannot be updated with Dao 
classes (merrimanr) closes apache/metron#1374
---
 .../metron/indexing/dao/update/PatchException.java |  27 +++
 .../metron/indexing/dao/update/PatchOperation.java |  28 +++
 .../metron/indexing/dao/update/PatchUtils.java | 105 
 .../metron/indexing/dao/update/UpdateDao.java  |   3 +-
 .../metron/indexing/dao/update/PatchUtilsTest.java | 263 +
 5 files changed, 424 insertions(+), 2 deletions(-)

diff --git 
a/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/update/PatchException.java
 
b/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/update/PatchException.java
new file mode 100644
index 000..c621cfa
--- /dev/null
+++ 
b/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/update/PatchException.java
@@ -0,0 +1,27 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package org.apache.metron.indexing.dao.update;
+
+public class PatchException extends RuntimeException {
+
+  public PatchException(String message) {
+super(message);
+  }
+}
diff --git 
a/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/update/PatchOperation.java
 
b/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/update/PatchOperation.java
new file mode 100644
index 000..9b0e92d
--- /dev/null
+++ 
b/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/update/PatchOperation.java
@@ -0,0 +1,28 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.metron.indexing.dao.update;
+
+enum PatchOperation {
+  ADD,
+  REPLACE,
+  REMOVE,
+  COPY,
+  MOVE,
+  TEST;
+}
diff --git 
a/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/update/PatchUtils.java
 
b/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/update/PatchUtils.java
new file mode 100644
index 000..e5c5117
--- /dev/null
+++ 
b/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/update/PatchUtils.java
@@ -0,0 +1,105 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required b

[metron] branch master updated: METRON-2156 Remove Storm dependency from metron-hbase (merrimanr) closes apache/metron#1441

2019-06-20 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new a2a46e6  METRON-2156 Remove Storm dependency from metron-hbase 
(merrimanr) closes apache/metron#1441
a2a46e6 is described below

commit a2a46e6567c78e5066c0d3360d7838d1a5851fa7
Author: merrimanr 
AuthorDate: Thu Jun 20 08:29:21 2019 -0500

METRON-2156 Remove Storm dependency from metron-hbase (merrimanr) closes 
apache/metron#1441
---
 metron-analytics/metron-profiler-client/pom.xml|   4 +-
 .../metron/profiler/client/ProfileWriter.java  |   2 +-
 metron-analytics/metron-profiler-common/pom.xml|   2 +-
 .../metron/profiler/hbase/ColumnBuilder.java   |   2 +-
 .../profiler/hbase/ValueOnlyColumnBuilder.java |   2 +-
 metron-analytics/metron-profiler-spark/pom.xml |   4 +-
 metron-analytics/metron-profiler-storm/pom.xml |  13 +-
 .../org/apache/metron/hbase/bolt/BatchHelper.java  |   0
 .../org/apache/metron/hbase/bolt/HBaseBolt.java|   2 +-
 .../metron/hbase/bolt/mapper/HBaseMapper.java  |   1 +
 .../metron/profiler/storm/ProfileHBaseMapper.java  |   2 +-
 .../apache/metron/hbase/bolt/HBaseBoltTest.java|   4 +-
 .../apache/metron/hbase/bolt/mapper}/Widget.java   |   2 +-
 .../metron/hbase/bolt/mapper}/WidgetMapper.java|   5 +-
 metron-interface/metron-rest/pom.xml   |   7 +-
 metron-platform/metron-data-management/pom.xml |   4 +-
 .../metron-elasticsearch-common/pom.xml|   2 +-
 .../integration/mock/MockHBaseConnector.java   |  52 
 metron-platform/metron-enrichment/pom.xml  |   4 +-
 .../metron-hbase/{ => metron-hbase-common}/pom.xml |  69 +
 .../java/org/apache/metron/hbase}/ColumnList.java  |   2 +-
 .../metron/hbase}/HBaseProjectionCriteria.java |   2 +-
 .../org/apache/metron/hbase/HTableProvider.java|   0
 .../java/org/apache/metron/hbase}/IColumn.java |   2 +-
 .../java/org/apache/metron/hbase}/ICounter.java|   2 +-
 .../java/org/apache/metron/hbase/TableConfig.java  |   0
 .../org/apache/metron/hbase/TableProvider.java |   0
 .../apache/metron/hbase/client/HBaseClient.java|   4 +-
 .../metron/hbase/client/HBaseClientTest.java   | 126 +++--
 .../metron/hbase/mock/MockHBaseTableProvider.java  |   0
 .../org/apache/metron/hbase/mock/MockHTable.java   |   0
 .../src/test/resources/log4j.properties|   0
 metron-platform/metron-hbase/pom.xml   | 283 +++--
 .../java/org/apache/metron/hbase/Connector.java|  36 ---
 .../org/apache/metron/hbase/HTableConnector.java   | 157 
 .../org/apache/metron/hbase/TupleTableConfig.java  | 275 
 .../metron-indexing/metron-indexing-common/pom.xml |   7 +-
 .../metron-parsing/metron-parsers-common/pom.xml   |   7 -
 .../metron-parsing/metron-parsing-storm/pom.xml|   2 +-
 metron-platform/metron-pcap/pom.xml|   2 +-
 .../metron-solr/metron-solr-common/pom.xml |   2 +-
 .../metron-writer/metron-writer-common/pom.xml |   2 +-
 42 files changed, 119 insertions(+), 975 deletions(-)

diff --git a/metron-analytics/metron-profiler-client/pom.xml 
b/metron-analytics/metron-profiler-client/pom.xml
index a0cfa1a..04d9740 100644
--- a/metron-analytics/metron-profiler-client/pom.xml
+++ b/metron-analytics/metron-profiler-client/pom.xml
@@ -65,7 +65,7 @@
 
 
 org.apache.metron
-metron-hbase
+metron-hbase-common
 ${project.parent.version}
 
 
@@ -84,7 +84,7 @@
 
 
 org.apache.metron
-metron-hbase
+metron-hbase-common
 ${project.parent.version}
 test
 test-jar
diff --git 
a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/ProfileWriter.java
 
b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/ProfileWriter.java
index 38f1c3e..4e00164 100644
--- 
a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/ProfileWriter.java
+++ 
b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/ProfileWriter.java
@@ -25,7 +25,7 @@ import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.client.Durability;
 import org.apache.hadoop.hbase.client.HTableInterface;
 import org.apache.metron.hbase.HTableProvider;
-import org.apache.metron.hbase.bolt.mapper.ColumnList;
+import org.apache.metron.hbase.ColumnList;
 import org.apache.metron.hbase.client.HBaseClient;
 import org.apache.metron.profiler.ProfileMeasurement;
 import org.apache.metron.profiler.ProfilePeriod;
diff --git a/metron-analytics/metron-profiler-common/pom.xml 
b/metron-analytics/metron-profiler-common/pom.xml
in

[metron] branch master updated: METRON-2073 Create in-memory use case for enrichment with map type and flatfile summarizer (merrimanr) closes apache/metron#1399

2019-06-17 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 38b8a78  METRON-2073 Create in-memory use case for enrichment with map 
type and flatfile summarizer (merrimanr) closes apache/metron#1399
38b8a78 is described below

commit 38b8a7824a3ceed829215c8ce4ecad963ebf449e
Author: merrimanr 
AuthorDate: Mon Jun 17 13:32:44 2019 -0500

METRON-2073 Create in-memory use case for enrichment with map type and 
flatfile summarizer (merrimanr) closes apache/metron#1399
---
 .../metron/enrichment/cache/ObjectCache.java   | 123 +
 .../metron/enrichment/cache/ObjectCacheConfig.java | 115 
 .../enrichment/stellar/EnrichmentObjectGet.java| 101 ++
 .../metron/enrichment/stellar/ObjectGet.java   |  94 ++---
 .../ObjectCacheTest.java}  |  63 ++---
 .../EnrichmentObjectGetIntegrationTest.java|  72 ++
 .../stellar/EnrichmentObjectGetTest.java   | 152 +
 .../stellar/ObjectGetIntegrationTest.java  |  70 ++
 .../metron/enrichment/stellar/ObjectGetTest.java   | 115 +---
 9 files changed, 757 insertions(+), 148 deletions(-)

diff --git 
a/metron-platform/metron-enrichment/metron-enrichment-common/src/main/java/org/apache/metron/enrichment/cache/ObjectCache.java
 
b/metron-platform/metron-enrichment/metron-enrichment-common/src/main/java/org/apache/metron/enrichment/cache/ObjectCache.java
new file mode 100644
index 000..9d22bfc
--- /dev/null
+++ 
b/metron-platform/metron-enrichment/metron-enrichment-common/src/main/java/org/apache/metron/enrichment/cache/ObjectCache.java
@@ -0,0 +1,123 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.metron.enrichment.cache;
+
+import com.github.benmanes.caffeine.cache.Caffeine;
+import com.github.benmanes.caffeine.cache.CacheLoader;
+import com.github.benmanes.caffeine.cache.LoadingCache;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.metron.common.utils.SerDeUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.invoke.MethodHandles;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+public class ObjectCache {
+  private static final Logger LOG = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+  protected LoadingCache cache;
+  private static ReadWriteLock lock = new ReentrantReadWriteLock();
+
+  public class Loader implements CacheLoader {
+FileSystem fs;
+ObjectCacheConfig objectCacheConfig;
+
+public Loader(Configuration hadoopConfig, ObjectCacheConfig 
objectCacheConfig) throws IOException {
+  this.fs = FileSystem.get(hadoopConfig);
+  this.objectCacheConfig = objectCacheConfig;
+}
+
+@Override
+public Object load(String s) throws Exception {
+  LOG.debug("Loading object from path '{}'", s);
+  if (StringUtils.isEmpty(s)) {
+throw new IllegalArgumentException("Path cannot be empty");
+  }
+  Object object = null;
+  Path p = new Path(s);
+  if (fs.exists(p)) {
+if (fs.getFileStatus(p).getLen() <= 
objectCacheConfig.getMaxFileSize()) {
+  try (InputStream is = new BufferedInputStream(fs.open(p))) {
+byte[] serialized = IOUtils.toByteArray(is);
+if (serialized.length > 0) {
+  object = SerDeUtils.fromBytes(serialized, Object.class);
+}
+  }
+} else {
+  throw new IllegalArgumentException(String.format("File at path '%s' 
is larger than the configured max file size of %s", p, 
objectCacheConfig.getMaxFileSize()));
+}
+  } else {
+throw new

[metron] branch feature/METRON-1856-parser-aggregation updated: METRON-2117 [UI] Aligning models to grouping feature (tiborm via merrimanr) closes apache/metron#1412

2019-06-12 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch feature/METRON-1856-parser-aggregation
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to 
refs/heads/feature/METRON-1856-parser-aggregation by this push:
 new 1ad26a1  METRON-2117 [UI] Aligning models to grouping feature (tiborm 
via merrimanr) closes apache/metron#1412
1ad26a1 is described below

commit 1ad26a103b62e66d85473f1700142f1bc3b9b1a6
Author: tiborm 
AuthorDate: Wed Jun 12 10:31:18 2019 -0500

METRON-2117 [UI] Aligning models to grouping feature (tiborm via merrimanr) 
closes apache/metron#1412
---
 metron-interface/metron-config/src/app/index.ts|  2 -
 .../src/app/model/parse-message-request.ts |  4 +-
 .../src/app/model/sensor-parser-config-history.ts  | 29 ++--
 .../src/app/model/sensor-parser-context.ts |  4 +-
 .../src/app/model/sensor-parser-info.ts|  4 +-
 .../src/app/model/topology-response.ts |  4 ++
 .../metron-config/src/app/model/topology-status.ts | 12 
 .../models/parser-config.model.ts} | 83 +-
 .../src/app/sensors/models/parser-group.model.ts   | 66 +
 .../models/parser-meta-info.model.ts}  | 26 ---
 .../models/parser.model.ts}| 11 ++-
 .../sensor-field-schema.component.spec.ts  |  6 +-
 .../sensor-field-schema.component.ts   |  4 +-
 .../sensor-grok/sensor-grok.component.spec.ts  |  4 +-
 .../sensors/sensor-grok/sensor-grok.component.ts   |  4 +-
 ...sensor-parser-config-readonly.component.spec.ts | 10 +--
 .../sensor-parser-config-readonly.component.ts |  6 +-
 .../sensor-raw-json.component.spec.ts  |  8 +--
 .../sensor-raw-json/sensor-raw-json.component.ts   |  4 +-
 .../sensor-storm-settings.component.spec.ts| 10 +--
 .../sensor-storm-settings.component.ts |  8 +--
 .../sensor-parser-config-history.service.ts| 10 +--
 .../service/sensor-parser-config.service.spec.ts   | 21 +++---
 .../src/app/service/stellar.service.spec.ts|  4 +-
 .../src/app/shared/metron-alerts.spec.ts   |  8 +--
 .../metron-config/src/app/shared/metron-alerts.ts  |  7 +-
 26 files changed, 260 insertions(+), 99 deletions(-)

diff --git a/metron-interface/metron-config/src/app/index.ts 
b/metron-interface/metron-config/src/app/index.ts
index 1639c33..16c868f 100644
--- a/metron-interface/metron-config/src/app/index.ts
+++ b/metron-interface/metron-config/src/app/index.ts
@@ -18,5 +18,3 @@
 export * from './environment';
 export * from './app.component';
 export * from './app.routes';
-export * from './app.config';
-export * from './app.config.interface';
diff --git 
a/metron-interface/metron-config/src/app/model/parse-message-request.ts 
b/metron-interface/metron-config/src/app/model/parse-message-request.ts
index 053d7ad..b58db63 100644
--- a/metron-interface/metron-config/src/app/model/parse-message-request.ts
+++ b/metron-interface/metron-config/src/app/model/parse-message-request.ts
@@ -15,9 +15,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import {SensorParserConfig} from './sensor-parser-config';
+import {ParserConfigModel} from '../sensors/models/parser-config.model';
 export class ParseMessageRequest {
-  sensorParserConfig: SensorParserConfig;
+  sensorParserConfig: ParserConfigModel;
   grokStatement: string;
   sampleData: string;
 }
diff --git 
a/metron-interface/metron-config/src/app/model/sensor-parser-config-history.ts 
b/metron-interface/metron-config/src/app/model/sensor-parser-config-history.ts
index 4854001..a4eda68 100644
--- 
a/metron-interface/metron-config/src/app/model/sensor-parser-config-history.ts
+++ 
b/metron-interface/metron-config/src/app/model/sensor-parser-config-history.ts
@@ -15,16 +15,37 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import {SensorParserConfig} from './sensor-parser-config';
+import {ParserConfigModel} from '../sensors/models/parser-config.model';
 export class SensorParserConfigHistory {
   sensorName: string;
   createdBy: string;
   modifiedBy: string;
   createdDate: string;
   modifiedByDate: string;
-  config: SensorParserConfig;
+  config: ParserConfigModel;
+  status: string;
+  latency: string;
+  throughput: string;
 
-  constructor() {
-this.config = new SensorParserConfig();
+  constructor() {}
+
+  setConfig(config) {
+this.config = new ParserConfigModel(config);
+  }
+
+  clone(): SensorParserConfigHistory {
+const clone = new SensorParserConfigHistory();
+
+clone.sensorName = this.sensorName;
+clone.createdBy = this.createdBy;
+clone.modifiedBy = this.modifiedBy;
+clone.createdDate = this.createdDate;
+clone.modifiedByDate = this.modifiedByDate;
+clone.config = this.config.clone

[metron] branch feature/METRON-1856-parser-aggregation updated: METRON-2116 [UI] Removing redundant AppConfigService (tiborm via merrimanr) closes apache/metron#1411

2019-06-12 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch feature/METRON-1856-parser-aggregation
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to 
refs/heads/feature/METRON-1856-parser-aggregation by this push:
 new 6a19784  METRON-2116 [UI] Removing redundant AppConfigService (tiborm 
via merrimanr) closes apache/metron#1411
6a19784 is described below

commit 6a197849bee427e33a373d2add5f304e7ad0c977
Author: tiborm 
AuthorDate: Wed Jun 12 08:29:57 2019 -0500

METRON-2116 [UI] Removing redundant AppConfigService (tiborm via merrimanr) 
closes apache/metron#1411
---
 .../metron-config/src/app/app.config.interface.ts  | 21 -
 .../metron-config/src/app/app.config.ts| 26 --
 .../src/app/login/login.component.spec.ts  |  5 +++--
 .../src/app/service/global-config.service.spec.ts  |  5 ++---
 .../src/app/service/hdfs.service.spec.ts   |  1 -
 .../sensor-enrichment-config.service.spec.ts   |  1 -
 6 files changed, 5 insertions(+), 54 deletions(-)

diff --git a/metron-interface/metron-config/src/app/app.config.interface.ts 
b/metron-interface/metron-config/src/app/app.config.interface.ts
deleted file mode 100644
index 4845b46..000
--- a/metron-interface/metron-config/src/app/app.config.interface.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-export interface IAppConfig {
-  apiEndpoint: string;
-}
diff --git a/metron-interface/metron-config/src/app/app.config.ts 
b/metron-interface/metron-config/src/app/app.config.ts
deleted file mode 100644
index abd378c..000
--- a/metron-interface/metron-config/src/app/app.config.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import { InjectionToken } from '@angular/core';
-import {IAppConfig} from './app.config.interface';
-
-export let APP_CONFIG = new InjectionToken('app.config');
-
-export const METRON_REST_CONFIG: IAppConfig = {
-apiEndpoint: '/api/v1'
-};
diff --git 
a/metron-interface/metron-config/src/app/login/login.component.spec.ts 
b/metron-interface/metron-config/src/app/login/login.component.spec.ts
index eac383c..f48d897 100644
--- a/metron-interface/metron-config/src/app/login/login.component.spec.ts
+++ b/metron-interface/metron-config/src/app/login/login.component.spec.ts
@@ -21,7 +21,8 @@ import { LoginComponent } from './login.component';
 import { Observable } from 'rxjs';
 import { ActivatedRoute, Params } from '@angular/router';
 import { LoginModule } from './login.module';
-import { APP_CONFIG, METRON_REST_CONFIG } from '../app.config';
+import { AppConfigService } from 'app/service/app-config.service';
+import { MockAppConfigService } from 'app/service/mock.app-config.service';
 
 class MockAuthenticationService {
   public login(username: string, password: string, onError): void {
@@ -59,7 +60,7 @@ describe('LoginComponent', () => {
   providers: [
 { provide: ActivatedRoute, useClass: MockActivatedRoute },
 { provide: AuthenticationService, useClass: MockAuthenticationService 
},
-{ provide: APP_CONFIG, useValue: METRON_REST_CONFIG }
+{ provide: AppConfigService, useValue: MockAppConfigService }
   ]
 });
 fixture = TestBed.createComponent(LoginComponent);
diff --git 
a/metron-int

[metron] branch feature/METRON-1856-parser-aggregation updated: METRON-2114 [UI] Moving components to sensor parser module (tiborm via merrimanr) closes apache/metron#1410

2019-06-11 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch feature/METRON-1856-parser-aggregation
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to 
refs/heads/feature/METRON-1856-parser-aggregation by this push:
 new bfc496c  METRON-2114 [UI] Moving components to sensor parser module 
(tiborm via merrimanr) closes apache/metron#1410
bfc496c is described below

commit bfc496cc1267a3c5c6939fb6704fd30582c4057c
Author: tiborm 
AuthorDate: Tue Jun 11 07:57:50 2019 -0500

METRON-2114 [UI] Moving components to sensor parser module (tiborm via 
merrimanr) closes apache/metron#1410
---
 .../metron-config/src/app/app.module.ts| 93 --
 .../src/app/sensors/sensors.module.ts  | 60 ++
 2 files changed, 111 insertions(+), 42 deletions(-)

diff --git a/metron-interface/metron-config/src/app/app.module.ts 
b/metron-interface/metron-config/src/app/app.module.ts
index 89aa937..5a730ed 100644
--- a/metron-interface/metron-config/src/app/app.module.ts
+++ b/metron-interface/metron-config/src/app/app.module.ts
@@ -15,55 +15,64 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import {APP_INITIALIZER, NgModule} from '@angular/core';
-import {FormsModule, ReactiveFormsModule} from '@angular/forms';
-import {BrowserModule} from '@angular/platform-browser';
-import {HttpClientModule, HTTP_INTERCEPTORS} from '@angular/common/http';
-import { Router } from '@angular/router';
-import {AppComponent} from './app.component';
-import {SensorParserConfigService} from 
'./service/sensor-parser-config.service';
-import {KafkaService} from './service/kafka.service';
-import {GrokValidationService} from './service/grok-validation.service';
-import {StellarService} from './service/stellar.service';
-import {MetronAlerts} from './shared/metron-alerts';
-import {NavbarComponent} from './navbar/navbar.component';
-import {VerticalNavbarComponent} from 
'./verticalnavbar/verticalnavbar.component';
-import {MetronConfigRoutingModule} from './app.routes';
-import {AuthenticationService} from './service/authentication.service';
-import {AuthGuard} from './shared/auth-guard';
-import {LoginGuard} from './shared/login-guard';
-import {SensorParserConfigModule} from 
'./sensors/sensor-parser-config/sensor-parser-config.module';
-import {SensorParserConfigReadonlyModule} from 
'./sensors/sensor-parser-config-readonly/sensor-parser-config-readonly.module';
-import {SensorParserListModule} from 
'./sensors/sensor-parser-list/sensor-parser-list.module';
-import {MetronDialogBox} from './shared/metron-dialog-box';
-import {GeneralSettingsModule} from 
'./general-settings/general-settings.module';
-import {SensorEnrichmentConfigService} from 
'./service/sensor-enrichment-config.service';
-import {GlobalConfigService} from './service/global-config.service';
-import {APP_CONFIG, METRON_REST_CONFIG} from './app.config';
-import {StormService} from './service/storm.service';
-import {SensorParserConfigHistoryService} from 
'./service/sensor-parser-config-history.service';
-import {SensorIndexingConfigService} from 
'./service/sensor-indexing-config.service';
-import {HdfsService} from './service/hdfs.service';
+import { StoreModule, MetaReducer } from '@ngrx/store';
+import { StoreDevtoolsModule } from '@ngrx/store-devtools';
+import { EffectsModule } from '@ngrx/effects'
+import { SensorsModule } from './sensors/sensors.module';
+import { storeFreeze } from 'ngrx-store-freeze';
+import { environment } from '../environments/environment';
+
+import { APP_INITIALIZER, NgModule } from '@angular/core';
+import { FormsModule, ReactiveFormsModule } from '@angular/forms';
+import { BrowserModule } from '@angular/platform-browser';
+import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
+import { AppComponent } from './app.component';
+import { MetronAlerts } from './shared/metron-alerts';
+import { NavbarComponent } from './navbar/navbar.component';
+import { VerticalNavbarComponent } from 
'./verticalnavbar/verticalnavbar.component';
+import { MetronConfigRoutingModule } from './app.routes';
+import { AuthenticationService } from './service/authentication.service';
+import { AuthGuard } from './shared/auth-guard';
+import { LoginGuard } from './shared/login-guard';
+import { MetronDialogBox } from './shared/metron-dialog-box';
+import { GeneralSettingsModule } from 
'./general-settings/general-settings.module';
+import { GlobalConfigService } from './service/global-config.service';
 import { DefaultHeadersInterceptor } from 
'./http-interceptors/default-headers.interceptor';
-import {AppConfigService} from './service/app-config.service';
+import {AppConfigService } from './service/app-config.service';
+
+export const metaReducers: MetaReducer<{}>[] = !environment.production
+? [storeFreeze]
+: [];
 
 export fu

[metron] branch master updated: METRON-2153 ParserIntegrationTest should print failed messages (merrimanr) closes apache/metron#1438

2019-06-05 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new a1487ec  METRON-2153 ParserIntegrationTest should print failed 
messages (merrimanr) closes apache/metron#1438
a1487ec is described below

commit a1487ec104c0ebb7e3383499b445726dbe5de142
Author: merrimanr 
AuthorDate: Wed Jun 5 17:36:05 2019 -0500

METRON-2153 ParserIntegrationTest should print failed messages (merrimanr) 
closes apache/metron#1438
---
 .../java/org/apache/metron/common/error/MetronError.java|  4 
 .../java/org/apache/metron/parsers/bolt/ParserBolt.java |  6 +-
 .../parsers/integration/validation/StormParserDriver.java   | 13 +
 3 files changed, 22 insertions(+), 1 deletion(-)

diff --git 
a/metron-platform/metron-common/src/main/java/org/apache/metron/common/error/MetronError.java
 
b/metron-platform/metron-common/src/main/java/org/apache/metron/common/error/MetronError.java
index 46fe3b2..fe6a161 100644
--- 
a/metron-platform/metron-common/src/main/java/org/apache/metron/common/error/MetronError.java
+++ 
b/metron-platform/metron-common/src/main/java/org/apache/metron/common/error/MetronError.java
@@ -106,6 +106,10 @@ public class MetronError {
 return throwable != null ? Optional.of(throwable) : Optional.empty();
   }
 
+  public List getRawMessages() {
+return rawMessages;
+  }
+
   /**
* Serializes the MetronError into a JSON object.
*
diff --git 
a/metron-platform/metron-parsing/metron-parsing-storm/src/main/java/org/apache/metron/parsers/bolt/ParserBolt.java
 
b/metron-platform/metron-parsing/metron-parsing-storm/src/main/java/org/apache/metron/parsers/bolt/ParserBolt.java
index 2837fcb..f6715a5 100644
--- 
a/metron-platform/metron-parsing/metron-parsing-storm/src/main/java/org/apache/metron/parsers/bolt/ParserBolt.java
+++ 
b/metron-platform/metron-parsing/metron-parsing-storm/src/main/java/org/apache/metron/parsers/bolt/ParserBolt.java
@@ -255,7 +255,7 @@ public class ParserBolt extends ConfiguredParserBolt 
implements Serializable {
   , sensorParserConfig.getRawMessageStrategyConfig()
   );
   ParserRunnerResults parserRunnerResults = 
parserRunner.execute(sensorType, rawMessage, parserConfigurations);
-  parserRunnerResults.getErrors().forEach(error -> 
StormErrorUtils.handleError(collector, error));
+  parserRunnerResults.getErrors().forEach(error -> handleError(collector, 
error));
 
   WriterHandler writer = sensorToWriterMap.get(sensorType);
   int numWritten = 0;
@@ -326,6 +326,10 @@ public class ParserBolt extends ConfiguredParserBolt 
implements Serializable {
 .withThrowable(ex)
 .withSensorType(Collections.singleton(sensorType))
 .addRawMessage(originalMessage);
+handleError(collector, error);
+  }
+
+  protected void handleError(OutputCollector collector, MetronError error) {
 StormErrorUtils.handleError(collector, error);
   }
 
diff --git 
a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/validation/StormParserDriver.java
 
b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/validation/StormParserDriver.java
index 0d46d73..764a445 100644
--- 
a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/validation/StormParserDriver.java
+++ 
b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/validation/StormParserDriver.java
@@ -35,6 +35,7 @@ import org.apache.commons.lang.SerializationUtils;
 import org.apache.metron.common.configuration.IndexingConfigurations;
 import org.apache.metron.common.configuration.ParserConfigurations;
 import org.apache.metron.common.configuration.writer.WriterConfiguration;
+import org.apache.metron.common.error.MetronError;
 import org.apache.metron.common.writer.BulkMessageWriter;
 import org.apache.metron.common.writer.BulkMessage;
 import org.apache.metron.common.writer.BulkWriterResponse;
@@ -112,6 +113,18 @@ public class StormParserDriver extends ParserDriver {
   LOG.error("Error parsing message: " + ex.getMessage(), ex);
 }
 
+@Override
+protected void handleError(OutputCollector collector, MetronError error) {
+  for(Object rawMessage: error.getRawMessages()) {
+errors.add((byte[]) rawMessage);
+  }
+  if (error.getThrowable().isPresent()) {
+Throwable throwable = error.getThrowable().get();
+LOG.error("Error parsing message: " + throwable.getMessage(), 
throwable);
+  }
+
+}
+
 @SuppressWarnings("unchecked")
 public ProcessorResult> getResults() {
   return new 
ProcessorResult.Builder>().withProcessErrors(errors)



[metron] branch master updated: METRON-2109 Add option to use Metron GUID as the id in Elasticsearch (merrimanr) closes apache/metron#1403

2019-05-22 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 373ac51  METRON-2109 Add option to use Metron GUID as the id in 
Elasticsearch (merrimanr) closes apache/metron#1403
373ac51 is described below

commit 373ac513b0779c9399fce299094560a0261a6590
Author: merrimanr 
AuthorDate: Wed May 22 14:30:48 2019 -0500

METRON-2109 Add option to use Metron GUID as the id in Elasticsearch 
(merrimanr) closes apache/metron#1403
---
 metron-platform/metron-common/README.md|  1 +
 .../configuration/IndexingConfigurations.java  | 17 +
 .../writer/IndexingWriterConfiguration.java|  5 ++
 .../configuration/writer/WriterConfiguration.java  |  9 +++
 .../configuration/IndexingConfigurationsTest.java  | 82 ++
 .../bulk/ElasticsearchBulkDocumentWriter.java  |  2 +-
 .../elasticsearch/writer/ElasticsearchWriter.java  | 13 ++--
 .../ElasticsearchSearchIntegrationTest.java|  6 +-
 .../components/ElasticSearchComponent.java | 18 +++--
 .../writer/ElasticsearchWriterTest.java| 62 +++-
 metron-platform/metron-indexing/README.md  | 18 -
 11 files changed, 220 insertions(+), 13 deletions(-)

diff --git a/metron-platform/metron-common/README.md 
b/metron-platform/metron-common/README.md
index 5144be7..4d19769 100644
--- a/metron-platform/metron-common/README.md
+++ b/metron-platform/metron-common/README.md
@@ -87,6 +87,7 @@ but a convenient index is provided here:
 | [`es.port`](../metron-elasticsearch#esport)  
 | Indexing  | String | N/A 
|
 | [`es.date.format`](../metron-elasticsearch#esdateformat) 
 | Indexing  | String | 
`es_date_format`|
 | [`es.client.settings`](../metron-elasticsearch#esclientsettings) 
 | Indexing  | Object | N/A 
|
+| 
[`indexing.writer.elasticsearch.setDocumentId`](../metron-indexing#elasticsearch)
| Indexing  | 
Boolean| N/A |
 | [`solr.zookeeper`](../metron-solr#configuration) 
 | Indexing  | String | 
`solr_zookeeper_url`|
 | [`solr.commitPerBatch`](../metron-solr#configuration)
 | Indexing  | String | N/A 
|
 | [`solr.commit.soft`](../metron-solr#configuration)   
 | Indexing  | String | N/A 
|
diff --git 
a/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/IndexingConfigurations.java
 
b/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/IndexingConfigurations.java
index 584bed1..5001767 100644
--- 
a/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/IndexingConfigurations.java
+++ 
b/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/IndexingConfigurations.java
@@ -36,6 +36,8 @@ public class IndexingConfigurations extends Configurations {
   public static final String INDEX_CONF = "index";
   public static final String OUTPUT_PATH_FUNCTION_CONF = "outputPathFunction";
   public static final String FIELD_NAME_CONVERTER_CONF = "fieldNameConverter";
+  public static final String SET_DOCUMENT_ID_CONF = "setDocumentId";
+  public static final String GLOBAL_ELASTICSEARCH_SET_DOCUMENT_ID_CONF = 
"indexing.writer.elasticsearch.setDocumentId";
 
   /**
* Gets the indexing config for a specific sensor.
@@ -184,6 +186,10 @@ public class IndexingConfigurations extends Configurations 
{
 return getFieldNameConverter(getSensorIndexingConfig(sensorName, 
writerName), sensorName);
   }
 
+  public boolean isSetDocumentId(String sensorName, String writerName) {
+return isSetDocumentId(getGlobalConfig(true), 
getSensorIndexingConfig(sensorName, writerName));
+  }
+
   /**
*  Retrieves the enabled value from the config.
*
@@ -268,6 +274,17 @@ public class IndexingConfigurations extends Configurations 
{
   }
 
   /**
+   * Determines if the Metron generated id should be used when indexing
+   *
+   * @param globalConf The global config
+   * @param sensorConf The indexing config for a given sensor
+   * @return True if the Metron generated id should be used as the id, False 
otherwise
+   */
+  public static boole

[metron] branch master updated: METRON-2106 Escalation topic setting in Ambari has no effect (merrimanr) closes apache/metron#1400

2019-05-13 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 57bbab2  METRON-2106 Escalation topic setting in Ambari has no effect 
(merrimanr) closes apache/metron#1400
57bbab2 is described below

commit 57bbab2c899877ddb114082bff111444b3089b00
Author: merrimanr 
AuthorDate: Mon May 13 15:57:13 2019 -0500

METRON-2106 Escalation topic setting in Ambari has no effect (merrimanr) 
closes apache/metron#1400
---
 metron-interface/metron-rest/src/main/scripts/metron-rest.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/metron-interface/metron-rest/src/main/scripts/metron-rest.sh 
b/metron-interface/metron-rest/src/main/scripts/metron-rest.sh
index 6f07925..19d0a33 100644
--- a/metron-interface/metron-rest/src/main/scripts/metron-rest.sh
+++ b/metron-interface/metron-rest/src/main/scripts/metron-rest.sh
@@ -83,7 +83,7 @@ echo 
"METRON_SPRING_PROFILES_ACTIVE=${METRON_SPRING_PROFILES_ACTIVE}"
 
 # the vagrant Spring profile provides configuration values, otherwise 
configuration is provided by rest_application.yml
 if [[ !(${METRON_SPRING_PROFILES_ACTIVE} == *"vagrant"*) ]]; then
-METRON_CONFIG_LOCATION=" 
--spring.config.location=$METRON_HOME/config/rest_application.yml,classpath:/application.yml"
+METRON_CONFIG_LOCATION=" 
--spring.config.additional-location=file:$METRON_HOME/config/rest_application.yml"
 echo "METRON_CONFIG_LOCATION=${METRON_CONFIG_LOCATION}"
 METRON_SPRING_OPTIONS+=${METRON_CONFIG_LOCATION}
 fi



[metron] branch master updated: METRON-2090 Full dev is failing with missing org.mortbay.jetty:jetty-util:jar:6.1.26.hwx dependency (merrimanr) closes apache/metron#1391

2019-04-25 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new f99cc54  METRON-2090 Full dev is failing with missing 
org.mortbay.jetty:jetty-util:jar:6.1.26.hwx dependency (merrimanr) closes 
apache/metron#1391
f99cc54 is described below

commit f99cc54d367c1f36433f7a41e1c89e7bf75786fb
Author: merrimanr 
AuthorDate: Thu Apr 25 11:34:29 2019 -0500

METRON-2090 Full dev is failing with missing 
org.mortbay.jetty:jetty-util:jar:6.1.26.hwx dependency (merrimanr) closes 
apache/metron#1391
---
 .../metron-writer/metron-writer-storm/pom.xml  | 106 +
 1 file changed, 67 insertions(+), 39 deletions(-)

diff --git a/metron-platform/metron-writer/metron-writer-storm/pom.xml 
b/metron-platform/metron-writer/metron-writer-storm/pom.xml
index 5e0ec56..1f4c1dd 100644
--- a/metron-platform/metron-writer/metron-writer-storm/pom.xml
+++ b/metron-platform/metron-writer/metron-writer-storm/pom.xml
@@ -30,45 +30,65 @@
 1.10
 
 
-  
-org.apache.metron
-metron-common-storm
-${project.parent.version}
-  
-  
-org.apache.metron
-metron-writer-common
-${project.parent.version}
-  
-  
-org.apache.storm
-storm-core
-${global_storm_version}
-provided
-
-  
-org.apache.logging.log4j
-log4j-core
-  
-  
-org.apache.logging.log4j
-log4j-api
-  
-  
-servlet-api
-javax.servlet
-  
-  
-log4j-over-slf4j
-org.slf4j
-  
-  
-log4j-slf4j-impl
-org.apache.logging.log4j
-  
-
-  
-  
+
+org.apache.metron
+metron-common-storm
+${project.parent.version}
+
+
+org.apache.metron
+metron-writer-common
+${project.parent.version}
+
+
+org.apache.hadoop
+hadoop-common
+${global_hadoop_version}
+
+
+servlet-api
+javax.servlet
+
+
+commons-httpclient
+commons-httpclient
+
+
+org.slf4j
+slf4j-log4j12
+
+
+provided
+
+
+org.apache.storm
+storm-core
+${global_storm_version}
+provided
+
+
+org.apache.logging.log4j
+log4j-core
+
+
+org.apache.logging.log4j
+log4j-api
+
+
+servlet-api
+javax.servlet
+
+
+log4j-over-slf4j
+org.slf4j
+
+
+log4j-slf4j-impl
+org.apache.logging.log4j
+
+
+
+
 org.apache.storm
 storm-hdfs
 ${global_storm_version}
@@ -81,6 +101,14 @@
 org.apache.hadoop
 hadoop-client
 
+
+org.mortbay.jetty
+jetty
+
+
+org.mortbay.jetty
+jetty-util
+
 
 
 



[metron] branch master updated: METRON-2091 SimpleHBaseEnrichmentWriterTest should be included in tests (merrimanr) closes apache/metron#1392

2019-04-24 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new fd6bbcc  METRON-2091 SimpleHBaseEnrichmentWriterTest should be 
included in tests (merrimanr) closes apache/metron#1392
fd6bbcc is described below

commit fd6bbcc4ab9862ce0891bd7570a7654dcd68ea46
Author: merrimanr 
AuthorDate: Wed Apr 24 13:16:18 2019 -0500

METRON-2091 SimpleHBaseEnrichmentWriterTest should be included in tests 
(merrimanr) closes apache/metron#1392
---
 metron-platform/metron-writer/metron-writer-common/pom.xml | 7 +++
 .../metron/writer/hbase/SimpleHBaseEnrichmentWriterTest.java   | 0
 2 files changed, 7 insertions(+)

diff --git a/metron-platform/metron-writer/metron-writer-common/pom.xml 
b/metron-platform/metron-writer/metron-writer-common/pom.xml
index ef4fe0e..c4e2799 100644
--- a/metron-platform/metron-writer/metron-writer-common/pom.xml
+++ b/metron-platform/metron-writer/metron-writer-common/pom.xml
@@ -190,6 +190,13 @@
 stellar-common
 ${project.parent.version}
 
+
+org.apache.metron
+metron-hbase
+${project.parent.version}
+test-jar
+test
+
 
 
 
diff --git 
a/metron-platform/metron-writer/src/test/java/org/apache/metron/writer/hbase/SimpleHBaseEnrichmentWriterTest.java
 
b/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/hbase/SimpleHBaseEnrichmentWriterTest.java
similarity index 100%
rename from 
metron-platform/metron-writer/src/test/java/org/apache/metron/writer/hbase/SimpleHBaseEnrichmentWriterTest.java
rename to 
metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/hbase/SimpleHBaseEnrichmentWriterTest.java



[metron] branch master updated: METRON-2078 Remove Storm dependency from metron-writer (merrimanr) closes apache/metron#1386

2019-04-19 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 51d1c81  METRON-2078 Remove Storm dependency from metron-writer 
(merrimanr) closes apache/metron#1386
51d1c81 is described below

commit 51d1c812c1e45f57da8c27fe37fd13797707884e
Author: merrimanr 
AuthorDate: Fri Apr 19 14:11:12 2019 -0500

METRON-2078 Remove Storm dependency from metron-writer (merrimanr) closes 
apache/metron#1386
---
 metron-analytics/metron-profiler-storm/pom.xml |   2 +-
 .../metron/storm/common/utils/ErrorUtilsTest.java  |  42 ---
 .../org/apache/metron/common/utils/ErrorUtils.java | 113 ---
 .../apache/metron/common/utils/RuntimeErrors.java  |  79 +
 .../metron/common/utils/RuntimeErrorsTest.java}|  35 +-
 .../dataloads/nonbulk/taxii/TaxiiHandler.java  |   4 +-
 metron-platform/metron-elasticsearch/pom.xml   |   2 +-
 .../metron-enrichment-storm/pom.xml|   2 +-
 metron-platform/metron-indexing/pom.xml|  41 +--
 .../integration/HDFSIndexingIntegrationTest.java   |   3 +-
 metron-platform/metron-management/pom.xml  |   4 +-
 .../metron-parsing/metron-parsers-common/pom.xml   |   2 +-
 .../metron-parsing/metron-parsing-storm/pom.xml|   6 +
 .../{ => metron-writer-common}/pom.xml |  67 +---
 .../org/apache/metron/writer/AbstractWriter.java   |   0
 .../org/apache/metron/writer/BatchSizePolicy.java  |   0
 .../apache/metron/writer/BatchTimeoutPolicy.java   |   0
 .../apache/metron/writer/BulkWriterComponent.java  |   0
 .../java/org/apache/metron/writer/FlushPolicy.java |   0
 .../java/org/apache/metron/writer/NoopWriter.java  |   0
 .../apache/metron/writer/WriterToBulkWriter.java   |   0
 .../writer/hbase/SimpleHbaseEnrichmentWriter.java  |   0
 .../apache/metron/writer/kafka/KafkaWriter.java|   0
 .../src/main/resources/META-INF/LICENSE|   0
 .../src/main/resources/META-INF/NOTICE |   0
 .../apache/metron/writer/BatchSizePolicyTest.java  |   0
 .../metron/writer/BatchTimeoutPolicyTest.java  |   0
 .../metron/writer/BulkWriterComponentTest.java |   4 +-
 .../org/apache/metron/writer/NoopWriterTest.java   |   0
 .../metron/writer/kafka/KafkaWriterTest.java   |   0
 .../src/test/resources/log4j.properties|   0
 .../metron-writer/metron-writer-storm/pom.xml  |  93 ++
 .../org/apache/metron/writer/AckTuplesPolicy.java  |   0
 .../metron/writer/bolt/BatchTimeoutHelper.java |   0
 .../metron/writer/bolt/BulkMessageWriterBolt.java  |   0
 .../writer/hdfs/ClonedSyncPolicyCreator.java   |   0
 .../org/apache/metron/writer/hdfs/HdfsWriter.java  |   0
 .../writer/hdfs/PathExtensionFileNameFormat.java   |   0
 .../metron/writer/hdfs/SourceAwareMoveAction.java  |   0
 .../apache/metron/writer/hdfs/SourceHandler.java   |   0
 .../metron/writer/hdfs/SourceHandlerCallback.java  |   0
 .../metron/writer/hdfs/SourceHandlerKey.java   |   0
 .../metron/writer/hdfs/SyncPolicyCreator.java  |   0
 .../apache/metron/writer/AckTuplesPolicyTest.java  |  17 +-
 .../metron/writer/bolt/BatchTimeoutHelperTest.java |   0
 .../writer/bolt/BulkMessageWriterBoltTest.java |  52 +--
 .../writer/hdfs/ClonedSyncPolicyCreatorTest.java   |   0
 .../apache/metron/writer/hdfs/HdfsWriterTest.java  |   0
 .../hdfs/PathExtensionFileNameFormatTest.java  |   0
 .../metron/writer/hdfs/SourceHandlerTest.java  |   0
 metron-platform/metron-writer/pom.xml  | 366 ++---
 51 files changed, 270 insertions(+), 664 deletions(-)

diff --git a/metron-analytics/metron-profiler-storm/pom.xml 
b/metron-analytics/metron-profiler-storm/pom.xml
index 66deb4d..fe615e2 100644
--- a/metron-analytics/metron-profiler-storm/pom.xml
+++ b/metron-analytics/metron-profiler-storm/pom.xml
@@ -84,7 +84,7 @@
 
 
 org.apache.metron
-metron-writer
+metron-writer-storm
 ${project.parent.version}
 
 
diff --git 
a/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/utils/ErrorUtilsTest.java
 
b/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/utils/ErrorUtilsTest.java
index 037a06c..7d0694e 100644
--- 
a/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/utils/ErrorUtilsTest.java
+++ 
b/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/utils/ErrorUtilsTest.java
@@ -19,17 +19,10 @@ package org.apache.metron.storm.common.utils;
 
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.error.MetronError;
-import org.apache.metron.common.utils.ErrorUtils;
 import org.apache.metron.test.error.MetronErrorJSONMatc

[metron] branch master updated: METRON-2065 Setting Parser Output Topic in Sensor Config is broken (merrimanr) closes apache/metron#1377

2019-04-18 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new c453b1e  METRON-2065 Setting Parser Output Topic in Sensor Config is 
broken (merrimanr) closes apache/metron#1377
c453b1e is described below

commit c453b1edf27a4a2883e4c055246d939218908ebb
Author: merrimanr 
AuthorDate: Thu Apr 18 08:19:12 2019 -0500

METRON-2065 Setting Parser Output Topic in Sensor Config is broken 
(merrimanr) closes apache/metron#1377
---
 metron-platform/metron-parsing/README.md   |  14 ++
 .../parsers/topology/ParserTopologyBuilder.java|  23 ++-
 .../topology/ParserTopologyBuilderTest.java| 169 +
 3 files changed, 202 insertions(+), 4 deletions(-)

diff --git a/metron-platform/metron-parsing/README.md 
b/metron-platform/metron-parsing/README.md
index e5368fe..085fb33 100644
--- a/metron-platform/metron-parsing/README.md
+++ b/metron-platform/metron-parsing/README.md
@@ -158,6 +158,19 @@ There are two general types types of parsers:
 ```
 "timestamp":"TO_EPOCH_TIMESTAMP(timestamp_str, timestamp_format, 
timezone_name )"
 ```
+
+## Parser Message Routing
+
+Messages are routed to the Kafka `enrichments` topic by default.  The output 
topic can be changed with the `output_topic` 
+option when [Starting the Parser 
Topology](metron-parsing-storm/README.md#starting-the-parser-topology) or with 
the `outputTopic` 
+[Parser Configuration](#parser-configuration) setting.  The order of 
precedence from highest to lowest is as follows:
+
+1. Parser start script option
+2. Parser configuration setting
+3. Default `enrichments` topic
+
+A message can also be routed to other locations besides Kafka with the 
`writerClassName` [Parser Configuration](#parser-configuration) setting.
+Messages can be routed independently for each sensor type when configured with 
[Parser Configuration](#parser-configuration) settings.
 
 ## Parser Error Routing
 
@@ -278,6 +291,7 @@ The document is structured in the following way
 }
 ```
 
+* `writerClassName` : The class used to write messages after they have been 
parsed.  Defaults to `org.apache.metron.writer.kafka.KafkaWriter`.
 * `sensorTopic` : The kafka topic to that the parser will read messages from.  
If the topic is prefixed and suffixed by `/`
 then it is assumed to be a regex and will match any topic matching the pattern 
(e.g. `/bro.*/` would match `bro_cust0`, `bro_cust1` and `bro_cust2`)
 * `readMetadata` : Boolean indicating whether to read metadata or not (The 
default is raw message strategy dependent).  See below for a discussion about 
metadata.
diff --git 
a/metron-platform/metron-parsing/metron-parsing-storm/src/main/java/org/apache/metron/parsers/topology/ParserTopologyBuilder.java
 
b/metron-platform/metron-parsing/metron-parsing-storm/src/main/java/org/apache/metron/parsers/topology/ParserTopologyBuilder.java
index 9dc7b88..b0f9d7d 100644
--- 
a/metron-platform/metron-parsing/metron-parsing-storm/src/main/java/org/apache/metron/parsers/topology/ParserTopologyBuilder.java
+++ 
b/metron-platform/metron-parsing/metron-parsing-storm/src/main/java/org/apache/metron/parsers/topology/ParserTopologyBuilder.java
@@ -228,7 +228,7 @@ public class ParserTopologyBuilder {
* @param securityProtocol An optional security protocol in use.
* @return
*/
-  private static KafkaWriter createKafkaWriter(Optional broker,
+  protected static KafkaWriter createKafkaWriter(Optional broker,
String zkQuorum,
Optional 
securityProtocol) {
 KafkaWriter writer = new KafkaWriter();
@@ -266,6 +266,21 @@ public class ParserTopologyBuilder {
   Optional 
securityProtocol,
   ParserConfigurations configs,
   Optional outputTopic) {
+Map writerConfigs = 
createWriterConfigs(zookeeperUrl,
+brokerUrl,
+sensorTypeToParserConfig,
+securityProtocol,
+configs,
+outputTopic);
+return new ParserBolt(zookeeperUrl, new ParserRunnerImpl(new 
HashSet<>(sensorTypeToParserConfig.keySet())), writerConfigs);
+  }
+
+  protected static Map createWriterConfigs(String 
zookeeperUrl,
+  
Optional brokerUrl,
+  Map sensorTypeToParserConfig,
+  
Optional securityProtocol,
+  
ParserConfigurations configs,
+ 

[metron] branch master updated: METRON-2014 Add architectural documentation for metron-writer (merrimanr) closes apache/metron#1381

2019-04-16 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 3a61933  METRON-2014 Add architectural documentation for metron-writer 
(merrimanr) closes apache/metron#1381
3a61933 is described below

commit 3a61933ed4fb6ec00286f4c13a22c372adf8d0dc
Author: merrimanr 
AuthorDate: Tue Apr 16 13:16:20 2019 -0500

METRON-2014 Add architectural documentation for metron-writer (merrimanr) 
closes apache/metron#1381
---
 metron-platform/metron-writer/README.md | 89 +
 1 file changed, 89 insertions(+)

diff --git a/metron-platform/metron-writer/README.md 
b/metron-platform/metron-writer/README.md
index ed4f053..3cc9c87 100644
--- a/metron-platform/metron-writer/README.md
+++ b/metron-platform/metron-writer/README.md
@@ -20,6 +20,95 @@ limitations under the License.
 ## Introduction
 The writer module provides some utilties for writing to outside components 
from within Storm.  This includes managing bulk writing.  An implemention is 
included for writing to HDFS in this module. Other writers can be found in 
their own modules.
 
+## Bulk Message Writing
+Most external components encourage messages to be written in batches for 
performance reasons.  The writer module includes an abstraction for doing this 
in an efficient manner.  This abstraction provides the following features:
+* A high-level `BulkWriterComponent` class that manages a per-sensor cache of 
batched messages and flushes when appropriate
+* An extension point for determining when a batch should be flushed
+* An extention point for handling a bulk message write response after a batch 
has been flushed
+
+### Flush Policies
+Flushing behavior is controlled by a collection of `FlushPolicy` objects.  
They are responsible for 2 things:
+
+1. Determining when a batch should be flushed
+2. Handling a `BulkWriterResponse` after a batch is flushed and messages are 
written with a `BulkMessageWriter`
+
+The `FlushPolicy` interface defines methods for handling these 
responsiblities: 
+
+- `boolean shouldFlush(String sensorType, WriterConfiguration configurations, 
List> messages)`
+- `void onFlush(String sensorType, BulkWriterResponse response)`
+
+There are 2 `FlushPolicy` implementations included by default:  
+
+- The `BatchSizePolicy` will flush a batch whenever the batch size reaches a 
configured value.  This configuration value is represented by the `batchSize` 
property in either the parser, enrichment or indexing configuration (whichever 
is appropriate in the current context).
+- The `BatchTimeoutPolicy` will flush a batch whenever the batch timeout has 
elapsed.  This configuration value is represented by the `batchTimeout` 
property in either the parser, enrichment or indexing configuration (whichever 
is appropriate in the current context).  A `maxBatchTimeout` is set at creation 
time and serves as the ceiling for a batch timeout.  In Storm topologies, this 
value is set to 1/2 the tuple timeout setting to ensure messages are always 
flushed before their tuples t [...]
+
+For example, a configuration that sets the `batchSize` and `batchTimeout` in a 
parser topology will look like:
+```
+{
+  "parserClassName": "org.apache.metron.parsers.bro.BasicBroParser",
+  "sensorTopic": "bro",
+  "parserConfig": {
+"batchSize": 5
+"batchTimeout": 2
+  }
+}
+```
+Similarly for the enrichment topology (configured in the [Global 
Configuration](../metron-common#global-configuration)):
+```
+{
+  "enrichment.writer.batchSize": "5",
+  "enrichment.writer.batchTimeout": "2",
+  ...
+}
+```
+And finally for the indexing topology:
+```
+{
+  "elasticsearch": {
+"index": "bro",
+"batchSize": 5,
+"batchTimeout": 2,
+"enabled": true
+  },
+  ...
+}
+```
+
+
+Additional policies can be added as needed.  For example, an `AckTuplesPolicy` 
is added in the Storm bolts to handle acking tuples after a batch is flushed.
+
+### Bulk Writing Workflow
+The `BulkWriterComponent` class collects messages in separate sensor-specific 
caches.  This class is instantiated and supplied to classes that need to write 
messages to external components.  A collection of default `FlushPolicy` 
implementations
+are created by default with the option of passing in additional `FlushPolicy` 
objects as needed.
+
+Batching and writing messages follows this process:
+
+1. A single message is passed to the `BulkWriterComponent.write` method and 
stored in the appropriate cache based on the sensor type.  A 
`BulkMessageWriter` is also supplied to do the actual writing when messages are 
flushed.
+2. The collection of `FlushPolicy` implementations are checked and a batch

[metron] branch master updated: METRON-2026 Remove Storm dependency from metron-common (merrimanr) closes apache/metron#1351

2019-04-15 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 2f2c802  METRON-2026 Remove Storm dependency from metron-common 
(merrimanr) closes apache/metron#1351
2f2c802 is described below

commit 2f2c80244b34e8182f72e6f4dc98a2940194eaa0
Author: merrimanr 
AuthorDate: Mon Apr 15 16:40:51 2019 -0500

METRON-2026 Remove Storm dependency from metron-common (merrimanr) closes 
apache/metron#1351
---
 .../metron/profiler/storm/ProfileSplitterBolt.java |  2 +-
 .../metron-common-storm/pom.xml| 89 ++
 .../metron/storm}/common/bolt/ConfiguredBolt.java  |  2 +-
 .../common/bolt/ConfiguredEnrichmentBolt.java  |  2 +-
 .../storm}/common/bolt/ConfiguredIndexingBolt.java |  2 +-
 .../storm}/common/bolt/ConfiguredParserBolt.java   |  2 +-
 .../storm}/common/bolt/ConfiguredProfilerBolt.java |  2 +-
 .../storm}/common/message/BytesFromPosition.java   |  2 +-
 .../storm}/common/message/JSONFromField.java   |  2 +-
 .../common/message/JSONFromFieldByReference.java   |  2 +-
 .../storm}/common/message/JSONFromPosition.java|  2 +-
 .../storm}/common/message/MessageGetStrategy.java  |  2 +-
 .../storm}/common/message/MessageGetters.java  |  2 +-
 .../storm}/common/message/ObjectFromField.java |  2 +-
 .../common/message/metadata/RawMessageUtil.java}   | 65 ++--
 .../storm/common/utils/StormErrorUtils.java}   | 32 +---
 .../storm}/common/bolt/BaseConfiguredBoltTest.java |  2 +-
 .../common/bolt/ConfiguredEnrichmentBoltTest.java  | 16 ++--
 .../common/bolt/ConfiguredParserBoltTest.java  | 13 ++--
 .../storm}/common/message/MessageGettersTest.java  |  2 +-
 .../message/metadata/RawMessageUtilTest.java   |  9 ++-
 .../metron/storm}/common/utils/ErrorUtilsTest.java |  5 +-
 metron-platform/metron-common-streaming/pom.xml| 33 
 metron-platform/metron-common/pom.xml  | 75 ++
 .../apache/metron/common/error/MetronError.java|  4 +-
 .../common/message/metadata/MetadataUtil.java  | 53 -
 .../common/message/metadata/RawMessageUtil.java| 59 --
 .../org/apache/metron/common/utils/ErrorUtils.java | 20 -
 .../metron/common/writer/BulkMessageWriter.java|  3 +-
 .../elasticsearch/writer/ElasticsearchWriter.java  |  3 +-
 .../writer/ElasticsearchWriterTest.java| 18 ++---
 .../metron/enrichment/bolt/EnrichmentJoinBolt.java |  2 +-
 .../enrichment/bolt/GenericEnrichmentBolt.java | 10 +--
 .../apache/metron/enrichment/bolt/JoinBolt.java| 10 +--
 .../apache/metron/enrichment/bolt/SplitBolt.java   |  2 +-
 .../enrichment/bolt/ThreatIntelJoinBolt.java   |  2 +-
 .../enrichment/bolt/UnifiedEnrichmentBolt.java | 12 +--
 .../enrichment/bolt/EnrichmentJoinBoltTest.java|  2 +-
 .../metron/enrichment/bolt/JoinBoltTest.java   |  2 +-
 .../enrichment/bolt/ThreatIntelJoinBoltTest.java   |  2 +-
 .../metron-parsing/metron-parsing-storm/pom.xml|  2 +-
 .../org/apache/metron/parsers/bolt/ParserBolt.java | 14 ++--
 .../org/apache/metron/parsers/bolt/WriterBolt.java |  8 +-
 .../apache/metron/parsers/bolt/WriterHandler.java  |  4 +-
 .../apache/metron/parsers/bolt/ParserBoltTest.java |  2 +-
 .../apache/metron/parsers/bolt/WriterBoltTest.java |  8 +-
 .../integration/validation/StormParserDriver.java  |  2 +-
 .../org/apache/metron/solr/writer/SolrWriter.java  |  3 +-
 .../schema/SchemaValidationIntegrationTest.java|  2 +-
 .../apache/metron/solr/writer/SolrWriterTest.java  |  4 +-
 metron-platform/metron-writer/pom.xml  |  2 +-
 .../org/apache/metron/writer/AckTuplesPolicy.java  |  2 +-
 .../java/org/apache/metron/writer/NoopWriter.java  |  3 +-
 .../apache/metron/writer/WriterToBulkWriter.java   |  3 +-
 .../metron/writer/bolt/BulkMessageWriterBolt.java  | 16 ++--
 .../writer/hbase/SimpleHbaseEnrichmentWriter.java  |  3 +-
 .../org/apache/metron/writer/hdfs/HdfsWriter.java  |  7 +-
 .../apache/metron/writer/kafka/KafkaWriter.java|  3 +-
 .../apache/metron/writer/AckTuplesPolicyTest.java  |  2 +-
 .../metron/writer/BulkWriterComponentTest.java |  1 -
 .../writer/bolt/BulkMessageWriterBoltTest.java | 12 ++-
 .../apache/metron/writer/hdfs/HdfsWriterTest.java  | 51 -
 metron-platform/pom.xml|  1 +
 63 files changed, 331 insertions(+), 395 deletions(-)

diff --git 
a/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/profiler/storm/ProfileSplitterBolt.java
 
b/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/profiler/storm/ProfileSplitterBolt.java
index ef58ad9..2161910 100644
--- 
a/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/profiler/storm/ProfileSplitterBolt.java
+++ 
b/metron-analytics/metron-profiler-storm/src/main/java/org

[metron] branch master updated: METRON-2064 Metron REST API overwriting global.json values (merrimanr) closes apache/metron#1376

2019-04-12 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 8d7ce16  METRON-2064 Metron REST API overwriting global.json values 
(merrimanr) closes apache/metron#1376
8d7ce16 is described below

commit 8d7ce165050619abf3d8be600ba4c8655b6ad0ed
Author: merrimanr 
AuthorDate: Fri Apr 12 09:47:24 2019 -0500

METRON-2064 Metron REST API overwriting global.json values (merrimanr) 
closes apache/metron#1376
---
 metron-platform/metron-common/README.md | 59 +++--
 metron-platform/metron-solr/README.md   |  4 +--
 2 files changed, 37 insertions(+), 26 deletions(-)

diff --git a/metron-platform/metron-common/README.md 
b/metron-platform/metron-common/README.md
index cbea9dd..40f1289 100644
--- a/metron-platform/metron-common/README.md
+++ b/metron-platform/metron-common/README.md
@@ -80,30 +80,41 @@ This configuration is stored in zookeeper, but looks 
something like
 Various parts of our stack uses the global config are documented throughout 
the Metron documentation,
 but a convenient index is provided here:
 
-| Property Name
   | Subsystem | Type   | Ambari 
Property|
-|-|---|||
-| [`es.clustername`](../metron-elasticsearch#esclustername)
   | Indexing  | String | 
`es_cluster_name`  |
-| [`es.ip`](../metron-elasticsearch#esip)  
   | Indexing  | String | 
`es_hosts` |
-| [`es.port`](../metron-elasticsearch#esport)  
   | Indexing  | String | `es_port` 
 |
-| [`es.date.format`](../metron-elasticsearch#esdateformat) 
   | Indexing  | String | 
`es_date_format`   |
-| [`es.client.settings`](../metron-elasticsearch#esclientsettings) 
   | Indexing  | Object | N/A   
 |
-| [`fieldValidations`](#validation-framework)  
   | Parsing   | Object | N/A   
 |
-| [`parser.error.topic`](../metron-parsers#parsererrortopic)   
   | Parsing   | String | N/A   
 |
-| 
[`stellar.function.paths`](../../metron-stellar/stellar-common#stellarfunctionpaths)
| Stellar   | CSV String | N/A  
  |
-| 
[`stellar.function.resolver.includes`](../../metron-stellar/stellar-common#stellarfunctionresolverincludesexcludes)
 | Stellar   | CSV String | N/A|
-| 
[`stellar.function.resolver.excludes`](../../metron-stellar/stellar-common#stellarfunctionresolverincludesexcludes)
 | Stellar   | CSV String | N/A|
-| 
[`profiler.period.duration`](../../metron-analytics/metron-profiler#profilerperiodduration)
 | Profiler  | Integer| 
`profiler_period_duration` |
-| 
[`profiler.period.duration.units`](../../metron-analytics/metron-profiler#profilerperioddurationunits)
  | Profiler  | String | `profiler_period_units`|
-| 
[`profiler.writer.batchSize`](../../metron-analytics/metron-profiler/#profilerwriterbatchsize)
  | Profiler  | Integer|  N/A   
|
-| 
[`profiler.writer.batchTimeout`](../../metron-analytics/metron-profiler/#profilerwriterbatchtimeout)
| Profiler  | Integer|  N/A   |
-| [`update.hbase.table`](../metron-indexing#updatehbasetable)  
   | REST/Indexing | String | 
`update_hbase_table`   |
-| [`update.hbase.cf`](../metron-indexing#updatehbasecf)
   | REST/Indexing | String | 
`update_hbase_cf`  |
-| [`geo.hdfs.file`](../metron-enrichment#geohdfsfile)  
   | Enrichment| String | 
`geo_hdfs_file`|
-| 
[`enrichment.writer.batchSize`](../metron-enrichment#enrichmentwriterbatchsize) 
| Enrichment| Integer|  N/A 
  |
-| 
[`enrichment.writer.batchTimeout`](../metron-enrichment#enrichmentwriterbatchtimeout

[metron] branch master updated: METRON-1654 findOne request after an alert patch returns with the original state of the alert item (merrimanr) closes apache/metron#1344

2019-04-10 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 64b0790  METRON-1654 findOne request after an alert patch returns with 
the original state of the alert item (merrimanr) closes apache/metron#1344
64b0790 is described below

commit 64b079044f6840fc0bcb1bf9cb665790f37900f4
Author: merrimanr 
AuthorDate: Wed Apr 10 10:58:04 2019 -0500

METRON-1654 findOne request after an alert patch returns with the original 
state of the alert item (merrimanr) closes apache/metron#1344
---
 .../alert-details/alert-details.component.spec.ts  | 36 +--
 .../alert-details/alert-details.component.ts   | 53 ++
 .../alerts/alerts-list/alerts-list.component.ts| 31 ++---
 .../alerts-list/table-view/table-view.component.ts |  8 
 .../alerts-list/tree-view/tree-view.component.ts   | 24 +-
 .../src/app/service/meta-alert.service.ts  | 25 +-
 .../src/app/service/update.service.ts  | 26 ++-
 7 files changed, 108 insertions(+), 95 deletions(-)

diff --git 
a/metron-interface/metron-alerts/src/app/alerts/alert-details/alert-details.component.spec.ts
 
b/metron-interface/metron-alerts/src/app/alerts/alert-details/alert-details.component.spec.ts
index b875613..7800517 100644
--- 
a/metron-interface/metron-alerts/src/app/alerts/alert-details/alert-details.component.spec.ts
+++ 
b/metron-interface/metron-alerts/src/app/alerts/alert-details/alert-details.component.spec.ts
@@ -35,10 +35,14 @@ import { By } from '@angular/platform-browser';
 import { AlertComment } from './alert-comment';
 import { Subject } from 'rxjs';
 import { ConfirmationType } from 'app/model/confirmation-type';
+import {CommentAddRemoveRequest} from "../../model/comment-add-remove-request";
+import {AlertSource} from "../../model/alert-source";
+import {of} from "rxjs/index";
 
 describe('AlertDetailsComponent', () => {
   let component: AlertDetailsComponent;
   let fixture: ComponentFixture;
+  let updateService: UpdateService;
 
   beforeEach(async(() => {
 TestBed.configureTestingModule({
@@ -83,14 +87,26 @@ describe('AlertDetailsComponent', () => {
   beforeEach(() => {
 fixture = TestBed.createComponent(AlertDetailsComponent);
 component = fixture.componentInstance;
+updateService = fixture.debugElement.injector.get(UpdateService);
 fixture.detectChanges();
   });
 
   it('should delete a comment.', fakeAsync(() => {
+const responseMock = new AlertSource();
+responseMock.guid = 'guid';
+const removeCommentSpy = spyOn(updateService, 
'removeComment').and.returnValue(
+of(responseMock)
+);
+const setAlertSpy = spyOn(component, 'setAlert');
+
 expect(component).toBeTruthy();
+component.alertSource = new AlertSource();
+component.alertSource.guid = 'guid';
+component.alertSourceType = 'sourceType';
+const now = Date.now();
 component.alertCommentsWrapper = [
   new AlertCommentWrapper(
-new AlertComment('lorem ipsum', 'user', Date.now()),
+new AlertComment('lorem ipsum', 'user', now),
 (new Date()).toString()
   )
 ];
@@ -101,8 +117,20 @@ describe('AlertDetailsComponent', () => {
 deleteComment.nativeElement.click();
 tick(500);
 fixture.detectChanges();
-expect(component.alertCommentsWrapper.length).toEqual(0);
-const comments = 
fixture.debugElement.queryAll(By.css('[data-qe-id="comment"]'));
-expect(comments.length).toEqual(0);
+
+const expectedCommentRequest = new CommentAddRemoveRequest();
+expectedCommentRequest.guid = 'guid';
+expectedCommentRequest.comment = 'lorem ipsum';
+expectedCommentRequest.username = 'user';
+expectedCommentRequest.sensorType = 'sourceType';
+expectedCommentRequest.timestamp = now;
+
+const expectedAlertSource = new AlertSource();
+expectedAlertSource.guid = 'guid';
+
+expect(removeCommentSpy).toHaveBeenCalledWith(expectedCommentRequest);
+expect(removeCommentSpy).toHaveBeenCalledTimes(1);
+expect(setAlertSpy).toHaveBeenCalledWith(expectedAlertSource);
+expect(setAlertSpy).toHaveBeenCalledTimes(1);
   }));
 });
diff --git 
a/metron-interface/metron-alerts/src/app/alerts/alert-details/alert-details.component.ts
 
b/metron-interface/metron-alerts/src/app/alerts/alert-details/alert-details.component.ts
index 73458a6..f5c55fa 100644
--- 
a/metron-interface/metron-alerts/src/app/alerts/alert-details/alert-details.component.ts
+++ 
b/metron-interface/metron-alerts/src/app/alerts/alert-details/alert-details.component.ts
@@ -98,7 +98,6 @@ export class AlertDetailsComponent implements OnInit {
 this.alertCommentStr = '';
 this.searchService.getAlert(this.alertSourceType, 
this.alertId).s

[metron] branch master updated: METRON-2022 Metron rest creates large number of connections to ZK which causes subsequent connection to zk fail (merrimanr) closes apache/metron#1367

2019-04-08 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new a1c257c  METRON-2022 Metron rest creates large number of connections 
to ZK which causes subsequent connection to zk fail (merrimanr) closes 
apache/metron#1367
a1c257c is described below

commit a1c257c6a583ba705d5e551fb5e7f5c9862097ac
Author: merrimanr 
AuthorDate: Mon Apr 8 12:25:00 2019 -0500

METRON-2022 Metron rest creates large number of connections to ZK which 
causes subsequent connection to zk fail (merrimanr) closes apache/metron#1367
---
 .../metron/solr/client/SolrClientFactory.java  | 84 ++
 .../java/org/apache/metron/solr/dao/SolrDao.java   | 33 +
 .../apache/metron/solr/dao/SolrMetaAlertDao.java   |  6 +-
 .../solr/dao/SolrMetaAlertRetrieveLatestDao.java   |  8 ++-
 .../metron/solr/dao/SolrMetaAlertUpdateDao.java|  5 +-
 .../metron/solr/client/SolrClientFactoryTest.java  | 57 +++
 .../org/apache/metron/solr/dao/SolrDaoTest.java| 50 ++---
 .../metron/solr/dao/SolrMetaAlertDaoTest.java  | 20 ++
 .../integration/SolrMetaAlertIntegrationTest.java  | 11 +--
 .../SolrRetrieveLatestIntegrationTest.java |  2 +
 .../integration/SolrSearchIntegrationTest.java |  2 +
 .../integration/SolrUpdateIntegrationTest.java |  2 +
 12 files changed, 194 insertions(+), 86 deletions(-)

diff --git 
a/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/client/SolrClientFactory.java
 
b/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/client/SolrClientFactory.java
new file mode 100644
index 000..4c704d9
--- /dev/null
+++ 
b/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/client/SolrClientFactory.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.metron.solr.client;
+
+import com.google.common.base.Splitter;
+import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.impl.CloudSolrClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.lang.invoke.MethodHandles;
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
+
+/**
+ * Factory for creating a SolrClient.  The default implementation of 
SolrClient is CloudSolrClient.
+ */
+public class SolrClientFactory {
+
+  private static final Logger LOG = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+  private static SolrClient solrClient;
+
+  /**
+   * Creates a SolrClient.
+   * @param globalConfig Global config
+   * @return SolrClient
+   */
+  public static SolrClient create(Map globalConfig) {
+if (solrClient == null) {
+  synchronized (SolrClientFactory.class) {
+if (solrClient == null) {
+  solrClient = new 
CloudSolrClient.Builder().withZkHost(getZkHosts(globalConfig)).build();
+}
+  }
+}
+return solrClient;
+  }
+
+  /**
+   * Closes the SolrClient connection and releases the reference.
+   */
+  public static void close() {
+synchronized (SolrClientFactory.class) {
+  if (solrClient != null) {
+try {
+  solrClient.close();
+} catch (IOException e) {
+  LOG.error(e.getMessage(), e);
+} finally {
+  solrClient = null;
+}
+  }
+}
+  }
+
+  /**
+   * Retrieves zookeeper hosts from the global config and formats them for 
CloudSolrClient instantiation.
+   * @param globalConfig Global config
+   * @return A list of properly formatted zookeeper servers
+   */
+  protected static List getZkHosts(Map globalConfig) {
+return Splitter.on(',').trimResults()
+.splitToList((String) globalConfig.getOrDefault(SOLR_ZOOKEEPER, 
""));
+  }
+}
diff --git 
a/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrDao.java
 
b/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrDao.java
index e6906f3..4a58808 100644
--- 
a/metron-platform

[metron] branch master updated: METRON-2039 Time range queries do not work with Solr (merrimanr) closes apache/metron#1359

2019-04-02 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 4da8990  METRON-2039 Time range queries do not work with Solr 
(merrimanr) closes apache/metron#1359
4da8990 is described below

commit 4da899043ffdb222f8a928cd30bc0f47b99c632a
Author: merrimanr 
AuthorDate: Tue Apr 2 11:50:36 2019 -0500

METRON-2039 Time range queries do not work with Solr (merrimanr) closes 
apache/metron#1359
---
 .../metron-alerts/src/app/model/filter.spec.ts | 70 +++
 .../metron-alerts/src/app/model/filter.ts  |  2 +-
 .../shared/time-range/time-range.component.spec.ts | 80 +-
 .../app/shared/time-range/time-range.component.ts  |  6 +-
 .../metron-alerts/src/app/utils/utils.spec.ts  | 76 
 .../metron-alerts/src/app/utils/utils.ts   |  6 +-
 6 files changed, 232 insertions(+), 8 deletions(-)

diff --git a/metron-interface/metron-alerts/src/app/model/filter.spec.ts 
b/metron-interface/metron-alerts/src/app/model/filter.spec.ts
new file mode 100644
index 000..d073ebd
--- /dev/null
+++ b/metron-interface/metron-alerts/src/app/model/filter.spec.ts
@@ -0,0 +1,70 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { Filter } from './filter';
+import { TIMESTAMP_FIELD_NAME } from 'app/utils/constants';
+import { Utils } from 'app/utils/utils';
+
+describe('model.Filter', () => {
+
+  const expectedTimeRangeQueryString = '(timestamp:[155286360 TO 
155295000] OR ' +
+   'metron_alert.timestamp:[155286360 TO 155295000])';
+
+  it('should have getQueryString function', () => {
+const filter = new Filter('testField', 'someValue', false);
+expect(typeof filter.getQueryString).toBe('function');
+  });
+
+  it('getQueryString for basic filter', () => {
+const filter = new Filter('testField', 'someValue', false);
+expect(filter.getQueryString()).toBe('(testField:someValue OR 
metron_alert.testField:someValue)');
+  });
+
+  it('getQueryString for guid filter', () => {
+const filter = new Filter('guid', 'someValue', false);
+expect(filter.getQueryString()).toBe('(guid:"someValue" OR 
metron_alert.guid:"someValue")');
+  });
+
+  it('getQueryString for time range filter with []', () => {
+const filter = new Filter(TIMESTAMP_FIELD_NAME, '[155286360 TO 
155295000]', false);
+expect(filter.getQueryString()).toBe(expectedTimeRangeQueryString);
+  });
+
+  it('getQueryString for time range filter without []', () => {
+const filter = new Filter(TIMESTAMP_FIELD_NAME, '155286360 TO 
155295000', false);
+expect(filter.getQueryString()).toBe(expectedTimeRangeQueryString);
+  });
+
+  it('getQueryString for time range filter for display', () => {
+const filter = new Filter(TIMESTAMP_FIELD_NAME, '[155286360 TO 
155295000]', true);
+expect(filter.getQueryString()).toBe('(timestamp:\\[155286360\\ TO\\ 
155295000\\] OR ' +
+  'metron_alert.timestamp:\\[155286360\\ TO\\ 155295000\\])');
+  });
+
+  /**
+   * Actual time range and quick range conversion tested in utils/utils.spec.ts
+   * until further refactoring.
+   */
+  it('getQueryString for time range filter should call 
Utils.timeRangeToDateObj', () => {
+const timeRange = '155286360 TO 155295000';
+spyOn(Utils, 'timeRangeToDateObj').and.callThrough();
+const filter = new Filter(TIMESTAMP_FIELD_NAME, timeRange, false);
+
+filter.getQueryString();
+expect(Utils.timeRangeToDateObj).toHaveBeenCalledWith(timeRange);
+  });
+});
diff --git a/metron-interface/metron-alerts/src/app/model/filter.ts 
b/metron-interface/metron-alerts/src/app/model/filter.ts
index c90c7a6..5d56c49 100644
--- a/metron-interface/metron-alerts/src/app/model/filter.ts
+++ b/metron-interface/metron-alerts/src/app/model/filter.ts
@@ -51,7 +51,7 @@ export class Filter {
   this.dateFilterValue = Utils.timeRangeToDateObj(this.value);
   if (this.dateFilterValue !== 

[metron] branch master updated: METRON-2019 Improve Metron REST Logging (merrimanr) closes apache/metron#1347

2019-03-05 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 34a1fd5  METRON-2019 Improve Metron REST Logging (merrimanr) closes 
apache/metron#1347
34a1fd5 is described below

commit 34a1fd513c8f27b130b6ba8edbb3d4a1ed463993
Author: merrimanr 
AuthorDate: Tue Mar 5 17:24:18 2019 -0600

METRON-2019 Improve Metron REST Logging (merrimanr) closes 
apache/metron#1347
---
 dependencies_with_url.csv  |  1 +
 metron-interface/metron-rest/README.md | 14 
 metron-interface/metron-rest/pom.xml   | 16 ++--
 .../apache/metron/rest/MetronExceptionHandler.java | 48 
 .../apache/metron/rest/MetronRestApplication.java  |  3 -
 .../apache/metron/rest/config/LoggingConfig.java   | 39 ++
 .../rest/web/filter/ResponseLoggingFilter.java | 87 ++
 .../src/main/resources/log4j.properties| 16 
 .../src/test/resources/log4j.properties| 19 -
 9 files changed, 197 insertions(+), 46 deletions(-)

diff --git a/dependencies_with_url.csv b/dependencies_with_url.csv
index e16650d..0ae7ab4 100644
--- a/dependencies_with_url.csv
+++ b/dependencies_with_url.csv
@@ -385,6 +385,7 @@ 
org.springframework.boot:spring-boot-starter-jdbc:jar:2.0.1.RELEASE:compile,ASLv
 
org.springframework.boot:spring-boot-starter-json:jar:2.0.1.RELEASE:compile,ASLv2,https://github.com/spring-projects/spring-boot
 
org.springframework.boot:spring-boot-starter-logging:jar:1.4.1.RELEASE:compile,ASLv2,https://github.com/spring-projects/spring-boot
 
org.springframework.boot:spring-boot-starter-logging:jar:2.0.1.RELEASE:compile,ASLv2,https://github.com/spring-projects/spring-boot
+org.springframework.boot:spring-boot-starter-log4j2:jar:2.0.1.RELEASE:compile,ASLv2,https://github.com/spring-projects/spring-boot
 
org.springframework.boot:spring-boot-starter-security:jar:1.4.1.RELEASE:compile,ASLv2,https://github.com/spring-projects/spring-boot
 
org.springframework.boot:spring-boot-starter-security:jar:2.0.1.RELEASE:compile,ASLv2,https://github.com/spring-projects/spring-boot
 
org.springframework.boot:spring-boot-starter-tomcat:jar:1.4.1.RELEASE:compile,ASLv2,https://github.com/spring-projects/spring-boot
diff --git a/metron-interface/metron-rest/README.md 
b/metron-interface/metron-rest/README.md
index 11f06bf..8d7d99f 100644
--- a/metron-interface/metron-rest/README.md
+++ b/metron-interface/metron-rest/README.md
@@ -248,6 +248,20 @@ Setting active profiles is done with the 
METRON_SPRING_PROFILES_ACTIVE variable.
 METRON_SPRING_PROFILES_ACTIVE="vagrant,dev"
 ```
 
+## Logging
+
+Logging for the REST application can be configured in Ambari.  Log levels can 
be changed at the root, package and class level:
+
+1. Navigate to Services > Metron > Configs > REST and locate the `Metron 
Spring options` setting.
+
+1. Logging configuration is exposed through Spring properties as explained 
[here](https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html#howto-logging).
+
+1. The root logging level defaults to ERROR but can be changed to INFO by 
adding `--logging.level.root=INFO` to the `Metron Spring options` setting.
+
+1. The Metron REST logging level can be changed to INFO by adding 
`--logging.level.org.apache.metron.rest=INFO`.
+
+1. HTTP request and response logging can be enabled by adding 
`--logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG
 --logging.level.org.apache.metron.rest.web.filter.ResponseLoggingFilter=DEBUG`.
+
 ## Pcap Query
 
 The REST application exposes endpoints for querying Pcap data.  For more 
information about filtering options see [Query Filter 
Utility](../../metron-platform/metron-pcap-backend#query-filter-utility).
diff --git a/metron-interface/metron-rest/pom.xml 
b/metron-interface/metron-rest/pom.xml
index 01f1aed..cc58bf8 100644
--- a/metron-interface/metron-rest/pom.xml
+++ b/metron-interface/metron-rest/pom.xml
@@ -78,14 +78,10 @@
 org.springframework.boot
 spring-boot-starter-web
 
-
-ch.qos.logback
-logback-classic
-
-
-org.slf4j
-log4j-over-slf4j
-
+  
+org.springframework.boot
+spring-boot-starter-logging
+  
 
 org.hibernate
 hibernate-validator
@@ -94,6 +90,10 @@
 
 
 org.springframework.boot
+spring-boot-starter-log4j2
+
+
+org.springframework.boot
 spring-boot-starter-security
 
 
diff --git 
a/metron-interface/metron-rest/src/main/java/org

[metron] branch master updated: METRON-2016 Parser aggregate groups should be persisted and available through REST (merrimanr) closes apache/metron#1346

2019-03-05 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 6d41526  METRON-2016 Parser aggregate groups should be persisted and 
available through REST (merrimanr) closes apache/metron#1346
6d41526 is described below

commit 6d41526c3eff511e5fe11368c6f3f0a837507ba1
Author: merrimanr 
AuthorDate: Tue Mar 5 17:20:25 2019 -0600

METRON-2016 Parser aggregate groups should be persisted and available 
through REST (merrimanr) closes apache/metron#1346
---
 .../CURRENT/package/scripts/parser_commands.py |  10 +-
 metron-interface/metron-rest/README.md |  33 +++
 metron-interface/metron-rest/pom.xml   |   6 +
 .../controller/SensorParserGroupController.java|  93 +++
 .../rest/service/SensorParserGroupService.java |  39 +++
 .../service/impl/SensorParserGroupServiceImpl.java | 136 +++
 .../rest/service/impl/StormAdminServiceImpl.java   |  50 +++-
 .../rest/service/impl/StormStatusServiceImpl.java  |  68 --
 ...SensorParserGroupControllerIntegrationTest.java | 266 +
 .../impl/SensorParserGroupServiceImplTest.java | 203 
 .../service/impl/StormAdminServiceImplTest.java|  40 +++-
 .../service/impl/StormStatusServiceImplTest.java   |  51 +++-
 .../common/configuration/ParserConfigurations.java |  17 ++
 .../common/configuration/SensorParserGroup.java|  83 +++
 .../metron/parsers/topology/ParserTopologyCLI.java |  16 +-
 15 files changed, 1063 insertions(+), 48 deletions(-)

diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/parser_commands.py
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/parser_commands.py
index 18780d9..a687085 100755
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/parser_commands.py
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/parser_commands.py
@@ -65,14 +65,20 @@ class ParserCommands:
 def __get_aggr_parsers(self, params):
 """
 Fetches the list of aggregated (and regular) parsers and returns a 
list.
-If the input list of parsers were "bro,snort,yaf", "bro,snort" and 
yaf, for example,
-then this method will return ["bro,snort,yaf", "bro,snort", "yaf"]
+If the input list of parsers were "bro,yaf,snort", "bro,snort" and 
yaf, for example,
+then this method will return ["bro,snort,yaf", "bro,snort", "yaf"].  
Sensors within
+a group are sorted alphabetically.
 :param params:
 :return: List containing the names of parsers
 """
 parserList = []
 parsers = shlex.shlex(params.parsers)
 for name in parsers:
+sensors = name.strip('",').split(",")
+# if name contains multiple sensors, sort them alphabetically
+if len(sensors) > 1:
+sensors.sort()
+name = '"' + ",".join(sensors) + '"'
 parserList.append(name.strip(','))
 return [s.translate(None, "'[]") for s in filter(None, parserList)]
 
diff --git a/metron-interface/metron-rest/README.md 
b/metron-interface/metron-rest/README.md
index 8aa172b..11f06bf 100644
--- a/metron-interface/metron-rest/README.md
+++ b/metron-interface/metron-rest/README.md
@@ -344,6 +344,10 @@ Request and Response objects are JSON formatted.  The JSON 
schemas are available
 | [ `GET 
/api/v1/sensor/parser/config/reload/available`](#get-apiv1sensorparserconfigreloadavailable)|
 | [ `DELETE 
/api/v1/sensor/parser/config/{name}`](#delete-apiv1sensorparserconfigname)|
 | [ `GET 
/api/v1/sensor/parser/config/{name}`](#get-apiv1sensorparserconfigname)|
+| [ `POST /api/v1/sensor/parser/group`](#post-apiv1sensorparsergroup)|
+| [ `GET /api/v1/sensor/parser/group/{name}`](#get-apiv1sensorparsergroupname)|
+| [ `GET /api/v1/sensor/parser/group`](#get-apiv1sensorparsergroup)|
+| [ `DELETE 
/api/v1/sensor/parser/group/{name}`](#delete-apiv1sensorparsergroupname)|
 | [ `POST 
/api/v1/stellar/apply/transformations`](#post-apiv1stellarapplytransformations)|
 | [ `GET /api/v1/stellar/list`](#get-apiv1stellarlist)|
 | [ `GET /api/v1/stellar/list/functions`](#get-apiv1stellarlistfunctions)|
@@ -787,6 +791,35 @@ Request and Response objects are JSON formatted.  The JSON 
schemas are available
   * Returns:
 * 200 - Returns SensorParserConfig
 * 404 - SensorParserConfig is missing
+
+### `POST /api/v1/sensor/parser/group`
+

[metron] branch master updated: METRON-1998 Only one sensor is flushed by tick tuple (merrimanr) closes apache/metron#1335

2019-02-20 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new d275a95  METRON-1998 Only one sensor is flushed by tick tuple 
(merrimanr) closes apache/metron#1335
d275a95 is described below

commit d275a958cb5b7bbab533d273dff80bc1e3e65fd0
Author: merrimanr 
AuthorDate: Wed Feb 20 16:11:50 2019 -0600

METRON-1998 Only one sensor is flushed by tick tuple (merrimanr) closes 
apache/metron#1335
---
 .../apache/metron/writer/BulkWriterComponent.java  | 13 +++-
 .../metron/writer/BulkWriterComponentTest.java | 78 ++
 2 files changed, 88 insertions(+), 3 deletions(-)

diff --git 
a/metron-platform/metron-writer/src/main/java/org/apache/metron/writer/BulkWriterComponent.java
 
b/metron-platform/metron-writer/src/main/java/org/apache/metron/writer/BulkWriterComponent.java
index 15e59d3..ad6d4d1 100644
--- 
a/metron-platform/metron-writer/src/main/java/org/apache/metron/writer/BulkWriterComponent.java
+++ 
b/metron-platform/metron-writer/src/main/java/org/apache/metron/writer/BulkWriterComponent.java
@@ -31,6 +31,8 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
+
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.configuration.writer.WriterConfiguration;
 import org.apache.metron.common.error.MetronError;
@@ -308,7 +310,7 @@ public class BulkWriterComponent {
 }
 long endTime = System.currentTimeMillis();
 long elapsed = endTime - startTime;
-LOG.debug("Bulk batch for sensor {} completed in ~{} ns", sensorType, 
elapsed);
+LOG.debug("Flushed batch successfully; sensorType={}, batchSize={}, 
took={} ms", sensorType, CollectionUtils.size(tupleList), elapsed);
   }
 
   // Flushes all queues older than their batchTimeouts.
@@ -320,17 +322,22 @@ public class BulkWriterComponent {
   {
 // No need to do "all" sensorTypes here, just the ones that have data 
batched up.
 // Note queues with batchSize == 1 don't get batched, so they never 
persist in the sensorTupleMap.
-for (String sensorType : sensorTupleMap.keySet()) {
+// Sensors are removed from the sensorTupleMap when flushed so we need to 
iterate over a copy of sensorTupleMap keys
+// to avoid a ConcurrentModificationException.
+for (String sensorType : new HashSet<>(sensorTupleMap.keySet())) {
   long[] batchTimeoutInfo = batchTimeoutMap.get(sensorType);
   if (batchTimeoutInfo == null  //Shouldn't happen, but conservatively 
flush if so
   || clock.currentTimeMillis() - batchTimeoutInfo[LAST_CREATE_TIME_MS] 
>= batchTimeoutInfo[TIMEOUT_MS]) {
 flush(sensorType, bulkMessageWriter, configurations, messageGetStrategy
, sensorTupleMap.get(sensorType), 
sensorMessageMap.get(sensorType));
-return;
   }
 }
   }
 
+  public int getDefaultBatchTimeout() {
+return defaultBatchTimeout;
+  }
+
   /**
* @param defaultBatchTimeout
*/
diff --git 
a/metron-platform/metron-writer/src/test/java/org/apache/metron/writer/BulkWriterComponentTest.java
 
b/metron-platform/metron-writer/src/test/java/org/apache/metron/writer/BulkWriterComponentTest.java
index 1a05ba4..754a650 100644
--- 
a/metron-platform/metron-writer/src/test/java/org/apache/metron/writer/BulkWriterComponentTest.java
+++ 
b/metron-platform/metron-writer/src/test/java/org/apache/metron/writer/BulkWriterComponentTest.java
@@ -17,10 +17,13 @@
  */
 package org.apache.metron.writer;
 
+import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.argThat;
 import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
@@ -38,6 +41,7 @@ import 
org.apache.metron.common.configuration.writer.ParserWriterConfiguration;
 import org.apache.metron.common.configuration.writer.WriterConfiguration;
 import org.apache.metron.common.error.MetronError;
 import org.apache.metron.common.message.MessageGetStrategy;
+import org.apache.metron.common.system.Clock;
 import org.apache.metron.common.utils.ErrorUtils;
 import org.apache.metron.common.writer.BulkMessageWriter;
 import org.apache.metron.common.writer.BulkWriterResponse;
@@ -270,4 +274,78 @@ public class BulkWriterComponentTest {
 verify(collector, times(1)).ack(missingTuple);
 verifyNoMoreInteractions(collector);
   }
+
+  @Test
+  public void flushTimeoutsShouldFlushAllMessagesAfterDefaultTimeout() throws 
Exception {
+Clock clock = mo

[metron] branch master updated: METRON-2007 Management UI not loading grok statements correctly (merrimanr) closes apache/metron#1340

2019-02-19 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 36946ff  METRON-2007 Management UI not loading grok statements 
correctly (merrimanr) closes apache/metron#1340
36946ff is described below

commit 36946ff09aadd54bebb503e89121d996f9242cc9
Author: merrimanr 
AuthorDate: Tue Feb 19 10:49:00 2019 -0600

METRON-2007 Management UI not loading grok statements correctly (merrimanr) 
closes apache/metron#1340
---
 .../sensor-parser-config.component.html| 12 
 .../sensor-parser-config.component.spec.ts | 32 +++---
 .../sensor-parser-config.component.ts  | 29 ++--
 .../src/app/service/grok-validation.service.ts |  2 +-
 .../metron-config/src/app/service/hdfs.service.ts  |  4 +--
 .../metron-config/src/app/service/kafka.service.ts |  2 +-
 6 files changed, 29 insertions(+), 52 deletions(-)

diff --git 
a/metron-interface/metron-config/src/app/sensors/sensor-parser-config/sensor-parser-config.component.html
 
b/metron-interface/metron-config/src/app/sensors/sensor-parser-config/sensor-parser-config.component.html
index c9895c7..b4bdd92 100644
--- 
a/metron-interface/metron-config/src/app/sensors/sensor-parser-config/sensor-parser-config.component.html
+++ 
b/metron-interface/metron-config/src/app/sensors/sensor-parser-config/sensor-parser-config.component.html
@@ -73,7 +73,7 @@
 
 GROK STATEMENT
 
-
+
 
 
 
@@ -85,7 +85,7 @@
 
 
 SCHEMA
-
+
 
 
  TRANSFORMATIONS  
{{getTransformationCount()}} 
@@ -94,7 +94,7 @@
 
 
 
-
+
 
 
   
@@ -104,14 +104,14 @@
 
 
 THREAT TRIAGE
-
+
 
 
  RULES  {{getRuleCount()}} 
 
 
 
-
+
 
 
 
@@ -197,7 +197,7 @@
 
 
 
-SAVE
+SAVE
 CANCEL
 Advanced
 
diff --git 
a/metron-interface/metron-config/src/app/sensors/sensor-parser-config/sensor-parser-config.component.spec.ts
 
b/metron-interface/metron-config/src/app/sensors/sensor-parser-config/sensor-parser-config.component.spec.ts
index 4be0703..ff1a812 100644
--- 
a/metron-interface/metron-config/src/app/sensors/sensor-parser-config/sensor-parser-config.component.spec.ts
+++ 
b/metron-interface/metron-config/src/app/sensors/sensor-parser-config/sensor-parser-config.component.spec.ts
@@ -713,11 +713,9 @@ describe('Component: SensorParserConfig', () => {
 
   it('should handle onSetKafkaTopic', async(() => {
 spyOn(component, 'getKafkaStatus');
-spyOn(component, 'isConfigValid');
 
 component.onSetKafkaTopic();
 expect(component.getKafkaStatus).not.toHaveBeenCalled();
-expect(component.isConfigValid).toHaveBeenCalled();
 
 component.sensorParserConfig.sensorTopic = 'bro';
 component.onSetKafkaTopic();
@@ -726,10 +724,8 @@ describe('Component: SensorParserConfig', () => {
   }));
 
   it('should handle onSetSensorName', async(() => {
-spyOn(component, 'isConfigValid');
 
 component.onSetSensorName();
-expect(component.isConfigValid).toHaveBeenCalled();
 expect(component.sensorNameValid).toEqual(false);
 
 component.sensorName = 'squid';
@@ -785,11 +781,9 @@ describe('Component: SensorParserConfig', () => {
 
   it('should handle onParserTypeChange', async(() => {
 spyOn(component, 'hidePane');
-spyOn(component, 'isConfigValid');
 
 component.onParserTypeChange();
 expect(component.hidePane).not.toHaveBeenCalled();
-expect(component.isConfigValid).toHaveBeenCalled();
 
 component.sensorParserConfig.parserClassName =
   'org.apache.metron.parsers.GrokParser';
@@ -803,37 +797,31 @@ describe('Component: SensorParserConfig', () => {
 expect(component.hidePane).toHaveBeenCalledWith(Pane.GROK);
   }));
 
-  it('should handle onGrokStatementChange', async(() =>

[metron] branch master updated: METRON-1993 Stellar REST_GET should handle responses when content length is less than zero (merrimanr) closes apache/metron#1331

2019-02-14 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 4d420f4  METRON-1993 Stellar REST_GET should handle responses when 
content length is less than zero (merrimanr) closes apache/metron#1331
4d420f4 is described below

commit 4d420f4d1704b2da4e725de3fda4c08d97691611
Author: merrimanr 
AuthorDate: Thu Feb 14 10:42:50 2019 -0600

METRON-1993 Stellar REST_GET should handle responses when content length is 
less than zero (merrimanr) closes apache/metron#1331
---
 .../metron/stellar/dsl/functions/RestConfig.java   |  9 +++
 .../stellar/dsl/functions/RestFunctions.java   | 30 ++--
 .../stellar/dsl/functions/RestFunctionsTest.java   | 85 --
 3 files changed, 111 insertions(+), 13 deletions(-)

diff --git 
a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/RestConfig.java
 
b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/RestConfig.java
index fdb6935..610717e 100644
--- 
a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/RestConfig.java
+++ 
b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/RestConfig.java
@@ -98,10 +98,15 @@ public class RestConfig extends HashMap {
*/
   public final static String POOLING_DEFAULT_MAX_PER_RUOTE = 
"pooling.default.max.per.route";
 
+  /**
+   * Setting this to true will verify the actual body content length equals 
the content length header
+   */
+  public final static String VERIFY_CONTENT_LENGTH = "verify.content.length";
 
   public RestConfig() {
 put(TIMEOUT, 1000);
 put(RESPONSE_CODES_ALLOWED, Collections.singletonList(200));
+put(VERIFY_CONTENT_LENGTH, false);
   }
 
   public String getBasicAuthUser() {
@@ -164,4 +169,8 @@ public class RestConfig extends HashMap {
   public Integer getPoolingDefaultMaxPerRoute() {
 return (Integer) get(POOLING_DEFAULT_MAX_PER_RUOTE);
   }
+
+  public Boolean verifyContentLength() {
+return (Boolean) get(VERIFY_CONTENT_LENGTH);
+  }
 }
diff --git 
a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/RestFunctions.java
 
b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/RestFunctions.java
index f07d54e..d6b03ce 100644
--- 
a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/RestFunctions.java
+++ 
b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/RestFunctions.java
@@ -244,15 +244,13 @@ public class RestFunctions {
 scheduledFuture.cancel(true);
   }
   int statusCode = response.getStatusLine().getStatusCode();
+  LOG.debug("request = {}; response = {}", httpGet, response);
   if (restConfig.getResponseCodesAllowed().contains(statusCode)) {
 HttpEntity httpEntity = response.getEntity();
 
-// Parse the reponse if present, return the empty value override if not
-if (httpEntity != null && httpEntity.getContentLength() > 0) {
-  String json = EntityUtils.toString(response.getEntity());
-  return JSONUtils.INSTANCE.load(json, JSONUtils.MAP_SUPPLIER);
-}
-return restConfig.getEmptyContentOverride();
+// Parse the response if present, return the empty value override if 
not
+Optional parsedResponse = parseResponse(restConfig, httpGet, 
httpEntity);
+return parsedResponse.orElseGet(restConfig::getEmptyContentOverride);
   } else {
 throw new IOException(String.format("Stellar REST request to %s 
expected status code to be one of %s but " +
 "failed with http status code %d: %s",
@@ -374,6 +372,26 @@ public class RestFunctions {
   return httpClientContext;
 }
 
+protected Optional parseResponse(RestConfig restConfig, HttpGet 
httpGet, HttpEntity httpEntity) throws IOException {
+  Optional parsedResponse = Optional.empty();
+  if (httpEntity != null) {
+int actualContentLength = 0;
+String json = EntityUtils.toString(httpEntity);
+if (json != null && !json.isEmpty()) {
+  actualContentLength = json.length();
+  parsedResponse = Optional.of(JSONUtils.INSTANCE.load(json, 
JSONUtils.MAP_SUPPLIER));
+}
+if (restConfig.verifyContentLength() && actualContentLength != 
httpEntity.getContentLength()) {
+  throw new IOException(String.format("Stellar REST request to %s 
returned incorrect or missing content length. " +
+  "Content length in the response was %d but the 
actual body content length was %d.",
+  httpGet.getURI().toString(),
+  httpEntit

[metron] branch master updated: METRON-1948 Dropped messages from REGEX_SELECT parser field transformation are not acked in Storm (merrimanr) closes apache/metron#1321

2019-01-28 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 01d6688  METRON-1948 Dropped messages from REGEX_SELECT parser field 
transformation are not acked in Storm (merrimanr) closes apache/metron#1321
01d6688 is described below

commit 01d66880d99f5f46770b0f02755f4e9d86980cf5
Author: merrimanr 
AuthorDate: Mon Jan 28 08:38:33 2019 -0600

METRON-1948 Dropped messages from REGEX_SELECT parser field transformation 
are not acked in Storm (merrimanr) closes apache/metron#1321
---
 .../integration/validation/StormParserDriver.java  | 18 ---
 .../apache/metron/writer/BulkWriterComponent.java  | 16 --
 .../metron/writer/BulkWriterComponentTest.java | 36 +-
 3 files changed, 63 insertions(+), 7 deletions(-)

diff --git 
a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/validation/StormParserDriver.java
 
b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/validation/StormParserDriver.java
index dfc454f..bfa1467 100644
--- 
a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/validation/StormParserDriver.java
+++ 
b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/validation/StormParserDriver.java
@@ -25,14 +25,20 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
+
 import org.apache.commons.lang.SerializationUtils;
+import org.apache.metron.common.configuration.IndexingConfigurations;
 import org.apache.metron.common.configuration.ParserConfigurations;
 import org.apache.metron.common.configuration.writer.WriterConfiguration;
+import org.apache.metron.common.writer.BulkMessageWriter;
+import org.apache.metron.common.writer.BulkWriterResponse;
 import org.apache.metron.common.writer.MessageWriter;
 import org.apache.metron.integration.ProcessorResult;
 import org.apache.metron.parsers.bolt.ParserBolt;
 import org.apache.metron.parsers.bolt.WriterHandler;
 import org.apache.storm.task.OutputCollector;
+import org.apache.storm.task.TopologyContext;
 import org.apache.storm.tuple.Tuple;
 import org.json.simple.JSONObject;
 import org.slf4j.Logger;
@@ -41,7 +47,7 @@ import org.slf4j.LoggerFactory;
 public class StormParserDriver extends ParserDriver {
   private static final Logger LOG = 
LoggerFactory.getLogger(StormParserDriver.class);
 
-  public static class CollectingWriter implements MessageWriter {
+  public static class CollectingWriter implements 
BulkMessageWriter {
 
 List output;
 public CollectingWriter(List output) {
@@ -49,13 +55,16 @@ public class StormParserDriver extends ParserDriver {
 }
 
 @Override
-public void init() {
+public void init(Map stormConf, TopologyContext topologyContext, 
WriterConfiguration config) throws Exception {
 
 }
 
 @Override
-public void write(String sensorType, WriterConfiguration configurations, 
Tuple tuple, JSONObject message) throws Exception {
-  output.add(message.toJSONString().getBytes());
+public BulkWriterResponse write(String sensorType, WriterConfiguration 
configurations, Iterable tuples, List messages) throws 
Exception {
+  messages.forEach(message -> 
output.add(message.toJSONString().getBytes()));
+  BulkWriterResponse bulkWriterResponse = new BulkWriterResponse();
+  bulkWriterResponse.addAllSuccesses(tuples);
+  return bulkWriterResponse;
 }
 
 @Override
@@ -83,6 +92,7 @@ public class StormParserDriver extends ParserDriver {
 
 @Override
 public ParserConfigurations getConfigurations() {
+  
config.getSensorParserConfig(sensorType).getParserConfig().put(IndexingConfigurations.BATCH_SIZE_CONF,
 1);
   return config;
 }
 
diff --git 
a/metron-platform/metron-writer/src/main/java/org/apache/metron/writer/BulkWriterComponent.java
 
b/metron-platform/metron-writer/src/main/java/org/apache/metron/writer/BulkWriterComponent.java
index 68585c5..15e59d3 100644
--- 
a/metron-platform/metron-writer/src/main/java/org/apache/metron/writer/BulkWriterComponent.java
+++ 
b/metron-platform/metron-writer/src/main/java/org/apache/metron/writer/BulkWriterComponent.java
@@ -29,6 +29,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.configuration.writer.WriterConfiguration;
@@ -126,8 +127,10 @@ public class BulkWriterComponent {
   .withThrowable(e)
   .addRawMessage(messageGetStrategy.get(t));
   collector.e

[metron] branch master updated: METRON-1945 Metron MPack support for Knox SSO setup (merrimanr) closes apache/metron#1308

2019-01-03 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 309ce65  METRON-1945 Metron MPack support for Knox SSO setup 
(merrimanr) closes apache/metron#1308
309ce65 is described below

commit 309ce65f863d2532ca29a1c779bda02c1d42ee4d
Author: merrimanr 
AuthorDate: Thu Jan 3 17:05:25 2019 -0600

METRON-1945 Metron MPack support for Knox SSO setup (merrimanr) closes 
apache/metron#1308
---
 .../CURRENT/configuration/metron-security-env.xml  |  43 +
 .../common-services/METRON/CURRENT/metainfo.xml|   3 +
 .../CURRENT/package/scripts/alerts_ui_master.py|  10 +++
 .../package/scripts/management_ui_master.py|  10 +++
 .../CURRENT/package/scripts/metron_client.py   |  21 +
 .../CURRENT/package/scripts/metron_service.py  |  39 
 .../CURRENT/package/scripts/params/params_linux.py |  47 +++---
 .../package/scripts/params/status_params.py|   6 +-
 .../METRON/CURRENT/package/scripts/rest_master.py  |   4 +
 .../package/templates/alerts-ui-app-config.json.j2 |   4 +
 .../templates/management-ui-app-config.json.j2 |   4 +
 .../METRON/CURRENT/package/templates/metron.xml.j2 |  56 
 .../CURRENT/package/templates/metronsso.xml.j2 | 100 +
 .../METRON/CURRENT/themes/metron_theme.json|  51 ++-
 metron-interface/README.md |  78 
 .../src/main/scripts/install_metron_knox.sh|  32 ---
 16 files changed, 485 insertions(+), 23 deletions(-)

diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-security-env.xml
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-security-env.xml
index ab1fe6c..ab3e532 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-security-env.xml
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-security-env.xml
@@ -182,5 +182,48 @@
 
 
   
+  
+metron.knox.enabled
+Knox Enabled
+false
+Enable Knox
+
+  value-list
+  
+
+  true
+  On
+
+
+  false
+  Off
+
+  
+  1
+  false
+
+
+  
+  
+metron.knox.sso.pubkey
+Knox SSO Public Key
+
+Knox public key used to verify Knox SSO tokens.
+
+
+  false
+  true
+
+  
+  
+metron.knox.sso.token.ttl
+Knox SSO Token Time to live
+30
+Controls the time to live for Knox SSO tokens in Metron.  
Units are in milliseconds.
+
+
+  false
+
+  
 
 
\ No newline at end of file
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
index 9516014..99e9325 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
@@ -416,6 +416,9 @@
 PYTHON
 1200
   
+  
+metron-security-env
+  
 
 
   
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_master.py
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_master.py
index 85c3be3..7cc2c31 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_master.py
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_master.py
@@ -19,6 +19,7 @@ limitations under the License.
 
 from resource_management.core.exceptions import ComponentIsNotRunning
 from resource_management.core.exceptions import ExecutionFailed
+from resource_management.core.exceptions import Fail
 from resource_management.core.resources.system import Directory
 from resource_management.core.resources.system import File
 from resource_management.core.source import Template
@@ -51,6 +52,15 @@ class AlertsUIMaster(Script):
  group=params.metron_group
  )
 
+File(format("{metron_alerts_ui_path}/assets/app-config.json"),
+ content=Template("alerts-ui-app-config.json.j2"),
+ owner=params.metron_user,
+ group

[metron] branch master updated: METRON-1958 Optimize Cypress to use best practices (sardell via merrimanr) closes apache/metron#1317

2019-01-03 Thread rmerriman
This is an automated email from the ASF dual-hosted git repository.

rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
 new 74658e9  METRON-1958 Optimize Cypress to use best practices (sardell 
via merrimanr) closes apache/metron#1317
74658e9 is described below

commit 74658e97a55aeac612a70689850d352d907adf96
Author: sardell 
AuthorDate: Thu Jan 3 09:40:57 2019 -0600

METRON-1958 Optimize Cypress to use best practices (sardell via merrimanr) 
closes apache/metron#1317
---
 .../CURRENT/package/templates/alerts_ui.yml.j2 |  2 ++
 metron-interface/metron-alerts/alerts_ui.yml   |  2 ++
 .../{alerts_ui.yml => alerts_ui_cypress.yml}   |  6 ++--
 metron-interface/metron-alerts/cypress.json|  3 +-
 .../cypress/integration/pcap/pcap.spec.js  | 38 --
 metron-interface/metron-alerts/package-lock.json   | 10 ++
 metron-interface/metron-alerts/package.json|  6 ++--
 .../metron-alerts/scripts/alerts-server.js |  6 ++--
 8 files changed, 48 insertions(+), 25 deletions(-)

diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/alerts_ui.yml.j2
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/alerts_ui.yml.j2
index a3e87cb..92a9510 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/alerts_ui.yml.j2
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/alerts_ui.yml.j2
@@ -21,3 +21,5 @@ port: {{metron_alerts_ui_port}}
 rest:
   host: {{metron_rest_host}}
   port: {{metron_rest_port}}
+
+dirPath: alerts-ui
diff --git a/metron-interface/metron-alerts/alerts_ui.yml 
b/metron-interface/metron-alerts/alerts_ui.yml
index 4481fa9..343d883 100644
--- a/metron-interface/metron-alerts/alerts_ui.yml
+++ b/metron-interface/metron-alerts/alerts_ui.yml
@@ -19,3 +19,5 @@ port: 4201
 rest:
   host: localhost
   port: 8080
+
+dirPath: alerts-ui
\ No newline at end of file
diff --git a/metron-interface/metron-alerts/alerts_ui.yml 
b/metron-interface/metron-alerts/alerts_ui_cypress.yml
similarity index 95%
copy from metron-interface/metron-alerts/alerts_ui.yml
copy to metron-interface/metron-alerts/alerts_ui_cypress.yml
index 4481fa9..ddf663a 100644
--- a/metron-interface/metron-alerts/alerts_ui.yml
+++ b/metron-interface/metron-alerts/alerts_ui_cypress.yml
@@ -14,8 +14,10 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 #
-port: 4201
+port: 4200
 
 rest:
   host: localhost
-  port: 8080
+  port: 4200
+
+dirPath: dist
\ No newline at end of file
diff --git a/metron-interface/metron-alerts/cypress.json 
b/metron-interface/metron-alerts/cypress.json
index 7c0410d..da8aafb 100644
--- a/metron-interface/metron-alerts/cypress.json
+++ b/metron-interface/metron-alerts/cypress.json
@@ -3,5 +3,6 @@
   "viewportHeight": 850,
   "video": false,
   "supportFile": false,
-  "pluginsFile": false
+  "pluginsFile": false,
+  "baseUrl": "http://localhost:4200;
 }
\ No newline at end of file
diff --git 
a/metron-interface/metron-alerts/cypress/integration/pcap/pcap.spec.js 
b/metron-interface/metron-alerts/cypress/integration/pcap/pcap.spec.js
index 58f7d26..835c714 100644
--- a/metron-interface/metron-alerts/cypress/integration/pcap/pcap.spec.js
+++ b/metron-interface/metron-alerts/cypress/integration/pcap/pcap.spec.js
@@ -25,8 +25,13 @@ context('PCAP Tab', () => {
   url: '/api/v1/user',
   response: 'user'
 });
+cy.route({
+  method: 'POST',
+  url: 'logout',
+  response: []
+});
 
-cy.route('GET', 'config', 'fixture:config.json');
+cy.route('GET', '/api/v1/global/config', 'fixture:config.json');
 cy.route('POST', 'search', 'fixture:search.json');
 
 cy.route({
@@ -34,15 +39,14 @@ context('PCAP Tab', () => {
   url: '/api/v1/pcap?state=*',
   response: []
 }).as('runningJobs');
-
-cy.visit('http://localhost:4200/login');
+
+cy.visit('login');
 cy.get('[name="user"]').type('user');
 cy.get('[name="password"]').type('password');
 cy.contains('LOG IN').click();
   });
 
   afterEach(() => {
-cy.get('.logout-link').click();
   });
 
   it('checking running jobs on navigating to PCAP tab', () => {
@@ -62,7 +66,7 @@ context('PCAP Tab', () => {
 cy.get('[data-qe-id="protocol"]').type('24');
 cy.get('[data-qe-id="include-reverse"]').check();
 cy.get('[data-qe-id="packet-filter"]').type('filter');
-
+
 cy.get('[data-qe-id="submit-button"]').click();
 
 cy.wait('@post

metron git commit: METRON-1850 Stellar REST function (merrimanr) closes apache/metron#1250

2018-11-08 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/master b5712af5b -> 3e73391ed


METRON-1850 Stellar REST function (merrimanr) closes apache/metron#1250


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/3e73391e
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/3e73391e
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/3e73391e

Branch: refs/heads/master
Commit: 3e73391ed518e6d4e2f87a37745a34581782236b
Parents: b5712af
Author: merrimanr 
Authored: Thu Nov 8 16:44:32 2018 -0600
Committer: rmerriman 
Committed: Thu Nov 8 16:44:32 2018 -0600

--
 metron-analytics/metron-maas-common/pom.xml |   2 +-
 .../common/bolt/ConfiguredEnrichmentBolt.java   |  14 +
 .../common/bolt/ConfiguredParserBolt.java   |  13 +
 metron-platform/metron-data-management/pom.xml  |   5 +-
 .../enrichment/bolt/GenericEnrichmentBolt.java  |   1 +
 .../enrichment/bolt/ThreatIntelJoinBolt.java|   6 -
 metron-stellar/stellar-common/README.md |  98 ++-
 metron-stellar/stellar-common/pom.xml   |  40 ++
 .../stellar/common/shell/cli/StellarShell.java  |   2 +
 .../org/apache/metron/stellar/dsl/Context.java  |   5 +
 .../stellar/dsl/functions/RestConfig.java   | 166 +
 .../stellar/dsl/functions/RestFunctions.java| 388 
 .../dsl/functions/RestFunctionsTest.java| 604 +++
 pom.xml |   1 +
 14 files changed, 1334 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/3e73391e/metron-analytics/metron-maas-common/pom.xml
--
diff --git a/metron-analytics/metron-maas-common/pom.xml 
b/metron-analytics/metron-maas-common/pom.xml
index b5cf1c9..062e3db 100644
--- a/metron-analytics/metron-maas-common/pom.xml
+++ b/metron-analytics/metron-maas-common/pom.xml
@@ -62,7 +62,7 @@
 
   org.apache.httpcomponents
   httpclient
-  4.3.2
+  ${global_httpclient_version}
 
 
   org.codehaus.jackson

http://git-wip-us.apache.org/repos/asf/metron/blob/3e73391e/metron-platform/metron-common/src/main/java/org/apache/metron/common/bolt/ConfiguredEnrichmentBolt.java
--
diff --git 
a/metron-platform/metron-common/src/main/java/org/apache/metron/common/bolt/ConfiguredEnrichmentBolt.java
 
b/metron-platform/metron-common/src/main/java/org/apache/metron/common/bolt/ConfiguredEnrichmentBolt.java
index c28ca7b..2e03a36 100644
--- 
a/metron-platform/metron-common/src/main/java/org/apache/metron/common/bolt/ConfiguredEnrichmentBolt.java
+++ 
b/metron-platform/metron-common/src/main/java/org/apache/metron/common/bolt/ConfiguredEnrichmentBolt.java
@@ -17,8 +17,10 @@
  */
 package org.apache.metron.common.bolt;
 
+import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import org.apache.metron.common.configuration.EnrichmentConfigurations;
+import org.apache.metron.stellar.dsl.StellarFunctions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -31,4 +33,16 @@ public abstract class ConfiguredEnrichmentBolt extends 
ConfiguredBolthttps://storm.apache.org/releases/1.0.6/javadocs/org/apache/storm/task/IBolt.html#cleanup--
 for more detail.
+super.cleanup();
+try {
+  StellarFunctions.close();
+} catch (IOException e) {
+  LOG.error(e.getMessage(), e);
+}
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/metron/blob/3e73391e/metron-platform/metron-common/src/main/java/org/apache/metron/common/bolt/ConfiguredParserBolt.java
--
diff --git 
a/metron-platform/metron-common/src/main/java/org/apache/metron/common/bolt/ConfiguredParserBolt.java
 
b/metron-platform/metron-common/src/main/java/org/apache/metron/common/bolt/ConfiguredParserBolt.java
index 14ce50b..17b614b 100644
--- 
a/metron-platform/metron-common/src/main/java/org/apache/metron/common/bolt/ConfiguredParserBolt.java
+++ 
b/metron-platform/metron-common/src/main/java/org/apache/metron/common/bolt/ConfiguredParserBolt.java
@@ -17,9 +17,11 @@
  */
 package org.apache.metron.common.bolt;
 
+import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import org.apache.metron.common.configuration.ParserConfigurations;
 import org.apache.metron.common.configuration.SensorParserConfig;
+import org.apache.metron.stellar.dsl.StellarFunctions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -36,4 +38,15 @@ public abstract class ConfiguredParserBolt extends 
ConfiguredBolthttps://storm.apache.org/releases/1.0.6/javadocs/org/apache/storm/task/IBolt.html#cleanup--
 for more detail.
+super.cleanup();
+try {
+  StellarFunctions.close();
+} ca

metron git commit: METRON-1830 Re-implement Alerts dialog box without jQuery (sardell via merrimanr) closes apache/metron#1240

2018-10-25 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/master 0e037edad -> eee996302


METRON-1830 Re-implement Alerts dialog box without jQuery (sardell via 
merrimanr) closes apache/metron#1240


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/eee99630
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/eee99630
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/eee99630

Branch: refs/heads/master
Commit: eee99630270e08412e589b99afafbb2246f88af5
Parents: 0e037ed
Author: sardell 
Authored: Thu Oct 25 07:59:44 2018 -0500
Committer: rmerriman 
Committed: Thu Oct 25 07:59:44 2018 -0500

--
 .../alert-details/alert-details.component.ts|  10 +-
 .../alerts/alerts-list/alerts-list.component.ts |   9 +-
 .../table-view/table-view.component.spec.ts |   4 +-
 .../table-view/table-view.component.ts  |  49 ---
 .../tree-view/tree-view.component.spec.ts   |   4 +-
 .../tree-view/tree-view.component.ts|  20 +--
 .../alerts/meta-alerts/meta-alerts.component.ts |   2 -
 .../save-search/save-search.component.spec.ts   |   4 +-
 .../alerts/save-search/save-search.component.ts |  12 +-
 .../saved-searches.component.spec.ts|   5 +-
 .../saved-searches/saved-searches.component.ts  |  41 --
 .../metron-alerts/src/app/app.component.html|   1 +
 .../metron-alerts/src/app/app.component.spec.ts |   4 +
 .../metron-alerts/src/app/app.module.ts |  12 +-
 .../src/app/model/confirmation-type.ts  |  21 +++
 .../metron-alerts/src/app/model/dialog-type.ts  |  21 +++
 .../src/app/service/dialog.service.spec.ts  |  78 
 .../src/app/service/dialog.service.ts   |  55 
 .../src/app/shared/metron-dialog-box.ts |  91 -
 .../metron-dialog/metron-dialog.component.html  |  40 ++
 .../metron-dialog/metron-dialog.component.scss  |  20 +++
 .../metron-dialog.component.spec.ts | 127 +++
 .../metron-dialog/metron-dialog.component.ts|  66 ++
 23 files changed, 529 insertions(+), 167 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/eee99630/metron-interface/metron-alerts/src/app/alerts/alert-details/alert-details.component.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/alerts/alert-details/alert-details.component.ts
 
b/metron-interface/metron-alerts/src/app/alerts/alert-details/alert-details.component.ts
index 0693457..4c0b18b 100644
--- 
a/metron-interface/metron-alerts/src/app/alerts/alert-details/alert-details.component.ts
+++ 
b/metron-interface/metron-alerts/src/app/alerts/alert-details/alert-details.component.ts
@@ -29,10 +29,11 @@ import {PatchRequest} from '../../model/patch-request';
 import {Patch} from '../../model/patch';
 import {AlertComment} from './alert-comment';
 import {AuthenticationService} from '../../service/authentication.service';
-import {MetronDialogBox} from '../../shared/metron-dialog-box';
 import {CommentAddRemoveRequest} from "../../model/comment-add-remove-request";
 import {META_ALERTS_SENSOR_TYPE} from '../../utils/constants';
 import {GlobalConfigService} from '../../service/global-config.service';
+import { DialogService } from 'app/service/dialog.service';
+import { ConfirmationType } from 'app/model/confirmation-type';
 
 export enum AlertState {
   NEW, OPEN, ESCALATE, DISMISS, RESOLVE
@@ -83,7 +84,7 @@ export class AlertDetailsComponent implements OnInit {
   private updateService: UpdateService,
   private alertsService: AlertsService,
   private authenticationService: AuthenticationService,
-  private metronDialogBox: MetronDialogBox,
+  private dialogService: DialogService,
   globalConfigService: GlobalConfigService) {
 this.globalConfigService = globalConfigService;
   }
@@ -249,8 +250,8 @@ export class AlertDetailsComponent implements OnInit {
   commentText += ' \'' + 
this.alertCommentsWrapper[index].alertComment.comment + '\'';
 }
 
-
this.metronDialogBox.showConfirmationMessage(commentText).subscribe(response => 
{
-  if (response) {
+const confirmedSubscription = 
this.dialogService.launchDialog(commentText).subscribe(action => {
+  if (action === ConfirmationType.Confirmed) {
 let deletedCommentWrapper = this.alertCommentsWrapper.splice(index, 
1)[0];
 let commentRequest = new CommentAddRemoveRequest();
 commentRequest.guid = this.alertSource.guid;
@@ -268,6 +269,7 @@ export class AlertDetailsComponent implements OnInit {
   this.alertCommentsWrapper.sort((a, b) => 
b.alertComment.timestamp - a.alertComment.timestamp);
 });
   }
+  confirmedSu

metron git commit: METRON-1829 Large Error Message Causes Slow Search Performance (merrimanr) closes apache/metron#1239

2018-10-22 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/master 2531c3e19 -> d44a39256


METRON-1829 Large Error Message Causes Slow Search Performance (merrimanr) 
closes apache/metron#1239


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/d44a3925
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/d44a3925
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/d44a3925

Branch: refs/heads/master
Commit: d44a392567e35022bfb35a787b55aff3447ac60e
Parents: 2531c3e
Author: merrimanr 
Authored: Mon Oct 22 08:43:10 2018 -0500
Committer: rmerriman 
Committed: Mon Oct 22 08:43:10 2018 -0500

--
 .../bolt/BulkMessageWriterBoltTest.java |  2 +-
 metron-platform/metron-writer/pom.xml   |  6 ++
 .../metron/writer/BulkWriterComponent.java  | 33 ++-
 .../writer/bolt/BulkMessageWriterBolt.java  |  2 +-
 .../metron/writer/BulkWriterComponentTest.java  | 61 +++-
 5 files changed, 76 insertions(+), 28 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/d44a3925/metron-platform/metron-enrichment/src/test/java/org/apache/metron/enrichment/bolt/BulkMessageWriterBoltTest.java
--
diff --git 
a/metron-platform/metron-enrichment/src/test/java/org/apache/metron/enrichment/bolt/BulkMessageWriterBoltTest.java
 
b/metron-platform/metron-enrichment/src/test/java/org/apache/metron/enrichment/bolt/BulkMessageWriterBoltTest.java
index 588fc58..083628c 100644
--- 
a/metron-platform/metron-enrichment/src/test/java/org/apache/metron/enrichment/bolt/BulkMessageWriterBoltTest.java
+++ 
b/metron-platform/metron-enrichment/src/test/java/org/apache/metron/enrichment/bolt/BulkMessageWriterBoltTest.java
@@ -207,7 +207,7 @@ public class BulkMessageWriterBoltTest extends 
BaseEnrichmentBoltTest {
 }
 UnitTestHelper.setLog4jLevel(BulkWriterComponent.class, Level.ERROR);
 verify(outputCollector, times(5)).ack(tuple);
-verify(outputCollector, times(1)).emit(eq(Constants.ERROR_STREAM), 
any(Values.class));
+verify(outputCollector, times(5)).emit(eq(Constants.ERROR_STREAM), 
any(Values.class));
 verify(outputCollector, times(1)).reportError(any(Throwable.class));
   }
 

http://git-wip-us.apache.org/repos/asf/metron/blob/d44a3925/metron-platform/metron-writer/pom.xml
--
diff --git a/metron-platform/metron-writer/pom.xml 
b/metron-platform/metron-writer/pom.xml
index e845516..6d08093 100644
--- a/metron-platform/metron-writer/pom.xml
+++ b/metron-platform/metron-writer/pom.xml
@@ -207,6 +207,12 @@
 metron-common
 ${project.parent.version}
 
+
+org.apache.metron
+metron-test-utilities
+${project.parent.version}
+test
+
 
 
 

http://git-wip-us.apache.org/repos/asf/metron/blob/d44a3925/metron-platform/metron-writer/src/main/java/org/apache/metron/writer/BulkWriterComponent.java
--
diff --git 
a/metron-platform/metron-writer/src/main/java/org/apache/metron/writer/BulkWriterComponent.java
 
b/metron-platform/metron-writer/src/main/java/org/apache/metron/writer/BulkWriterComponent.java
index 7678584..68585c5 100644
--- 
a/metron-platform/metron-writer/src/main/java/org/apache/metron/writer/BulkWriterComponent.java
+++ 
b/metron-platform/metron-writer/src/main/java/org/apache/metron/writer/BulkWriterComponent.java
@@ -40,6 +40,7 @@ import org.apache.metron.common.writer.BulkMessageWriter;
 import org.apache.metron.common.writer.BulkWriterResponse;
 import org.apache.storm.task.OutputCollector;
 import org.apache.storm.tuple.Tuple;
+import org.apache.storm.tuple.Values;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -118,12 +119,18 @@ public class BulkWriterComponent {
 
   public void error(String sensorType, Throwable e, Iterable tuples, 
MessageGetStrategy messageGetStrategy) {
 LOG.error(format("Failing %d tuple(s); sensorType=%s", 
Iterables.size(tuples), sensorType), e);
-MetronError error = new MetronError()
-.withSensorType(Collections.singleton(sensorType))
-.withErrorType(Constants.ErrorType.INDEXING_ERROR)
-.withThrowable(e);
-tuples.forEach(t -> error.addRawMessage(messageGetStrategy.get(t)));
-handleError(tuples, error);
+tuples.forEach(t -> {
+  MetronError error = new MetronError()
+  .withSensorType(Collections.singleton(sensorType))
+  .withErrorType(Constants.ErrorType.INDEXING_ERROR)
+  .withThrowable(e)
+  .addRawMessage(messageGetStrategy.get(t));
+  collector.emit(Constants.ERROR_

metron git commit: METRON-1816 Date format Stellar function (merrimanr) closes apache/metron#1233

2018-10-18 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/master 28542ad64 -> bf32fef6a


METRON-1816 Date format Stellar function (merrimanr) closes apache/metron#1233


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/bf32fef6
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/bf32fef6
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/bf32fef6

Branch: refs/heads/master
Commit: bf32fef6a4a02c5b21ec1f6d97fbd83de78a996e
Parents: 28542ad
Author: merrimanr 
Authored: Thu Oct 18 17:00:44 2018 -0500
Committer: rmerriman 
Committed: Thu Oct 18 17:00:44 2018 -0500

--
 metron-stellar/stellar-common/README.md |  9 +
 .../stellar/dsl/functions/DateFunctions.java| 42 
 .../dsl/functions/DateFunctionsTest.java| 38 ++
 3 files changed, 89 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/bf32fef6/metron-stellar/stellar-common/README.md
--
diff --git a/metron-stellar/stellar-common/README.md 
b/metron-stellar/stellar-common/README.md
index 468f358..0f3bb6a 100644
--- a/metron-stellar/stellar-common/README.md
+++ b/metron-stellar/stellar-common/README.md
@@ -169,6 +169,7 @@ Where:
 | [ `CHOP`](#chop) 
  |
 | [ `CHOMP`](#chomp)   
  |
 | [ `COUNT_MATCHES`](#count_matches)   
  |
+| [ `DATE_FORMAT`](#date_format)
 | [ `DAY_OF_MONTH`](#day_of_month) 
  |
 | [ `DAY_OF_WEEK`](#day_of_week)   
  |
 | [ `DAY_OF_YEAR`](#day_of_year)   
  |
@@ -379,6 +380,14 @@ Where:
 * substring/character - the substring or character to count, may be null.
   * Returns: the number of non-overlapping occurrences, 0 if either 
CharSequence is null.
 
+### `DATE_FORMAT`
+  * Description: Takes an epoch timestamp and converts it to a date format.
+  * Input:
+* format - DateTime format as a String.
+* timestampField - Optional epoch time in Long format.  Defaults to now.
+* timezone - Optional timezone in String format.
+  * Returns: Formatted date.
+  
 ### `DAY_OF_MONTH`
   * Description: The numbered day within the month.  The first day within the 
month has a value of 1.
   * Input:

http://git-wip-us.apache.org/repos/asf/metron/blob/bf32fef6/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/DateFunctions.java
--
diff --git 
a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/DateFunctions.java
 
b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/DateFunctions.java
index 212d6e9..17f5f8d 100644
--- 
a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/DateFunctions.java
+++ 
b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/DateFunctions.java
@@ -28,6 +28,7 @@ import org.apache.metron.stellar.common.utils.ConversionUtils;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 import java.util.Optional;
 import java.util.TimeZone;
@@ -109,6 +110,13 @@ public class DateFunctions {
 return sdf.parse(date).getTime();
   }
 
+  public static String getDateFormat(String format, Optional epochTime, 
Optional timezone) {
+Long time = epochTime.orElseGet(System::currentTimeMillis);
+TimezonedFormat fmt = timezone.map(s -> new TimezonedFormat(format, 
s)).orElseGet(() -> new TimezonedFormat(format));
+SimpleDateFormat sdf = formatCache.get(fmt).get();
+return sdf.format(new Date(time));
+  }
+
 
   /**
* Stellar Function: TO_EPOCH_TIMESTAMP
@@ -144,6 +152,40 @@ public class DateFunctions {
 }
   }
 
+  @Stellar( name="DATE_FORMAT",
+  description = "Takes an epoch timestamp and converts it to a date 
format.",
+  params = {"format - DateTime format as a String."
+  , "timestampField - Optional epoch time in Long format.  
Defaults to now."
+  , "timezone - Optional timezone in String format."},
+  returns="Formatted date."
+  )
+  public static class DateFormat extends BaseStellarFunction {
+
+public Object apply(List objects) {
+  int size = objects.size();
+  Optional formatObj = Optional.

[2/2] metron git commit: METRON-1681 Decouple the ParserBolt from the Parse execution logic (merrimanr) closes apache/metron#1213

2018-10-18 Thread rmerriman
METRON-1681 Decouple the ParserBolt from the Parse execution logic (merrimanr) 
closes apache/metron#1213


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/28542ad6
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/28542ad6
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/28542ad6

Branch: refs/heads/master
Commit: 28542ad64cf63f17b728b4b1c0e995a8973767f7
Parents: 08f3de0
Author: merrimanr 
Authored: Thu Oct 18 13:59:52 2018 -0500
Committer: rmerriman 
Committed: Thu Oct 18 13:59:52 2018 -0500

--
 .../impl/SensorParserConfigServiceImpl.java |  51 +-
 .../parsers/DefaultParserRunnerResults.java |  71 ++
 .../org/apache/metron/parsers/GrokParser.java   |   3 +-
 .../org/apache/metron/parsers/ParserRunner.java |  60 ++
 .../apache/metron/parsers/ParserRunnerImpl.java | 322 +++
 .../metron/parsers/ParserRunnerResults.java |  33 +
 .../apache/metron/parsers/bolt/ParserBolt.java  | 381 +++-
 .../parsers/filters/BroMessageFilter.java   |   2 +-
 .../metron/parsers/filters/StellarFilter.java   |   2 +-
 .../parsers/interfaces/MessageFilter.java   |   2 +-
 .../parsers/interfaces/MessageParser.java   |  27 +-
 .../interfaces/MultilineMessageParser.java  |  51 --
 .../metron/parsers/syslog/Syslog5424Parser.java |   4 +-
 .../parsers/topology/ParserComponent.java   |  56 ++
 .../parsers/topology/ParserComponents.java  |  67 --
 .../parsers/topology/ParserTopologyBuilder.java |  39 +-
 .../org/apache/metron/filters/FiltersTest.java  |   4 +-
 .../metron/parsers/MessageParserTest.java   | 108 ++-
 .../metron/parsers/ParserRunnerImplTest.java| 390 +
 .../metron/parsers/bolt/ParserBoltTest.java | 859 ++-
 .../parsers/integration/ParserDriver.java   |  60 +-
 21 files changed, 1481 insertions(+),  deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/28542ad6/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/SensorParserConfigServiceImpl.java
--
diff --git 
a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/SensorParserConfigServiceImpl.java
 
b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/SensorParserConfigServiceImpl.java
index 4cd272e..d0e4b3d 100644
--- 
a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/SensorParserConfigServiceImpl.java
+++ 
b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/SensorParserConfigServiceImpl.java
@@ -20,12 +20,10 @@ package org.apache.metron.rest.service.impl;
 import static org.apache.metron.rest.MetronRestConstants.GROK_CLASS_NAME;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
-import java.util.Set;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.hadoop.fs.Path;
 import org.apache.metron.common.configuration.ConfigurationType;
@@ -35,18 +33,14 @@ import 
org.apache.metron.common.configuration.SensorParserConfig;
 import org.apache.metron.common.zookeeper.ConfigurationsCache;
 import org.apache.metron.parsers.interfaces.MessageParser;
 import org.apache.metron.parsers.interfaces.MessageParserResult;
-import org.apache.metron.parsers.interfaces.MultilineMessageParser;
 import org.apache.metron.rest.MetronRestConstants;
 import org.apache.metron.rest.RestException;
 import org.apache.metron.rest.model.ParseMessageRequest;
 import org.apache.metron.rest.service.GrokService;
 import org.apache.metron.rest.service.SensorParserConfigService;
 import org.apache.metron.rest.util.ParserIndex;
-import org.apache.metron.common.zookeeper.ZKConfigurationsCache;
 import org.apache.zookeeper.KeeperException;
 import org.json.simple.JSONObject;
-import org.reflections.Reflections;
-import org.reflections.util.ConfigurationBuilder;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -141,53 +135,13 @@ public class SensorParserConfigServiceImpl implements 
SensorParserConfigService
 } else if (sensorParserConfig.getParserClassName() == null) {
   throw new RestException("SensorParserConfig must have a 
parserClassName");
 } else {
-  MultilineMessageParser parser;
-  Object parserObject;
+  MessageParser parser;
   try {
-parserObject = Class.forName(sensorParserConfig.getParserClassName())
+parser = (MessageParser) 
Class.forName(sensorParserConfig.getParserClassName())
 .newInstance();
   } catch (Exception e) {
 throw new RestException(e.toString(), 

[1/2] metron git commit: METRON-1681 Decouple the ParserBolt from the Parse execution logic (merrimanr) closes apache/metron#1213

2018-10-18 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/master 08f3de0fe -> 28542ad64


http://git-wip-us.apache.org/repos/asf/metron/blob/28542ad6/metron-platform/metron-parsers/src/test/java/org/apache/metron/parsers/ParserRunnerImplTest.java
--
diff --git 
a/metron-platform/metron-parsers/src/test/java/org/apache/metron/parsers/ParserRunnerImplTest.java
 
b/metron-platform/metron-parsers/src/test/java/org/apache/metron/parsers/ParserRunnerImplTest.java
new file mode 100644
index 000..5f05b24
--- /dev/null
+++ 
b/metron-platform/metron-parsers/src/test/java/org/apache/metron/parsers/ParserRunnerImplTest.java
@@ -0,0 +1,390 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.metron.parsers;
+
+import org.adrianwalker.multilinestring.Multiline;
+import org.apache.metron.common.Constants;
+import org.apache.metron.common.configuration.ParserConfigurations;
+import org.apache.metron.common.configuration.SensorParserConfig;
+import org.apache.metron.common.error.MetronError;
+import org.apache.metron.common.message.metadata.RawMessage;
+import org.apache.metron.common.utils.JSONUtils;
+import org.apache.metron.common.utils.ReflectionUtils;
+import org.apache.metron.parsers.filters.Filters;
+import org.apache.metron.parsers.filters.StellarFilter;
+import org.apache.metron.parsers.interfaces.MessageFilter;
+import org.apache.metron.parsers.interfaces.MessageParser;
+import org.apache.metron.parsers.interfaces.MessageParserResult;
+import org.apache.metron.parsers.topology.ParserComponent;
+import org.apache.metron.parsers.ParserRunnerImpl.ProcessResult;
+import org.apache.metron.stellar.dsl.Context;
+import org.json.simple.JSONObject;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Optional;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.powermock.api.mockito.PowerMockito.mockStatic;
+import static org.powermock.api.mockito.PowerMockito.when;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({ParserRunnerImpl.class, ReflectionUtils.class, Filters.class})
+public class ParserRunnerImplTest {
+
+  @Rule
+  public final ExpectedException exception = ExpectedException.none();
+
+  /**
+   {
+   "fieldValidations" : [
+ {
+   "input" : [ "ip_src_addr", "ip_dst_addr"],
+   "validation" : "IP"
+ }
+   ]
+   }
+   */
+  @Multiline
+  private String globalConfigString;
+
+  /**
+   {
+ "parserClassName":"org.apache.metron.parsers.bro.BasicBroParser",
+ "filterClassName":"org.apache.metron.parsers.filters.StellarFilter",
+ "sensorTopic":"bro",
+ "parserConfig": {
+   "field": "value"
+ },
+ "fieldTransformations" : [
+   {
+ "input" : "field1",
+ "transformation" : "REMOVE"
+   }
+ ]
+   }
+   */
+  @Multiline
+  private String broConfigString;
+
+  /**
+   {
+ "parserClassName":"org.apache.metron.parsers.snort.BasicSnortParser",
+ "sensorTopic":"snort",
+ "parserConfig": {}
+   }
+   */
+  @Multiline
+  private String snortConfigString;
+
+  private ParserConfigurations parserConfigurations;
+  private MessageParser broParser;
+  private MessageParser snortParser;
+  private MessageFilter stellarFilter;
+  private ParserRunnerImpl parserRunner;
+
+
+  @Before
+  public void setup() throws IOException {
+parserConfigurations = new ParserConfigurations();
+SensorParserConfig broConfig = 
SensorParserConfig.fromBytes(broConfigString.getBytes());
+SensorParserConfig 

metron git commit: METRON-1805 Provide a default value for the Storm topology.max.spout.pending setting (merrimanr) closes apache/metron#1221

2018-10-15 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/master 647896604 -> 621415067


METRON-1805 Provide a default value for the Storm topology.max.spout.pending 
setting (merrimanr) closes apache/metron#1221


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/62141506
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/62141506
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/62141506

Branch: refs/heads/master
Commit: 621415067dc727838da8e14925c15120b0e479de
Parents: 6478966
Author: merrimanr 
Authored: Mon Oct 15 14:50:10 2018 -0500
Committer: rmerriman 
Committed: Mon Oct 15 14:50:10 2018 -0500

--
 .../METRON/CURRENT/configuration/metron-indexing-env.xml | 4 ++--
 .../METRON/CURRENT/configuration/metron-profiler-env.xml | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/62141506/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-indexing-env.xml
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-indexing-env.xml
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-indexing-env.xml
index 3d268b7..ebc9759 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-indexing-env.xml
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-indexing-env.xml
@@ -146,7 +146,7 @@
 
 ra_indexing_topology_max_spout_pending
 Indexing Topology Spout Max Pending Tuples
-
+300
 Indexing Max Pending for Random Access
 
 true
@@ -155,7 +155,7 @@
  
 batch_indexing_topology_max_spout_pending
 Indexing Topology Spout Max Pending Tuples
-
+300
 Indexing Max Pending for HDFS
 
 true

http://git-wip-us.apache.org/repos/asf/metron/blob/62141506/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-profiler-env.xml
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-profiler-env.xml
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-profiler-env.xml
index 07b8d11..c45d799 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-profiler-env.xml
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-profiler-env.xml
@@ -165,7 +165,7 @@
 profiler_topology_max_spout_pending
 Profiler Topology Spout Max Pending Tuples
 Spout Max Pending Tuples
-
+300
 
 true
 



metron git commit: METRON-1811 Alert Search Fails When Sorting by Alert Status (merrimanr) closes apache/metron#1231

2018-10-09 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/master 3467ffdb1 -> 747220f00


METRON-1811 Alert Search Fails When Sorting by Alert Status (merrimanr) closes 
apache/metron#1231


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/747220f0
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/747220f0
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/747220f0

Branch: refs/heads/master
Commit: 747220f000188557bfa860b48f6eb4bc49758d4a
Parents: 3467ffd
Author: merrimanr 
Authored: Tue Oct 9 15:33:39 2018 -0500
Committer: rmerriman 
Committed: Tue Oct 9 15:33:39 2018 -0500

--
 .../CURRENT/package/files/bro_index.template|   3 +
 .../CURRENT/package/files/snort_index.template  |   3 +
 .../CURRENT/package/files/yaf_index.template|   3 +
 metron-platform/metron-elasticsearch/README.md  |  20 +-
 .../ElasticsearchSearchIntegrationTest.java | 211 ++-
 .../indexing/dao/SearchIntegrationTest.java |  34 +--
 .../src/main/config/schema/bro/schema.xml   |   1 +
 .../src/main/config/schema/snort/schema.xml |   1 +
 .../src/main/config/schema/yaf/schema.xml   |   1 +
 .../integration/SolrSearchIntegrationTest.java  |   8 +-
 10 files changed, 112 insertions(+), 173 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/747220f0/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/bro_index.template
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/bro_index.template
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/bro_index.template
index 17ad4d2..48e76c7 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/bro_index.template
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/bro_index.template
@@ -133,6 +133,9 @@
 "source:type": {
   "type": "keyword"
 },
+"alert_status": {
+  "type": "keyword"
+},
 /*
  * Widely-used Bro fields (potentially renamed during Metron ingest)
  */

http://git-wip-us.apache.org/repos/asf/metron/blob/747220f0/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/snort_index.template
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/snort_index.template
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/snort_index.template
index f7c6e59..139dbc9 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/snort_index.template
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/snort_index.template
@@ -123,6 +123,9 @@
 "source:type": {
   "type": "keyword"
 },
+"alert_status": {
+  "type": "keyword"
+},
 "ip_dst_addr": {
   "type": "ip"
 },

http://git-wip-us.apache.org/repos/asf/metron/blob/747220f0/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/yaf_index.template
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/yaf_index.template
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/yaf_index.template
index f4093ba..4a3e5f9 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/yaf_index.template
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/yaf_index.template
@@ -123,6 +123,9 @@
 "source:type": {
   "type": "keyword"
 },
+"alert_status": {
+  "type": "keyword"
+},
 "ip_dst_addr": {
   "type": "ip"
 },

http://git-wip-us.apache.org/repos/asf/metron/blob

metron git commit: METRON-1807 Auto populate the recommended values to some of the metron config parameters (MohanDV via merrimanr) closes apache/metron#1227

2018-10-08 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/master 891bf4952 -> 269b91d01


METRON-1807 Auto populate the recommended values to some of the metron config 
parameters  (MohanDV via merrimanr) closes apache/metron#1227


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/269b91d0
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/269b91d0
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/269b91d0

Branch: refs/heads/master
Commit: 269b91d015c67b0ae49a78e5c457408e1b431c25
Parents: 891bf49
Author: MohanDV 
Authored: Mon Oct 8 11:20:53 2018 -0500
Committer: rmerriman 
Committed: Mon Oct 8 11:20:53 2018 -0500

--
 .../METRON/CURRENT/configuration/metron-env.xml | 12 
 .../common-services/METRON/CURRENT/service_advisor.py   | 10 ++
 2 files changed, 18 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/269b91d0/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-env.xml
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-env.xml
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-env.xml
index cdef7cf..81dda6c 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-env.xml
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-env.xml
@@ -130,17 +130,21 @@
 true
 
 
-
+
 storm_rest_addr
 Storm Rest Server Address
 URL of Storm UI (http://storm.ui.hostname:8744). If no 
protocol is provided, http is assumed.
-
+
+true
+
 
-
+
 zeppelin_server_url
 Zeppelin Server Address
 URL of Zeppelin 
(zeppelin.server.addr:zeppelin.server.port)
-
+
+true
+
 
 
 metron_principal_name

http://git-wip-us.apache.org/repos/asf/metron/blob/269b91d0/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/service_advisor.py
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/service_advisor.py
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/service_advisor.py
index b008fc0..36cec7c 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/service_advisor.py
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/service_advisor.py
@@ -158,6 +158,16 @@ class 
METRON${metron.short.version}ServiceAdvisor(service_advisor.ServiceAdvisor
 putMetronEnvProperty = self.putProperty(configurations, 
"metron-env", services)
 putMetronEnvProperty("zeppelin_server_url", zeppelinServerUrl)
 
+#Suggest Zookeeper quorum
+if "solr-cloud" in services["configurations"]:
+zookeeperHost = self.getComponentHostNames(services, "ZOOKEEPER", 
"ZOOKEEPER_SERVER")[0]
+zookeeperClientPort = 
services["configurations"]["zoo.cfg"]["properties"]["clientPort"]
+solrZkDir = 
services["configurations"]["solr-cloud"]["properties"]["solr_cloud_zk_directory"]
+solrZookeeperUrl = zookeeperHost + ":" + zookeeperClientPort + 
solrZkDir
+putMetronEnvProperty = self.putProperty(configurations, 
"metron-env", services)
+putMetronEnvProperty("solr_zookeeper_url", solrZookeeperUrl)
+
+
 def validateSTORMSiteConfigurations(self, properties, recommendedDefaults, 
configurations, services, hosts):
 # Determine if the cluster is secured
 is_secured = self.isSecurityEnabled(services)



[1/3] metron git commit: METRON-1771 Update REST endpoints to support eventually consistent UI updates (merrimanr) closes apache/metron#1190

2018-10-04 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/master 7e222fa47 -> de533063c


http://git-wip-us.apache.org/repos/asf/metron/blob/de533063/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrUpdateDao.java
--
diff --git 
a/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrUpdateDao.java
 
b/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrUpdateDao.java
index 2f83921..54b5b64 100644
--- 
a/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrUpdateDao.java
+++ 
b/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrUpdateDao.java
@@ -56,7 +56,7 @@ public class SolrUpdateDao implements UpdateDao {
   }
 
   @Override
-  public void update(Document update, Optional rawIndex) throws 
IOException {
+  public Document update(Document update, Optional rawIndex) throws 
IOException {
 Document newVersion = update;
 // Handle any case where we're given comments in Map form, instead of raw 
String
 Object commentsObj = update.getDocument().get(COMMENTS_FIELD);
@@ -79,10 +79,11 @@ public class SolrUpdateDao implements UpdateDao {
 } catch (SolrServerException e) {
   throw new IOException(e);
 }
+return newVersion;
   }
 
   @Override
-  public void batchUpdate(Map> updates) throws 
IOException {
+  public Map> batchUpdate(Map> updates) throws IOException {
 // updates with a collection specified
 Map> solrCollectionUpdates = new 
HashMap<>();
 Set collectionsUpdated = new HashSet<>();
@@ -117,18 +118,20 @@ public class SolrUpdateDao implements UpdateDao {
 } catch (SolrServerException e) {
   throw new IOException(e);
 }
+return updates;
   }
 
   @Override
-  public void addCommentToAlert(CommentAddRemoveRequest request) throws 
IOException {
+  public Document addCommentToAlert(CommentAddRemoveRequest request) throws 
IOException {
 Document latest = retrieveLatestDao.getLatest(request.getGuid(), 
request.getSensorType());
-addCommentToAlert(request, latest);
+return addCommentToAlert(request, latest);
   }
 
   @Override
-  public void addCommentToAlert(CommentAddRemoveRequest request, Document 
latest) throws IOException {
-if (latest == null) {
-  return;
+  public Document addCommentToAlert(CommentAddRemoveRequest request, Document 
latest) throws IOException {
+if (latest == null || latest.getDocument() == null) {
+  throw new IOException(String.format("Unable to add comment. Document 
with guid %s cannot be found.",
+  request.getGuid()));
 }
 
 @SuppressWarnings("unchecked")
@@ -149,21 +152,22 @@ public class SolrUpdateDao implements UpdateDao {
 
 Document newVersion = new Document(latest);
 newVersion.getDocument().put(COMMENTS_FIELD, commentStrs);
-update(newVersion, Optional.empty());
+return update(newVersion, Optional.empty());
   }
 
   @Override
-  public void removeCommentFromAlert(CommentAddRemoveRequest request)
+  public Document removeCommentFromAlert(CommentAddRemoveRequest request)
   throws IOException {
 Document latest = retrieveLatestDao.getLatest(request.getGuid(), 
request.getSensorType());
-removeCommentFromAlert(request, latest);
+return removeCommentFromAlert(request, latest);
   }
 
   @Override
-  public void removeCommentFromAlert(CommentAddRemoveRequest request, Document 
latest)
+  public Document removeCommentFromAlert(CommentAddRemoveRequest request, 
Document latest)
   throws IOException {
-if (latest == null) {
-  return;
+if (latest == null || latest.getDocument() == null) {
+  throw new IOException(String.format("Unable to remove comment. Document 
with guid %s cannot be found.",
+  request.getGuid()));
 }
 
 @SuppressWarnings("unchecked")
@@ -171,8 +175,8 @@ public class SolrUpdateDao implements UpdateDao {
 .get(COMMENTS_FIELD);
 // Can't remove anything if there's nothing there
 if (commentMap == null) {
-  LOG.debug("Provided alert had no comments to be able to remove from");
-  return;
+  throw new IOException(String.format("Unable to remove comment. Document 
with guid %s has no comments.",
+  request.getGuid()));
 }
 List> originalComments = new ArrayList<>(commentMap);
 List comments = new ArrayList<>();
@@ -186,7 +190,7 @@ public class SolrUpdateDao implements UpdateDao {
 .collect(Collectors.toList());
 Document newVersion = new Document(latest);
 newVersion.getDocument().put(COMMENTS_FIELD, commentsAsJson);
-update(newVersion, Optional.empty());
+return update(newVersion, Optional.empty());
   }
 
   public void convertCommentsToRaw(Map source) {

http://git-wip-us.apache.org/repos/asf/metron/blob/de533063/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/dao/SolrMetaAlertDaoTest.java

[2/3] metron git commit: METRON-1771 Update REST endpoints to support eventually consistent UI updates (merrimanr) closes apache/metron#1190

2018-10-04 Thread rmerriman
http://git-wip-us.apache.org/repos/asf/metron/blob/de533063/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/metaalert/lucene/AbstractLuceneMetaAlertUpdateDao.java
--
diff --git 
a/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/metaalert/lucene/AbstractLuceneMetaAlertUpdateDao.java
 
b/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/metaalert/lucene/AbstractLuceneMetaAlertUpdateDao.java
index 4d48075..096baf1 100644
--- 
a/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/metaalert/lucene/AbstractLuceneMetaAlertUpdateDao.java
+++ 
b/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/metaalert/lucene/AbstractLuceneMetaAlertUpdateDao.java
@@ -24,16 +24,17 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Optional;
 import java.util.Set;
 import java.util.UUID;
-import java.util.function.Supplier;
 import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
+
 import org.apache.metron.common.Constants;
-import org.apache.metron.common.configuration.ConfigurationsUtils;
 import org.apache.metron.indexing.dao.RetrieveLatestDao;
 import org.apache.metron.indexing.dao.metaalert.MetaAlertConfig;
 import org.apache.metron.indexing.dao.metaalert.MetaAlertConstants;
@@ -80,15 +81,16 @@ public abstract class AbstractLuceneMetaAlertUpdateDao 
implements MetaAlertUpdat
* @param retrieveLatestDao DAO to retrieve the item to be patched
* @param request The patch request.
* @param timestamp Optionally a timestamp to set. If not specified then 
current time is used.
+   * @return The patched document
* @throws OriginalNotFoundException If no original document is found to 
patch.
* @throws IOException If an error occurs performing the patch.
*/
   @Override
-  public void patch(RetrieveLatestDao retrieveLatestDao, PatchRequest request,
+  public Document patch(RetrieveLatestDao retrieveLatestDao, PatchRequest 
request,
   Optional timestamp)
   throws OriginalNotFoundException, IOException {
 if (isPatchAllowed(request)) {
-  updateDao.patch(retrieveLatestDao, request, timestamp);
+  return updateDao.patch(retrieveLatestDao, request, timestamp);
 } else {
   throw new IllegalArgumentException(
   "Meta alert patches are not allowed for /alert or /status paths.  "
@@ -97,7 +99,7 @@ public abstract class AbstractLuceneMetaAlertUpdateDao 
implements MetaAlertUpdat
   }
 
   @Override
-  public void batchUpdate(Map> updates) {
+  public Map> batchUpdate(Map> updates) {
 throw new UnsupportedOperationException("Meta alerts do not allow for bulk 
updates");
   }
 
@@ -170,21 +172,65 @@ public abstract class AbstractLuceneMetaAlertUpdateDao 
implements MetaAlertUpdat
 return updates;
   }
 
+  /**
+   * Adds alerts to a metaalert, based on a list of GetRequests provided for 
retrieval.
+   * @param metaAlertGuid The GUID of the metaalert to be given new children.
+   * @param alertRequests GetRequests for the appropriate alerts to add.
+   * @return The updated metaalert with alerts added.
+   */
+  @Override
+  public Document addAlertsToMetaAlert(String metaAlertGuid, List 
alertRequests)
+  throws IOException {
+Document metaAlert = retrieveLatestDao
+.getLatest(metaAlertGuid, MetaAlertConstants.METAALERT_TYPE);
+if (metaAlert == null) {
+  throw new IOException(String.format("Unable to add alerts to meta alert. 
 Meta alert with guid %s cannot be found.",
+  metaAlertGuid));
+}
+if (MetaAlertStatus.ACTIVE.getStatusString()
+
.equals(metaAlert.getDocument().get(MetaAlertConstants.STATUS_FIELD))) {
+  Iterable alerts = 
retrieveLatestDao.getAllLatest(alertRequests);
+  Set missingAlerts = getMissingAlerts(alertRequests, alerts);
+  if (!missingAlerts.isEmpty()) {
+throw new IOException(String.format("Unable to add alerts to meta 
alert.  Alert with guid %s cannot be found.",
+missingAlerts.iterator().next()));
+  }
+  Map> updates = 
buildAddAlertToMetaAlertUpdates(metaAlert, alerts);
+  update(updates);
+  return metaAlert;
+} else {
+  throw new IllegalStateException("Adding alerts to an INACTIVE meta alert 
is not allowed");
+}
+  }
+
+  /**
+   * Removes alerts from a metaalert, based on a list of GetRequests provided 
for retrieval.
+   * @param metaAlertGuid The GUID of the metaalert to remove children from.
+   * @param alertRequests A list of GetReqests that will provide the alerts to 
remove
+   * @return The updated metaalert with alerts removed.
+   * @throws IllegalStateException If the metaalert is inactive.
+   */
   

[3/3] metron git commit: METRON-1771 Update REST endpoints to support eventually consistent UI updates (merrimanr) closes apache/metron#1190

2018-10-04 Thread rmerriman
METRON-1771 Update REST endpoints to support eventually consistent UI updates 
(merrimanr) closes apache/metron#1190


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/de533063
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/de533063
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/de533063

Branch: refs/heads/master
Commit: de533063c26c8a2462dbfff33228a949c4a96c97
Parents: 7e222fa
Author: merrimanr 
Authored: Thu Oct 4 17:16:18 2018 -0500
Committer: rmerriman 
Committed: Thu Oct 4 17:16:18 2018 -0500

--
 metron-interface/metron-rest/README.md  |  16 ++
 .../rest/controller/MetaAlertController.java|  18 +-
 .../rest/controller/UpdateController.java   |  31 ++-
 .../metron/rest/service/MetaAlertService.java   |  12 +-
 .../metron/rest/service/UpdateService.java  |   9 +-
 .../rest/service/impl/MetaAlertServiceImpl.java |  18 +-
 .../rest/service/impl/UpdateServiceImpl.java|  18 +-
 .../MetaAlertControllerIntegrationTest.java | 152 +++---
 .../elasticsearch/dao/ElasticsearchDao.java |  32 +--
 .../dao/ElasticsearchMetaAlertDao.java  |  37 ++--
 .../dao/ElasticsearchMetaAlertUpdateDao.java|  55 ++---
 .../dao/ElasticsearchUpdateDao.java |  42 ++--
 .../dao/ElasticsearchMetaAlertDaoTest.java  |  27 ++-
 .../dao/ElasticsearchUpdateDaoTest.java |  52 +
 .../apache/metron/indexing/dao/HBaseDao.java|  31 +--
 .../metron/indexing/dao/MultiIndexDao.java  | 138 -
 .../dao/metaalert/MetaAlertCreateResponse.java  |  40 
 .../dao/metaalert/MetaAlertUpdateDao.java   |  20 +-
 .../AbstractLuceneMetaAlertUpdateDao.java   |  81 +++-
 .../metron/indexing/dao/update/UpdateDao.java   |  25 ++-
 .../InMemoryMetaAlertRetrieveLatestDao.java |  49 +
 .../metron/indexing/dao/HBaseDaoTest.java   |  41 
 .../apache/metron/indexing/dao/InMemoryDao.java |  18 +-
 .../indexing/dao/InMemoryMetaAlertDao.java  | 199 +--
 .../dao/InMemoryMetaAlertUpdateDao.java |  91 +
 .../metron/indexing/dao/MultiIndexDaoTest.java  |  96 +
 .../metron/indexing/dao/UpdateDaoTest.java  |  74 +++
 .../indexing/dao/UpdateIntegrationTest.java | 138 +++--
 .../dao/metaalert/MetaAlertIntegrationTest.java | 119 ---
 .../AbstractLuceneMetaAlertUpdateDaoTest.java   |  56 --
 .../integration/HBaseDaoIntegrationTest.java|   7 +-
 .../org/apache/metron/solr/dao/SolrDao.java |  28 +--
 .../metron/solr/dao/SolrMetaAlertDao.java   |  49 +++--
 .../metron/solr/dao/SolrMetaAlertUpdateDao.java |  38 ++--
 .../apache/metron/solr/dao/SolrUpdateDao.java   |  36 ++--
 .../metron/solr/dao/SolrMetaAlertDaoTest.java   |  21 +-
 .../metron/solr/dao/SolrUpdateDaoTest.java  |  19 +-
 37 files changed, 1206 insertions(+), 727 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/de533063/metron-interface/metron-rest/README.md
--
diff --git a/metron-interface/metron-rest/README.md 
b/metron-interface/metron-rest/README.md
index 2c216d1..2ce9522 100644
--- a/metron-interface/metron-rest/README.md
+++ b/metron-interface/metron-rest/README.md
@@ -336,6 +336,8 @@ Request and Response objects are JSON formatted.  The JSON 
schemas are available
 | [ `GET /api/v1/storm/supervisors`](#get-apiv1stormsupervisors)|
 | [ `PATCH /api/v1/update/patch`](#patch-apiv1updatepatch)|
 | [ `PUT /api/v1/update/replace`](#put-apiv1updatereplace)|
+| [ `POST /api/v1/update/add/comment`](#put-apiv1updateaddcomment)|
+| [ `POST /api/v1/update/remove/comment`](#put-apiv1updateremovecomment)|
 | [ `GET /api/v1/user`](#get-apiv1user)|
 
 ### `POST /api/v1/alerts/ui/escalate`
@@ -963,6 +965,20 @@ Request and Response objects are JSON formatted.  The JSON 
schemas are available
 ```
   * Returns:
 * 200 - Current user
+
+### `POST /api/v1/update/add/comment`
+  * Description: Add a comment to an alert
+  * Input:
+* request - Comment add request
+  * Returns:
+* 200 - Returns the complete alert document with comments added.
+
+### `POST /api/v1/update/remove/comment`
+  * Description: Remove a comment from an alert
+  * Input:
+* request - Comment remove request
+  * Returns:
+* 200 - Returns the complete alert document with comments removed.
 
 ### `GET /api/v1/user`
   * Description: Retrieves the current user

http://git-wip-us.apache.org/repos/asf/metron/blob/de533063/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/controller/MetaAlertController.java
--
diff --git 
a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/controller/MetaAlertController.java

metron git commit: METRON-1756 REST tests should use Embedded LDAP in metron-security (merrimanr) closes apache/metron#1186

2018-09-12 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/feature/METRON-1663-knoxsso 54880ba8f -> 1d927c975


METRON-1756 REST tests should use Embedded LDAP in metron-security (merrimanr) 
closes apache/metron#1186


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/1d927c97
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/1d927c97
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/1d927c97

Branch: refs/heads/feature/METRON-1663-knoxsso
Commit: 1d927c975677424bc073838df6d906c3e3026bb5
Parents: 54880ba
Author: merrimanr 
Authored: Wed Sep 12 12:14:11 2018 -0500
Committer: rmerriman 
Committed: Wed Sep 12 12:14:11 2018 -0500

--
 metron-interface/metron-rest/pom.xml| 15 +++
 .../src/main/resources/application-test.yml | 17 +---
 .../metron/rest/config/TestSecurityConfig.java  | 44 
 .../AlertsUIControllerIntegrationTest.java  |  3 +-
 .../GlobalConfigControllerIntegrationTest.java  |  3 +-
 .../GrokControllerIntegrationTest.java  |  3 +-
 .../HdfsControllerIntegrationTest.java  |  3 +-
 .../KafkaControllerIntegrationTest.java |  3 +-
 .../MetaAlertControllerIntegrationTest.java |  3 +-
 .../SearchControllerIntegrationTest.java|  3 +-
 ...richmentConfigControllerIntegrationTest.java |  3 +-
 ...IndexingConfigControllerIntegrationTest.java |  3 +-
 ...orParserConfigControllerIntegrationTest.java |  3 +-
 .../StellarControllerIntegrationTest.java   |  3 +-
 .../StormControllerIntegrationTest.java |  3 +-
 .../UpdateControllerIntegrationTest.java|  3 +-
 .../UserControllerIntegrationTest.java  |  3 +-
 .../src/test/resources/log4j.properties |  5 ++-
 .../src/test/resources/schema.ldif  | 22 ++
 19 files changed, 70 insertions(+), 75 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/1d927c97/metron-interface/metron-rest/pom.xml
--
diff --git a/metron-interface/metron-rest/pom.xml 
b/metron-interface/metron-rest/pom.xml
index d9d4bfe..223f873 100644
--- a/metron-interface/metron-rest/pom.xml
+++ b/metron-interface/metron-rest/pom.xml
@@ -372,6 +372,21 @@
 org.eclipse.persistence.jpa
 ${eclipse.link.version}
 
+
+  
+org.apache.directory.server
+apacheds-all
+1.5.4
+test
+  
+
+  
+org.apache.metron
+metron-ui-security
+${project.parent.version}
+test
+test-jar
+  
 
 
 

http://git-wip-us.apache.org/repos/asf/metron/blob/1d927c97/metron-interface/metron-rest/src/main/resources/application-test.yml
--
diff --git 
a/metron-interface/metron-rest/src/main/resources/application-test.yml 
b/metron-interface/metron-rest/src/main/resources/application-test.yml
index e6532fa..1202da7 100644
--- a/metron-interface/metron-rest/src/main/resources/application-test.yml
+++ b/metron-interface/metron-rest/src/main/resources/application-test.yml
@@ -62,19 +62,4 @@ meta:
 
 knox:
   sso:
-url: 
-
-ldap:
-  provider:
-url: ldap://localhost:33389
-userdn: uid=admin,ou=people,dc=hadoop,dc=apache,dc=org
-password: password
-  user:
-dn.patterns: uid={0},ou=people,dc=hadoop,dc=apache,dc=org
-passwordAttribute: userPassword
-searchBase: ou=people,dc=hadoop,dc=apache,dc=org
-searchFilter: ""
-  group:
-searchBase: ou=groups,dc=hadoop,dc=apache,dc=org
-searchFilter: "member={0}"
-roleAttribute: "cn"
+url:

http://git-wip-us.apache.org/repos/asf/metron/blob/1d927c97/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/TestSecurityConfig.java
--
diff --git 
a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/TestSecurityConfig.java
 
b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/TestSecurityConfig.java
deleted file mode 100644
index 04e82b9..000
--- 
a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/TestSecurityConfig.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless require

[2/3] metron git commit: METRON-1665 Move hosting of Alerts and Config UIs from Nodejs to Spring Boot (simonellistonball via merrimanr) closes apache/metron#1111

2018-08-28 Thread rmerriman
http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-rest/README.md
--
diff --git a/metron-interface/metron-rest/README.md 
b/metron-interface/metron-rest/README.md
index 44594f7..42c3d0b 100644
--- a/metron-interface/metron-rest/README.md
+++ b/metron-interface/metron-rest/README.md
@@ -25,7 +25,6 @@ This module provides a RESTful API for interacting with 
Metron.
 * A running real-time store, either Elasticsearch or Solr depending on which 
one is enabled
 * Java 8 installed
 * Storm CLI and Metron topology scripts (start_parser_topology.sh, 
start_enrichment_topology.sh, start_elasticsearch_topology.sh) installed
-* A relational database
 
 ## Installation
 
@@ -66,10 +65,6 @@ No optional parameter has a default.
 
 | Environment Variable  | Description
 | - | ---
-| METRON_JDBC_DRIVER| JDBC driver class
-| METRON_JDBC_URL   | JDBC url
-| METRON_JDBC_USERNAME  | JDBC username
-| METRON_JDBC_PLATFORM  | JDBC platform (one of h2, mysql, 
postgres, oracle
 | ZOOKEEPER | Zookeeper quorum (ex. 
node1:2181,node2:2181)
 | BROKERLIST| Kafka Broker list (ex. 
node1:6667,node2:6667)
 | HDFS_URL  | HDFS url or `fs.defaultFS` Hadoop 
setting (ex. hdfs://node1:8020)
@@ -80,7 +75,6 @@ No optional parameter has a default.
 | METRON_LOG_DIR| Directory where the log file is 
written   | Optional | /var/log/metron/
 | METRON_PID_FILE   | File where the pid is written
 | Optional | /var/run/metron/
 | METRON_REST_PORT  | REST application port
 | Optional | 8082
-| METRON_JDBC_CLIENT_PATH   | Path to JDBC client jar  
 | Optional | H2 is bundled
 | METRON_TEMP_GROK_PATH | Temporary directory used to test 
grok statements  | Optional | ./patterns/temp
 | METRON_DEFAULT_GROK_PATH  | Defaults HDFS directory used to 
store grok statements | Optional | /apps/metron/patterns
 | SECURITY_ENABLED  | Enables Kerberos support 
 | Optional | false
@@ -96,27 +90,6 @@ No optional parameter has a default.
 
 These are set in the `/etc/default/metron` file.
 
-## Database setup
-
-The REST application persists data in a relational database and requires a 
dedicated database user and database (see 
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html
 for more detail).  
-Spring uses Hibernate as the default ORM framework but another framework is 
needed becaused Hibernate is not compatible with the Apache 2 license.  For 
this reason Metron uses 
[EclipseLink](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html#boot-features-embedded-database-support).
  See the [Spring Data JPA - 
EclipseLink](https://github.com/spring-projects/spring-data-examples/tree/master/jpa/eclipselink)
 project for an example on how to configure EclipseLink in Spring.
-
-### Development
-
-The REST application comes with [embedded database 
support](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html#boot-features-embedded-database-support)
 for development purposes.
-
-For example, edit these variables in `/etc/default/metron` before starting the 
application to configure H2:
-```
-METRON_JDBC_DRIVER="org.h2.Driver"
-METRON_JDBC_URL="jdbc:h2:file:~/metrondb"
-METRON_JDBC_USERNAME="root"
-METRON_JDBC_PLATFORM="h2"
-```
-
-### Production
-
-The REST application should be configured with a production-grade database 
outside of development.
-
  Ambari Install
 
 Installing with Ambari is recommended for production deployments.
@@ -125,48 +98,17 @@ This includes managing the PID file, directing logging, 
etc.
 
  Manual Install
 
-The following configures the application for MySQL:
-
-1. Install MySQL if not already available (this example uses version 5.7, 
installation instructions can be found 
[here](https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html))
-
-1. Create a metron user and REST database and permission the user for that 
database:
-```
-CREATE USER 'metron'@'node1' IDENTIFIED BY 'Myp@ssw0rd';
-CREATE DATABASE IF NOT EXISTS metronrest;
-GRANT ALL PRIVILEGES ON metronrest.* TO 'metron'@'node1';
-```
-
-1. Create the security tables as described in the [Spring Security 
Guide](https://docs.spring.io/spring-security/site/docs/5.0.4.RELEASE/reference/htmlsingle/#user-schema).
-
-1. Install the MySQL JDBC client onto the REST application host and 
configurate the 

[3/3] metron git commit: METRON-1665 Move hosting of Alerts and Config UIs from Nodejs to Spring Boot (simonellistonball via merrimanr) closes apache/metron#1111

2018-08-28 Thread rmerriman
METRON-1665 Move hosting of Alerts and Config UIs from Nodejs to Spring Boot 
(simonellistonball via merrimanr) closes apache/metron#


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/54880ba8
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/54880ba8
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/54880ba8

Branch: refs/heads/feature/METRON-1663-knoxsso
Commit: 54880ba8f2467fefe56b9c377da003d08f0fe203
Parents: 28f4b57
Author: simonellistonball 
Authored: Tue Aug 28 14:20:10 2018 -0500
Committer: rmerriman 
Committed: Tue Aug 28 14:20:10 2018 -0500

--
 .gitignore  |   6 +
 dependencies_with_url.csv   |  48 +++
 .../packaging/ambari/metron-mpack/README.md |   2 -
 .../common-services/METRON/CURRENT/metainfo.xml |   3 -
 .../packaging/docker/ansible-docker/Dockerfile  |   3 -
 .../packaging/docker/deb-docker/Dockerfile  |   4 -
 .../docker/deb-docker/prepackage/metron-config  |   3 -
 .../packaging/docker/rpm-docker/Dockerfile  |   4 -
 .../docker/rpm-docker/SPECS/metron.spec |  97 ++-
 .../packaging/docker/rpm-docker/pom.xml |   4 +-
 metron-interface/metron-alerts-host/.gitignore  |  24 ++
 metron-interface/metron-alerts-host/pom.xml | 141 +
 .../src/main/assembly/assembly.xml  |  39 +++
 .../org/apache/metron/ui/AlertsApplication.java |  29 ++
 .../src/main/resources/application.yml  |  61 
 .../src/main/scripts/metron-alerts.sh   |  55 
 metron-interface/metron-alerts/.gitignore   |   3 +
 metron-interface/metron-alerts/assembly.xml |  55 
 metron-interface/metron-alerts/pom.xml  |  21 +-
 .../metron-alerts/scripts/alerts-server.js  |  76 -
 .../metron-alerts/scripts/metron-alerts-ui  | 159 --
 .../metron-alerts/scripts/package.json  |  21 --
 metron-interface/metron-config-host/pom.xml | 142 +
 .../src/main/assembly/assembly.xml  |  39 +++
 .../org/apache/metron/ui/ConfigApplication.java |  31 ++
 .../src/main/resources/application.yml  |  34 +++
 .../src/main/scripts/metron-config.sh   |  55 
 metron-interface/metron-config/.gitignore   |   3 +
 metron-interface/metron-config/assembly.xml |  65 -
 metron-interface/metron-config/pom.xml  | 236 ---
 .../metron-config/scripts/metron-management-ui  | 159 --
 .../metron-config/scripts/package.json  |  22 --
 .../metron-config/scripts/server.js |  76 -
 metron-interface/metron-rest/README.md  |  95 ++
 metron-interface/metron-rest/pom.xml|   6 +-
 .../metron/rest/MetronRestApplication.java  |  16 +-
 .../metron/rest/config/WebSecurityConfig.java   | 108 ---
 .../rest/controller/AlertsUIController.java |   6 +-
 .../src/main/resources/application-test.yml |  19 ++
 .../metron-rest/src/main/scripts/metron-rest.sh |   7 +-
 .../metron/rest/config/TestSecurityConfig.java  |  44 +++
 .../AlertsUIControllerIntegrationTest.java  |  18 +-
 metron-interface/metron-ui-host/pom.xml | 138 +
 .../metron/ui/AbstractHostApplication.java  |  28 ++
 .../org/apache/metron/ui/UserController.java|  71 +
 .../metron/ui/ZuulAuthenticationFilter.java |  77 +
 .../java/org/apache/metron/ui/ZuulError.java|  34 +++
 .../org/apache/metron/ui/ZuulErrorFilter.java   |  67 +
 .../src/main/resources/application.yml  |  59 
 .../apache/metron/ui/TestHostApplication.java   |  25 ++
 .../java/org/apache/metron/ui/WhoamiTest.java   | 120 
 .../ui/ZuulAuthorizationHeaderProxyTest.java| 103 +++
 .../src/test/resources/application-test.yml |  77 +
 metron-interface/metron-ui-security/pom.xml | 135 +
 .../metron/ui/KnoxSSOAuthenticationFilter.java  | 289 +++
 .../ui/MetronAuthenticationException.java   |  29 ++
 .../metron/ui/MetronAuthenticationProvider.java |  60 
 .../apache/metron/ui/MetronSecurityConfig.java  | 188 
 .../java/org/apache/metron/ui/EmbeddedLdap.java | 164 +++
 .../java/org/apache/metron/ui/JWTTests.java | 170 +++
 .../ui/KnoxSSOAuthenticationFilterTests.java|  66 +
 .../ui/MetronAuthenticationProviderTests.java   |  33 +++
 .../metron/ui/config/TestSecurityConfig.java|  31 ++
 .../resources/application-embedded-ldap.yml |  35 +++
 .../resources/org/apache/metron/ui/headers.pem  |  27 ++
 .../resources/org/apache/metron/ui/invalid.pem  |  27 ++
 .../org/apache/metron/ui/noheaders.pem  |  25 ++
 .../src/test/resources/schema.ldif  |  77 +
 metron-interface/pom.xml|  13 +
 69 files changed, 3147 insertions(+), 1060 deletions

[1/3] metron git commit: METRON-1665 Move hosting of Alerts and Config UIs from Nodejs to Spring Boot (simonellistonball via merrimanr) closes apache/metron#1111

2018-08-28 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/feature/METRON-1663-knoxsso 28f4b5704 -> 54880ba8f


http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-ui-security/src/main/java/org/apache/metron/ui/MetronAuthenticationProvider.java
--
diff --git 
a/metron-interface/metron-ui-security/src/main/java/org/apache/metron/ui/MetronAuthenticationProvider.java
 
b/metron-interface/metron-ui-security/src/main/java/org/apache/metron/ui/MetronAuthenticationProvider.java
new file mode 100644
index 000..42d8a2d
--- /dev/null
+++ 
b/metron-interface/metron-ui-security/src/main/java/org/apache/metron/ui/MetronAuthenticationProvider.java
@@ -0,0 +1,60 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.metron.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.security.authentication.AuthenticationProvider;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+
+public class MetronAuthenticationProvider implements AuthenticationProvider {
+
+  @Override
+  public Authentication authenticate(Authentication authentication) throws 
AuthenticationException {
+if (authentication != null) {
+  authentication = getSSOAuthentication(authentication);
+  if (authentication != null && authentication.isAuthenticated()) {
+return authentication;
+  }
+}
+throw new MetronAuthenticationException("Authentication failed");
+  }
+
+  private Authentication getSSOAuthentication(Authentication authentication) {
+return authentication;
+  }
+
+  @Override
+  public boolean supports(Class authentication) {
+return true;
+  }
+
+  public static List getAuthoritiesFromUGI(String userName) {
+// TODO - if we have ldap, we can lookup groups for this user
+
+// TODO - if we have a default mapper we can use that
+
+List grantedAuths = new ArrayList();
+grantedAuths.add(new SimpleGrantedAuthority("USER"));
+return grantedAuths;
+  }
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/54880ba8/metron-interface/metron-ui-security/src/main/java/org/apache/metron/ui/MetronSecurityConfig.java
--
diff --git 
a/metron-interface/metron-ui-security/src/main/java/org/apache/metron/ui/MetronSecurityConfig.java
 
b/metron-interface/metron-ui-security/src/main/java/org/apache/metron/ui/MetronSecurityConfig.java
new file mode 100644
index 000..7d3ec3b
--- /dev/null
+++ 
b/metron-interface/metron-ui-security/src/main/java/org/apache/metron/ui/MetronSecurityConfig.java
@@ -0,0 +1,188 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.metron.ui;
+
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.security.interfaces.RSAPublicKey;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpMethod;
+import 

[3/3] metron git commit: METRON-1752 Prevent package.lock from changing during build (sardell via merrimanr) closes apache/metron#1177

2018-08-27 Thread rmerriman
METRON-1752 Prevent package.lock from changing during build (sardell via 
merrimanr) closes apache/metron#1177


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/09826da8
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/09826da8
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/09826da8

Branch: refs/heads/master
Commit: 09826da85eddb014a4b718233d53480220b1f5dd
Parents: e66cfc8
Author: sardell 
Authored: Mon Aug 27 15:14:19 2018 -0500
Committer: rmerriman 
Committed: Mon Aug 27 15:14:19 2018 -0500

--
 metron-interface/metron-alerts/pom.xml  | 6 +-
 .../metron-config/package-lock.json | 17734 +
 metron-interface/metron-config/pom.xml  |30 +-
 3 files changed, 17752 insertions(+), 18 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/09826da8/metron-interface/metron-alerts/pom.xml
--
diff --git a/metron-interface/metron-alerts/pom.xml 
b/metron-interface/metron-alerts/pom.xml
index 996f473..f67a013 100644
--- a/metron-interface/metron-alerts/pom.xml
+++ b/metron-interface/metron-alerts/pom.xml
@@ -26,7 +26,7 @@
 UTF-8
 
UTF-8
 v9.11.1
-5.8.0
+6.2.0
 
 
 
@@ -52,12 +52,12 @@
 
 
 generate-resources
-npm install
+npm ci
 
 npm
 
 
-install
+ci
 
 
 



[1/3] metron git commit: METRON-1752 Prevent package.lock from changing during build (sardell via merrimanr) closes apache/metron#1177

2018-08-27 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/master e66cfc80e -> 09826da85


http://git-wip-us.apache.org/repos/asf/metron/blob/09826da8/metron-interface/metron-config/pom.xml
--
diff --git a/metron-interface/metron-config/pom.xml 
b/metron-interface/metron-config/pom.xml
index 14acdc6..59c416e 100644
--- a/metron-interface/metron-config/pom.xml
+++ b/metron-interface/metron-config/pom.xml
@@ -1,15 +1,15 @@
 
-
 
 http://maven.apache.org/POM/4.0.0; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance;
@@ -25,8 +25,8 @@
 
 UTF-8
 
UTF-8
-v6.2.0
-3.8.9
+v9.11.1
+6.2.0
 
 
 
@@ -53,12 +53,12 @@
   
   
 generate-resources
-npm install
+npm ci
 
   npm
 
 
-  install
+  ci
 
   
   



[2/3] metron git commit: METRON-1752 Prevent package.lock from changing during build (sardell via merrimanr) closes apache/metron#1177

2018-08-27 Thread rmerriman
http://git-wip-us.apache.org/repos/asf/metron/blob/09826da8/metron-interface/metron-config/package-lock.json
--
diff --git a/metron-interface/metron-config/package-lock.json 
b/metron-interface/metron-config/package-lock.json
new file mode 100644
index 000..e49bc4a
--- /dev/null
+++ b/metron-interface/metron-config/package-lock.json
@@ -0,0 +1,17734 @@
+{
+  "name": "metron-management-ui",
+  "version": "0.5.1",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+"@angular-cli/ast-tools": {
+  "version": "1.0.16",
+  "resolved": 
"https://registry.npmjs.org/@angular-cli/ast-tools/-/ast-tools-1.0.16.tgz;,
+  "integrity": "sha1-YxmULBol+4TjKUID6fejJmMvzlA=",
+  "dev": true,
+  "requires": {
+"@angular/tsc-wrapped": "0.5.2",
+"denodeify": "1.2.1",
+"rxjs": "5.1.0",
+"typescript": "2.0.10"
+  },
+  "dependencies": {
+"@angular/tsc-wrapped": {
+  "version": "0.5.2",
+  "resolved": 
"https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-0.5.2.tgz;,
+  "integrity": "sha1-Lt30csRn/LM06pTe3aqnGZDFpII=",
+  "dev": true,
+  "requires": {
+"tsickle": "0.2.5"
+  }
+},
+"denodeify": {
+  "version": "1.2.1",
+  "resolved": 
"https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz;,
+  "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=",
+  "dev": true
+},
+"minimist": {
+  "version": "1.2.0",
+  "resolved": 
"https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz;,
+  "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+  "dev": true
+},
+"mkdirp": {
+  "version": "0.5.1",
+  "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz;,
+  "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+  "dev": true,
+  "requires": {
+"minimist": "0.0.8"
+  },
+  "dependencies": {
+"minimist": {
+  "version": "0.0.8",
+  "resolved": 
"https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz;,
+  "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+  "dev": true
+}
+  }
+},
+"rxjs": {
+  "version": "5.1.0",
+  "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.1.0.tgz;,
+  "integrity": "sha1-CqkBi39EC1BfpCvXQrZzi+VQ5yA=",
+  "dev": true,
+  "requires": {
+"symbol-observable": "1.0.4"
+  }
+},
+"source-map": {
+  "version": "0.5.6",
+  "resolved": 
"https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz;,
+  "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
+  "dev": true
+},
+"source-map-support": {
+  "version": "0.4.11",
+  "resolved": 
"https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.11.tgz;,
+  "integrity": "sha1-ZH+TmXizhTWQlTCIUwPa8jJ58yI=",
+  "dev": true,
+  "requires": {
+"source-map": "0.5.6"
+  }
+},
+"symbol-observable": {
+  "version": "1.0.4",
+  "resolved": 
"https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz;,
+  "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=",
+  "dev": true
+},
+"tsickle": {
+  "version": "0.2.5",
+  "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.2.5.tgz;,
+  "integrity": "sha1-YNjhJGLm+PvayS1fX+rSv0kIXYI=",
+  "dev": true,
+  "requires": {
+"minimist": "1.2.0",
+"mkdirp": "0.5.1",
+"source-map": "0.5.6",
+"source-map-support": "0.4.11"
+  }
+},
+"typescript": {
+  "version": "2.0.10",
+  "resolved": 
"https://registry.npmjs.org/typescript/-/typescript-2.0.10.tgz;,
+  "integrity": "sha1-zN1O2G/VVQpAcQGggUAS4bP6w90=",
+  "dev": true
+}
+  }
+},
+"@angular-cli/base-href-webpack": {
+  "version": "1.0.16",
+  "resolved": 
"https://registry.npmjs.org/@angular-cli/base-href-webpack/-/base-href-webpack-1.0.16.tgz;,
+  "integrity": "sha1-Qpai/324TdwuZ8KhB+J29yRj/40=",
+  "dev": true
+},
+"@angular/common": {
+  "version": "2.0.0",
+  "resolved": 
"https://registry.npmjs.org/@angular/common/-/common-2.0.0.tgz;,
+  "integrity": "sha1-bVs4zvi+xpcmWQ85XaEMLYkUYkc="
+},
+"@angular/compiler": {
+  "version": "2.0.0",
+  "resolved": 
"https://registry.npmjs.org/@angular/compiler/-/compiler-2.0.0.tgz;,
+  "integrity": "sha1-ck58aKwXeqkzqnWmtMsR5ap5XSw="
+},
+"@angular/compiler-cli": {
+  "version": "0.6.4",
+  "resolved": 

[21/51] [abbrv] metron git commit: METRON-1671 Create PCAP UI (tiborm via merrimanr) closes apache/metron#1103

2018-08-17 Thread rmerriman
http://git-wip-us.apache.org/repos/asf/metron/blob/d5eb56a9/metron-interface/metron-alerts/src/app/app-routing.module.ts
--
diff --git a/metron-interface/metron-alerts/src/app/app-routing.module.ts 
b/metron-interface/metron-alerts/src/app/app-routing.module.ts
index 8357d66..56ad41c 100644
--- a/metron-interface/metron-alerts/src/app/app-routing.module.ts
+++ b/metron-interface/metron-alerts/src/app/app-routing.module.ts
@@ -26,7 +26,8 @@ const routes: Routes = [
   { path: 'alerts-list', loadChildren: 
'app/alerts/alerts-list/alerts-list.module#AlertsListModule', canActivate: 
[AuthGuard]},
   { path: 'save-search', loadChildren: 
'app/alerts/save-search/save-search.module#SaveSearchModule', canActivate: 
[AuthGuard]},
   { path: 'saved-searches', loadChildren: 
'app/alerts/saved-searches/saved-searches.module.ts#SavedSearchesModule',
-  canActivate: [AuthGuard]}
+  canActivate: [AuthGuard]},
+  { path: 'pcap', loadChildren: 'app/pcap/pcap.module#PcapModule', 
canActivate: [AuthGuard] }
 ];
 
 @NgModule({

http://git-wip-us.apache.org/repos/asf/metron/blob/d5eb56a9/metron-interface/metron-alerts/src/app/app.component.html
--
diff --git a/metron-interface/metron-alerts/src/app/app.component.html 
b/metron-interface/metron-alerts/src/app/app.component.html
index 8867a9b..1b992ca 100644
--- a/metron-interface/metron-alerts/src/app/app.component.html
+++ b/metron-interface/metron-alerts/src/app/app.component.html
@@ -16,6 +16,14 @@
 
 
 
+
+
+Alerts
+
+
+PCAP
+
+
 Logged in as {{authService.currentUser}} - 
Logout
 
 

http://git-wip-us.apache.org/repos/asf/metron/blob/d5eb56a9/metron-interface/metron-alerts/src/app/app.component.scss
--
diff --git a/metron-interface/metron-alerts/src/app/app.component.scss 
b/metron-interface/metron-alerts/src/app/app.component.scss
index 8358e7f..8505ee8 100644
--- a/metron-interface/metron-alerts/src/app/app.component.scss
+++ b/metron-interface/metron-alerts/src/app/app.component.scss
@@ -27,6 +27,24 @@
   max-height: 50px;
 }
 
+.nav-link
+{
+  padding-bottom: 0;
+  padding-top: 0;
+  color: inherit;
+}
+
+.nav-item.active
+{
+  border-bottom: 3px solid #32abe2;
+  margin-bottom: 5px;
+}
+
+.nav-link.active
+{
+  color: #ff;
+}
+
 .logout {
   padding-left: 10px;
 }

http://git-wip-us.apache.org/repos/asf/metron/blob/d5eb56a9/metron-interface/metron-alerts/src/app/app.module.ts
--
diff --git a/metron-interface/metron-alerts/src/app/app.module.ts 
b/metron-interface/metron-alerts/src/app/app.module.ts
index 227eaab..82b4970 100644
--- a/metron-interface/metron-alerts/src/app/app.module.ts
+++ b/metron-interface/metron-alerts/src/app/app.module.ts
@@ -46,8 +46,7 @@ import {MetaAlertService} from './service/meta-alert.service';
 import {MetaAlertsModule} from './alerts/meta-alerts/meta-alerts.module';
 import {SearchService} from './service/search.service';
 import { GlobalConfigService } from './service/global-config.service';
-
-
+import {PcapModule} from './pcap/pcap.module';
 
 export function initConfig(config: ColumnNamesService) {
   return () => config.list();
@@ -70,7 +69,8 @@ export function initConfig(config: ColumnNamesService) {
 ConfigureRowsModule,
 SaveSearchModule,
 SavedSearchesModule,
-SwitchModule
+SwitchModule,
+PcapModule
   ],
   providers: [{ provide: APP_INITIALIZER, useFactory: initConfig, deps: 
[ColumnNamesService], multi: true },
   { provide: DataSource, useClass: ElasticSearchLocalstorageImpl },

http://git-wip-us.apache.org/repos/asf/metron/blob/d5eb56a9/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
--
diff --git a/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts 
b/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
new file mode 100644
index 000..3a27714
--- /dev/null
+++ b/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
@@ -0,0 +1,29 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing software
+ * distributed under the License is distributed on an "AS 

[26/51] [abbrv] metron git commit: METRON-1676 PCAP UI - Add data range selector to the filter bar (tiborm via merrimanr) closes apache/metron#1119

2018-08-17 Thread rmerriman
METRON-1676 PCAP UI - Add data range selector to the filter bar (tiborm via 
merrimanr) closes apache/metron#1119


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/09a7f189
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/09a7f189
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/09a7f189

Branch: refs/heads/master
Commit: 09a7f18994dc8254ca158139c44258cb7f1107ec
Parents: b445bfe
Author: tiborm 
Authored: Mon Aug 6 09:14:54 2018 -0500
Committer: rmerriman 
Committed: Mon Aug 6 09:14:54 2018 -0500

--
 .../pcap-filters/pcap-filters.component.html|  30 ++--
 .../pcap-filters/pcap-filters.component.scss|   2 +-
 .../pcap-filters/pcap-filters.component.spec.ts | 156 ++-
 .../pcap/pcap-filters/pcap-filters.component.ts |  19 ++-
 .../metron-alerts/src/app/pcap/pcap.module.ts   |   6 +-
 .../src/app/pcap/service/pcap.service.ts|   4 +-
 .../shared/directives/alert-search.directive.ts |   2 +-
 7 files changed, 195 insertions(+), 24 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/09a7f189/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.html
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.html
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.html
index abc4cf0..f4133df 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.html
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.html
@@ -12,23 +12,33 @@
   the specific language governing permissions and limitations under the 
License.
   -->
 
+
+  
+From
+ 
+  
+  
+To
+ 
+  
+
   
-IP Source Address
-
+IP Source Address
+
   
   
   
-IP Source Port
-
+IP Source Port
+
   
 
-  IP Dest Address
-
+  IP Dest Address
+
   
 
   
-IP Dest Port
-
+IP Dest Port
+
   
 
 
@@ -37,8 +47,8 @@
 
 
 
-Include Reverse Traffic
-
+Include Reverse Traffic
+
 
 
   

http://git-wip-us.apache.org/repos/asf/metron/blob/09a7f189/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.scss
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.scss
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.scss
index 80bac08..b33e804 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.scss
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.scss
@@ -28,7 +28,7 @@
 }
 
 .form-group {
-  padding-right: 0.75em;
+  padding: 0 0.75em 0.75em 0;
   label {
 margin-right: 1em;
   }

http://git-wip-us.apache.org/repos/asf/metron/blob/09a7f189/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
index 8134f1d..c0f9c3b 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
@@ -1,3 +1,4 @@
+
 /**
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -15,10 +16,23 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed, fakeAsync, tick } from 
'@angular/core/testing';
+import { By } from '@angular/platform-browser';
 
 import { PcapFiltersComponent } from './pcap-filters.component';
 import { FormsModule } from '../../../../node_modules/@angular/forms';
+import { Component, Input, Output, EventEmitter } from '@angular/core';
+import { PcapRequest } from '../model/pcap.request';
+import { emit } from 'cluster';
+
+@Component({
+  selector: 'app-date-picker',
+  template: '',
+})
+class FakeDatePicker {
+  @Input() date: string;
+  @Output() dateChange = new EventEmitter();
+}
 
 describe('PcapFiltersComponent', () => {
   let component: PcapFiltersComponent;
@@ -29,18 +43,148 @@ describe('PcapFiltersComponent', () => {
   imports: [
 FormsModule
   ],
-  declarations: [ PcapFiltersComponent ]
+  dec

[33/51] [abbrv] metron git commit: METRON-1726: Refactor PcapTopologyIntegrationTest (mmiklavc via mmiklavc) closes apache/metron#1140

2018-08-17 Thread rmerriman
METRON-1726: Refactor PcapTopologyIntegrationTest (mmiklavc via mmiklavc) 
closes apache/metron#1140


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/7967f358
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/7967f358
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/7967f358

Branch: refs/heads/master
Commit: 7967f358c6c4b8437935c43e54179126e48e248f
Parents: 3e77859
Author: mmiklavc 
Authored: Tue Aug 7 15:02:20 2018 -0600
Committer: Michael Miklavcic 
Committed: Tue Aug 7 15:02:20 2018 -0600

--
 .../org/apache/metron/pcap/query/PcapCli.java   |   2 +
 .../PcapTopologyIntegrationTest.java| 892 ++-
 .../metron/pcap/finalizer/PcapCliFinalizer.java |   5 +-
 3 files changed, 473 insertions(+), 426 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/7967f358/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/PcapCli.java
--
diff --git 
a/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/PcapCli.java
 
b/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/PcapCli.java
index 0b06b0c..c23f037 100644
--- 
a/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/PcapCli.java
+++ 
b/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/PcapCli.java
@@ -87,6 +87,7 @@ public class PcapCli {
   try {
 config = fixedParser.parse(otherArgs);
 commonConfig = config;
+PcapOptions.FINAL_OUTPUT_PATH.put(commonConfig, new Path(execDir));
   } catch (ParseException | java.text.ParseException e) {
 System.err.println(e.getMessage());
 System.err.flush();
@@ -112,6 +113,7 @@ public class PcapCli {
   try {
 config = queryParser.parse(otherArgs);
 commonConfig = config;
+PcapOptions.FINAL_OUTPUT_PATH.put(commonConfig, new Path(execDir));
   } catch (ParseException | java.text.ParseException e) {
 System.err.println(e.getMessage());
 queryParser.printHelp();

http://git-wip-us.apache.org/repos/asf/metron/blob/7967f358/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/integration/PcapTopologyIntegrationTest.java
--
diff --git 
a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/integration/PcapTopologyIntegrationTest.java
 
b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/integration/PcapTopologyIntegrationTest.java
index 108fd2b..c30267d 100644
--- 
a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/integration/PcapTopologyIntegrationTest.java
+++ 
b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/integration/PcapTopologyIntegrationTest.java
@@ -58,6 +58,7 @@ import org.apache.metron.integration.components.MRComponent;
 import org.apache.metron.integration.components.ZKServerComponent;
 import org.apache.metron.integration.utils.KafkaUtil;
 import org.apache.metron.job.JobStatus;
+import org.apache.metron.job.Pageable;
 import org.apache.metron.job.Statusable;
 import org.apache.metron.pcap.PacketInfo;
 import org.apache.metron.pcap.PcapHelper;
@@ -73,7 +74,10 @@ import org.apache.metron.spout.pcap.Endianness;
 import org.apache.metron.spout.pcap.deserializer.Deserializers;
 import org.apache.metron.test.utils.UnitTestHelper;
 import org.json.simple.JSONObject;
+import org.junit.AfterClass;
 import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.Ignore;
 import org.junit.Test;
 
@@ -85,12 +89,19 @@ public class PcapTopologyIntegrationTest extends 
BaseIntegrationTest {
   private static String OUTPUT_DIR = BASE_DIR + "/output";
   private static final int MAX_RETRIES = 30;
   private static final int SLEEP_MS = 500;
-  private String topologiesDir = "src/main/flux";
-  private String targetDir = "target";
+  private static String topologiesDir = "src/main/flux";
+  private static String targetDir = "target";
+  private static ComponentRunner runner;
+  private static File inputDir;
+  private static File interimResultDir;
+  private static File outputDir;
+  private static List> pcapEntries;
+  private static boolean withHeaders;
+  private FixedPcapConfig configuration;
 
   private static void clearOutDirs(File... dirs) throws IOException {
-for(File dir: dirs) {
-  for(File f : dir.listFiles()) {
+for (File dir : dirs) {
+  for (File f : dir.listFiles()) {
 if (f.isDirectory()) {
   FileUtils.deleteDirectory(f);
 } else {
@@ -99,8 +110,8 @@ public class PcapTopologyIntegrationTest extends 

[31/51] [abbrv] metron git commit: METRON-1683 PCAP UI - Fix the download progress bar (sardell via merrimanr) closes apache/metron#1122

2018-08-17 Thread rmerriman
http://git-wip-us.apache.org/repos/asf/metron/blob/3e778592/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.spec.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.spec.ts
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.spec.ts
index 155e1f8..de39a0a 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.spec.ts
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.spec.ts
@@ -16,9 +16,10 @@
  * limitations under the License.
  */
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { fakePacket } from '../model/pdml.mock';
 
 import { PcapPacketComponent } from './pcap-packet.component';
-import { PdmlPacket } from '../model/pdml';
+import { By } from '@angular/platform-browser';
 
 describe('PcapPacketComponent', () => {
   let component: PcapPacketComponent;
@@ -34,1250 +35,45 @@ describe('PcapPacketComponent', () => {
   beforeEach(() => {
 fixture = TestBed.createComponent(PcapPacketComponent);
 component = fixture.componentInstance;
-component.packet = fakePacket as PdmlPacket;
+component.packet = fakePacket;
 fixture.detectChanges();
   });
 
   it('should create', () => {
 expect(component).toBeTruthy();
   });
-});
 
-const fakePacket = {
-  name: "something",
-  expanded: false,
-  protos: [
-{
-  "name": "geninfo",
-  "pos": "0",
-  "showname": "General information",
-  "size": "722",
-  "hide": null,
-  "fields": [
-{
-  "name": "num",
-  "pos": "0",
-  "showname": "Number",
-  "size": "722",
-  "value": "1",
-  "show": "1",
-  "unmaskedvalue": null,
-  "hide": null,
-  "fields": null,
-  "protos": null
-},
-{
-  "name": "len",
-  "pos": "0",
-  "showname": "Frame Length",
-  "size": "722",
-  "value": "2d2",
-  "show": "722",
-  "unmaskedvalue": null,
-  "hide": null,
-  "fields": null,
-  "protos": null
-},
-{
-  "name": "caplen",
-  "pos": "0",
-  "showname": "Captured Length",
-  "size": "722",
-  "value": "2d2",
-  "show": "722",
-  "unmaskedvalue": null,
-  "hide": null,
-  "fields": null,
-  "protos": null
-},
-{
-  "name": "timestamp",
-  "pos": "0",
-  "showname": "Captured Time",
-  "size": "722",
-  "value": "1458240269.373968000",
-  "show": "Mar 17, 2016 18:44:29.373968000 UTC",
-  "unmaskedvalue": null,
-  "hide": null,
-  "fields": null,
-  "protos": null
-}
-  ]
-},
-{
-  "name": "frame",
-  "pos": "0",
-  "showname": "Frame 1: 722 bytes on wire (5776 bits), 722 bytes captured 
(5776 bits)",
-  "size": "722",
-  "hide": null,
-  "fields": [
-{
-  "name": "frame.dlt",
-  "pos": "0",
-  "showname": "WTAP_ENCAP: 1",
-  "size": "0",
-  "value": null,
-  "show": "1",
-  "unmaskedvalue": null,
-  "hide": null,
-  "fields": null,
-  "protos": null
-},
-{
-  "name": "frame.time",
-  "pos": "0",
-  "showname": "Arrival Time: Mar 17, 2016 18:44:29.373968000 UTC",
-  "size": "0",
-  "value": null,
-  "show": "Mar 17, 2016 18:44:29.373968000",
-  "unmaskedvalue": null,
-  "hide": null,
-  "fields": null,
-  "protos": null
-},
-{
-  "name": "frame.offset_shift",
-  "pos": "0",
-  "showname": "Time shift for this packet: 0.0 seconds",
-  "size": "0",
-  "value": null,
-  "show": "0.0",
-  "unmaskedvalue": null,
-  "hide": null,
-  "fields": null,
-  "protos": null
-},
-{
-  "name": "frame.time_epoch",
-  "pos": "0",
-  "showname": "Epoch Time: 1458240269.373968000 seconds",
-  "size": "0",
-  "value": null,
-  "show": "1458240269.373968000",
-  "unmaskedvalue": null,
-  "hide": null,
-  "fields": null,
-  "protos": null
-},
-{
-  "name": "frame.time_delta",
-  "pos": "0",
-  "showname": "Time delta from previous captured frame: 0.0 
seconds",
-  "size": "0",
-  "value": null,
-  "show": "0.0",
-  "unmaskedvalue": null,
-  "hide": null,
-  "fields": null,
-  "protos": null
-},
-{
-  "name": "frame.time_delta_displayed",
-  "pos": 

[39/51] [abbrv] metron git commit: Merge branch 'master' into feature/METRON-1554-pcap-query-panel

2018-08-17 Thread rmerriman
Merge branch 'master' into feature/METRON-1554-pcap-query-panel


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/d8a5922b
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/d8a5922b
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/d8a5922b

Branch: refs/heads/master
Commit: d8a5922b4cc5b20be7cb08f333a861241c365fd5
Parents: 9064cca 2b0060b
Author: Michael Miklavcic 
Authored: Thu Aug 9 09:31:01 2018 -0600
Committer: Michael Miklavcic 
Committed: Thu Aug 9 09:31:01 2018 -0600

--
 metron-sensors/pycapa/README.md| 92 ++---
 metron-sensors/pycapa/requirements.txt |  6 +-
 2 files changed, 88 insertions(+), 10 deletions(-)
--




[15/51] [abbrv] metron git commit: METRON-1690: Add more context to PcapJob JobStatus (mmiklavc via mmiklavc) closes apache/metron#1128

2018-08-17 Thread rmerriman
METRON-1690: Add more context to PcapJob JobStatus (mmiklavc via mmiklavc) 
closes apache/metron#1128


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/9d4842f3
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/9d4842f3
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/9d4842f3

Branch: refs/heads/master
Commit: 9d4842f3d6f355d449d51f3c6ac02f2c904c295d
Parents: d0e8757
Author: mmiklavc 
Authored: Wed Jul 25 08:21:32 2018 -0600
Committer: Michael Miklavcic 
Committed: Wed Jul 25 08:21:32 2018 -0600

--
 .../metron-job_state_statechart_diagram.svg |  18 +-
 .../metron-job_state_statechart_diagram.xml |  18 +-
 .../java/org/apache/metron/job/JobStatus.java   |  42 -
 .../org/apache/metron/job/JobStatusTest.java|  55 ++
 .../job/manager/InMemoryJobManagerTest.java |  16 ++
 .../org/apache/metron/pcap/PcapJobTest.java |  80 +---
 .../PcapTopologyIntegrationTest.java|  30 +--
 .../java/org/apache/metron/pcap/mr/PcapJob.java | 186 +--
 site-book/bin/generate-md.sh|   2 +
 9 files changed, 294 insertions(+), 153 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/9d4842f3/metron-platform/metron-job/metron-job_state_statechart_diagram.svg
--
diff --git a/metron-platform/metron-job/metron-job_state_statechart_diagram.svg 
b/metron-platform/metron-job/metron-job_state_statechart_diagram.svg
index a99c5ad..c801eae 100644
--- a/metron-platform/metron-job/metron-job_state_statechart_diagram.svg
+++ b/metron-platform/metron-job/metron-job_state_statechart_diagram.svg
@@ -1,14 +1,14 @@
 
 http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd;>
-http://www.w3.org/2000/svg; 
xmlns:xlink="http://www.w3.org/1999/xlink; width="661px" height="291px" 
version="1.1" style="background-color: rgb(255, 255, 255);">http://www.w3.org/TR/SVG11/feature#Extensibility;>http://www.w3.org/1999/xhtml; style="display: inline-block; font-size: 
12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; 
vertical-align: top; width: 92px; white-space: nowrap; word-wrap: normal; 
text-align: center;">http://www.w3.org/1999/xhtml; 
style="display:inline-block;text-align:inherit;text-dec
 oration:inherit;">NOT_RUNNINGNOT_RUNNINGhttp://www.w3.org/TR/SVG11/feature#Extensibility;>http://www.w3.org/1999/xhtml; style="display: inline-block; font-size: 
12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; 
vertical-align: top; width: 60px; white-space: nowrap; word-wrap: normal; 
text-align: center;">http://ww
 w.w3.org/1999/xhtml" 
style="display:inline-block;text-align:inherit;text-decoration:inherit;">RUNNINGRUNNINGhttp://www.w3.org/TR/SVG11/feature#Extensibility;>http://www.w3.org/1999/xhtml; style="display: inline-block; font-size: 
12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; 
vertical-align: top; width: 74px; white-space: nowrap; word-wrap: normal; 
text-align: center;">http://www.w3.org/1999/xhtml; 
style="display:inline-block;text-align:inherit;text-decoration:inherit;">FINALIZINGFINALIZINGhttp://www.w3.org/TR/SVG11/feature#Extensibility;>http://www.w3.org/1999/xhtml; style="display: inline-block; font-size: 
12px; font-family: Verdana; color: rgb(0,
  0, 0); line-height: 1.2; vertical-align: top; width: 44px; white-space: 
nowrap; word-wrap: normal; text-align: center;">http://www.w3.org/1999/xhtml; 
style="display:inline-block;text-align:inherit;text-decoration:inherit;">KILLEDKILLEDhttp://www.w3.org/TR/SVG11/feature#Extensibility;>http://www.w3.org/1999/xhtml; style="display: inline-block; font-size: 
12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; 
vertical-align: top; width: 44px; white-space: nowrap; word-wrap: normal; 
text-align: center;">http://www.w3.org/1999/xhtml;
  
style="display:inline-block;text-align:inherit;text-decoration:inherit;">FAILEDFAILEDhttp://www.w3.org/TR/SVG11/feature#Extensibility;>http://www.w3.org/1999/xhtml; style="display: inline-block; font-size: 
12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; 
vertical-align: top; width: 76px; white-space: nowrap; word-wrap: normal; 
text-align: center;">http://www.w3.org/1999/xhtml; 
style="display:inline-block;text-align:inherit;text-decoration:inherit;">SUCCEEDEDSUCCEEDED
+http://www.w3.org/2000/svg; 
xmlns:xlink="http://www.w3.org/1999/xlink; width="656px" height="291px" 
version="1.1">http://www.w3.org/TR/SVG11/feature#Extensibility;>http://www.w3.org/1999/xhtml; style="display: inline-block; font-size: 
12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; 
vertical-align: top; width: 92px; white-space: nowrap; word-wrap: normal; 
text-align: center;">http://www.w3.org/1999/xhtml; 

[37/51] [abbrv] metron git commit: METRON-1713 PCAP UI - Add a way to kill a pcap job (tiborm via merrimanr) closes apache/metron#1143

2018-08-17 Thread rmerriman
METRON-1713 PCAP UI - Add a way to kill a pcap job (tiborm via merrimanr) 
closes apache/metron#1143


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/14dcb2d9
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/14dcb2d9
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/14dcb2d9

Branch: refs/heads/master
Commit: 14dcb2d90581835d8206c65918c24e8cb04bfd06
Parents: 5b3e2c3
Author: tiborm 
Authored: Thu Aug 9 08:33:21 2018 -0500
Committer: rmerriman 
Committed: Thu Aug 9 08:33:21 2018 -0500

--
 .../pcap/pcap-panel/pcap-panel.component.html   |   7 +-
 .../pcap/pcap-panel/pcap-panel.component.scss   |  33 +
 .../pcap-panel/pcap-panel.component.spec.ts | 130 +++
 .../app/pcap/pcap-panel/pcap-panel.component.ts |  42 +-
 .../src/app/pcap/service/pcap.service.ts|  10 +-
 5 files changed, 215 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/14dcb2d9/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.html
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.html
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.html
index 950f49c..0dda268 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.html
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.html
@@ -15,8 +15,11 @@
   
 
   
-  
-{{progressWidth}}%
+  
+
+  {{progressWidth}}%
+
+
   
   
 {{ errorMsg }}

http://git-wip-us.apache.org/repos/asf/metron/blob/14dcb2d9/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.scss
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.scss
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.scss
index 8989bf9..523f5ce 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.scss
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.scss
@@ -31,4 +31,37 @@
 
 .progress-bar {
   width: 0;
+  height: 34px;
+  line-height: 34px;
+  vertical-align: middle;
+  font-size: 0.875rem;
+}
+
+.pcap-progress-wrapper {
+  position: relative;
+  padding-right: 55px;
+}
+
+.pcap-cancel-query-button {
+  position: absolute;
+  top: 0;
+  right: 0;
+  padding-top: 6px;
+  padding-bottom: 6px;
+  background: $icon-button-background;
+  min-width: 42px;
+  padding-left: 0;
+  padding-right: 0;
+  border: 1px solid $blue-chill !important;
+  cursor: pointer;
+
+  &:focus {
+box-shadow: none;
+  }
+
+  &::before {
+font-family: "FontAwesome";
+content: '\f00d';
+color: $piction-blue;
+  }
 }

http://git-wip-us.apache.org/repos/asf/metron/blob/14dcb2d9/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.spec.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.spec.ts
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.spec.ts
index 0804b79..9dacc7f 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.spec.ts
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.spec.ts
@@ -50,6 +50,9 @@ class FakePcapService {
 return '';
   }
   submitRequest() {}
+  cancelQuery() {
+return defer(() => Promise.resolve());
+  }
 }
 
 describe('PcapPanelComponent', () => {
@@ -327,6 +330,133 @@ describe('PcapPanelComponent', () => {
 expect(fixture.debugElement.query(By.css('app-pcap-list'))).toBeDefined();
   }));
 
+  it('should render a cancel button only if a query runs', () => {
+component.queryRunning = false;
+fixture.detectChanges();
+
expect(fixture.debugElement.query(By.css('[data-qe-id="pcap-cancel-query-button"]'))).toBeFalsy();
+
+component.queryRunning = true;
+fixture.detectChanges();
+
expect(fixture.debugElement.query(By.css('[data-qe-id="pcap-cancel-query-button"]'))).toBeDefined();
+  });
+
+  it('should hide the progress bar if the user clicks on the cancel button', 
fakeAsync(() => {
+component.queryRunning = true;
+component.queryId = 'testid';
+fixture.detectChanges();
+expect(fixture.debugElement.query(By.css('.pcap-progress'))).toBeDefined();
+
+const cancelBtn = 
fixture.debugElement.query(By.css('[data-qe-id="pcap-cancel-query-button"]'));
+const cancelBtnEl = cancelBtn.nativeElement;
+
+cancelBtnEl.cl

[40/51] [abbrv] metron git commit: METRON-1722 PcapCLI should print progress to stdout (merrimanr) closes apache/metron#1138

2018-08-17 Thread rmerriman
METRON-1722 PcapCLI should print progress to stdout (merrimanr) closes 
apache/metron#1138


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/b29833cc
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/b29833cc
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/b29833cc

Branch: refs/heads/master
Commit: b29833cc5db4efca2a6e9025042baf705fb347c6
Parents: d8a5922
Author: merrimanr 
Authored: Fri Aug 10 08:25:13 2018 -0500
Committer: rmerriman 
Committed: Fri Aug 10 08:25:13 2018 -0500

--
 metron-platform/metron-pcap-backend/README.md   |  2 ++
 .../java/org/apache/metron/pcap/query/CliParser.java|  4 
 .../java/org/apache/metron/pcap/query/PcapCliTest.java  | 12 +---
 .../java/org/apache/metron/pcap/config/PcapConfig.java  |  9 +
 .../java/org/apache/metron/pcap/config/PcapOptions.java |  3 ++-
 .../main/java/org/apache/metron/pcap/mr/PcapJob.java| 11 +++
 6 files changed, 37 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/b29833cc/metron-platform/metron-pcap-backend/README.md
--
diff --git a/metron-platform/metron-pcap-backend/README.md 
b/metron-platform/metron-pcap-backend/README.md
index e7960e3..2ff20d8 100644
--- a/metron-platform/metron-pcap-backend/README.md
+++ b/metron-platform/metron-pcap-backend/README.md
@@ -132,6 +132,7 @@ usage: Fixed filter options
  -nr,--num_reducers The number of reducers to use.  Default
  is 10.
  -h,--help   Display help
+ -ps,--print_status  Print the status of the job as it runs
  -ir,--include_reverse   Indicates if filter should check swapped
  src/dest addresses and IPs
  -p,--protocol  IP Protocol
@@ -154,6 +155,7 @@ usage: Query filter options
  -nr,--num_reducers The number of reducers to use.  Default
  is 10.
  -h,--help   Display help
+ -ps,--print_status  Print the status of the job as it runs
  -q,--query Query string to use as a filter
  -st,--start_time   (required) Packet start time range.
 ```

http://git-wip-us.apache.org/repos/asf/metron/blob/b29833cc/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/CliParser.java
--
diff --git 
a/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/CliParser.java
 
b/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/CliParser.java
index 2d15e8b..69c725c 100644
--- 
a/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/CliParser.java
+++ 
b/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/CliParser.java
@@ -55,6 +55,7 @@ public class CliParser {
 options.addOption(newOption("rpf", "records_per_file", true, 
String.format("Number of records to include in each output pcap file (defaults 
to %s)", NUM_RECORDS_PER_FILE_DEFAULT)));
 options.addOption(newOption("et", "end_time", true, "Packet end time 
range. Default is current system time."));
 options.addOption(newOption("df", "date_format", true, "Date format to use 
for parsing start_time and end_time. Default is to use time in millis since the 
epoch."));
+options.addOption(newOption("ps", "print_status", false, "Print the status 
of the job as it runs"));
 return options;
   }
 
@@ -125,6 +126,9 @@ public class CliParser {
 //no-op
   }
 }
+if (commandLine.hasOption("print_status")) {
+  config.setPrintJobStatus(true);
+}
   }
 
   public void printHelp(String msg, Options opts) {

http://git-wip-us.apache.org/repos/asf/metron/blob/b29833cc/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
--
diff --git 
a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
 
b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
index 96ca354..7c75224 100644
--- 
a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
+++ 
b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
@@ -147,7 +147,8 @@ public class PcapCliTest {
 "-protocol", "6",
 "-include_reverse",
 &

[27/51] [abbrv] metron git commit: Merge branch 'master' into feature/METRON-1554-pcap-query-panel

2018-08-17 Thread rmerriman
Merge branch 'master' into feature/METRON-1554-pcap-query-panel


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/89726659
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/89726659
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/89726659

Branch: refs/heads/master
Commit: 897266598b7984884d6cf8a6a699fe902e792483
Parents: 09a7f18 1b2bdff
Author: merrimanr 
Authored: Mon Aug 6 11:08:48 2018 -0500
Committer: merrimanr 
Committed: Mon Aug 6 11:08:48 2018 -0500

--
 .../METRON/CURRENT/repos/repoinfo.xml   |   7 ++
 .../packaging/docker/ansible-docker/Dockerfile  | 118 ---
 .../packaging/docker/deb-docker/Dockerfile  |  23 ++--
 .../packaging/docker/rpm-docker/Dockerfile  |  46 ++--
 metron-sensors/pycapa/README.md |  47 +---
 5 files changed, 156 insertions(+), 85 deletions(-)
--




[35/51] [abbrv] metron git commit: METRON-1712 PCAP UI - Input validation (tiborm via merrimanr) closes apache/metron#1142

2018-08-17 Thread rmerriman
METRON-1712 PCAP UI - Input validation (tiborm via merrimanr) closes 
apache/metron#1142


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/52de126f
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/52de126f
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/52de126f

Branch: refs/heads/master
Commit: 52de126fc746181d6aac8ce002d6b814fd1e6cb5
Parents: afb9607
Author: tiborm 
Authored: Wed Aug 8 16:36:35 2018 -0500
Committer: rmerriman 
Committed: Wed Aug 8 16:36:35 2018 -0500

--
 .../src/app/pcap/model/pcap.mock.ts |   4 +-
 .../src/app/pcap/model/pcap.request.ts  |   4 +-
 .../pcap-filters/pcap-filters.component.html|  12 +-
 .../pcap-filters/pcap-filters.component.spec.ts | 228 ++-
 .../pcap/pcap-filters/pcap-filters.component.ts |   5 +
 5 files changed, 232 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/52de126f/metron-interface/metron-alerts/src/app/pcap/model/pcap.mock.ts
--
diff --git a/metron-interface/metron-alerts/src/app/pcap/model/pcap.mock.ts 
b/metron-interface/metron-alerts/src/app/pcap/model/pcap.mock.ts
index c867fe9..bf02da8 100644
--- a/metron-interface/metron-alerts/src/app/pcap/model/pcap.mock.ts
+++ b/metron-interface/metron-alerts/src/app/pcap/model/pcap.mock.ts
@@ -22,9 +22,9 @@ export const fakePcapRequest = {
   startTimeMs: 0,
   endTimeMs: 0,
   ipSrcAddr: '0.0.0.0',
-  ipSrcPort: '80',
+  ipSrcPort: 80,
   ipDstAddr: '0.0.0.0',
-  ipDstPort: '80',
+  ipDstPort: 80,
   protocol: '*',
   packetFilter: '*',
   includeReverse: false

http://git-wip-us.apache.org/repos/asf/metron/blob/52de126f/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
--
diff --git a/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts 
b/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
index 91c2287..d00a6ac 100644
--- a/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
+++ b/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
@@ -20,9 +20,9 @@ export class PcapRequest {
   startTimeMs: number = 0;
   endTimeMs: number = 15;
   ipSrcAddr: string = '';
-  ipSrcPort: string = '';
+  ipSrcPort: number = 0;
   ipDstAddr: string = '';
-  ipDstPort: string = '';
+  ipDstPort: number = 0;
   protocol: string = '';
   packetFilter: string = '';
   includeReverse: boolean = false;

http://git-wip-us.apache.org/repos/asf/metron/blob/52de126f/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.html
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.html
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.html
index f4133df..039307a 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.html
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.html
@@ -24,21 +24,21 @@
 
   
 IP Source Address
-
+
   
-  
+
   
 IP Source Port
-
+
   
 
   IP Dest Address
-
+
   
 
   
 IP Dest Port
-
+
   
 
 
@@ -57,6 +57,6 @@
   
 
   
-
+
   
 

http://git-wip-us.apache.org/repos/asf/metron/blob/52de126f/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
index c0f9c3b..4336b22 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
@@ -16,20 +16,19 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import { async, ComponentFixture, TestBed, fakeAsync, tick } from 
'@angular/core/testing';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 import { By } from '@angular/platform-browser';
 
 import { PcapFiltersComponent } from './pcap-filters.component';
 import { FormsModule } from '../../../../node_modules/@angular/forms';
-import { Component, Input, Output, EventEmitter } from '@angular/core';
+import { Component, Input, Output, EventEmitter, DebugElement } from 
'@angular/core';
 import { PcapRequest } from '../model/pcap.request';
-import { emit } from 'cluster';
 
 @Component({
   selector

[42/51] [abbrv] metron git commit: METRON-1731: PCAP - Escape colons in output dir names (mmiklavc via mmiklavc) closes apache/metron#1155

2018-08-17 Thread rmerriman
METRON-1731: PCAP - Escape colons in output dir names (mmiklavc via mmiklavc) 
closes apache/metron#1155


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/73dc63e6
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/73dc63e6
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/73dc63e6

Branch: refs/heads/master
Commit: 73dc63e671b55d22d251f4be1c217259f4f5dc71
Parents: 05316a4
Author: mmiklavc 
Authored: Fri Aug 10 12:42:47 2018 -0600
Committer: Michael Miklavcic 
Committed: Fri Aug 10 12:42:47 2018 -0600

--
 .../apache/metron/pcap/FixedPcapFilterTest.java | 286 --
 .../org/apache/metron/pcap/PcapJobTest.java | 290 ---
 .../apache/metron/pcap/QueryPcapFilterTest.java | 228 ---
 .../pcap/filter/fixed/FixedPcapFilter.java  |  14 +-
 .../pcap/filter/query/QueryPcapFilter.java  |  17 +-
 .../metron/pcap/mr/OutputDirFormatter.java  |  37 +++
 .../java/org/apache/metron/pcap/mr/PcapJob.java |   5 +-
 .../pcap/filter/fixed/FixedPcapFilterTest.java  | 271 -
 .../pcap/filter/query/QueryPcapFilterTest.java  | 207 -
 .../metron/pcap/mr/OutputDirFormatterTest.java  |  62 
 .../org/apache/metron/pcap/mr/PcapJobTest.java  | 290 +++
 11 files changed, 877 insertions(+), 830 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/73dc63e6/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/FixedPcapFilterTest.java
--
diff --git 
a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/FixedPcapFilterTest.java
 
b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/FixedPcapFilterTest.java
deleted file mode 100644
index 84969d3..000
--- 
a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/FixedPcapFilterTest.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.metron.pcap;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.metron.common.Constants;
-import org.apache.metron.pcap.filter.fixed.FixedPcapFilter;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class FixedPcapFilterTest {
-  @Test
-  public void testTrivialEquality() throws Exception {
-Configuration config = new Configuration();
-final Map fields = new HashMap() {{
-  put(Constants.Fields.SRC_ADDR.getName(), "src_ip");
-  put(Constants.Fields.SRC_PORT.getName(), "0");
-  put(Constants.Fields.DST_ADDR.getName(), "dst_ip");
-  put(Constants.Fields.DST_PORT.getName(), "1");
-  put(Constants.Fields.INCLUDES_REVERSE_TRAFFIC.getName(), "false");
-}};
-new FixedPcapFilter.Configurator().addToConfig(fields, config);
-{
-  FixedPcapFilter filter = new FixedPcapFilter() {
-@Override
-protected Map packetToFields(PacketInfo pi) {
-  return new HashMap() {{
-put(Constants.Fields.SRC_ADDR.getName(), "src_ip");
-put(Constants.Fields.SRC_PORT.getName(), 0);
-put(Constants.Fields.DST_ADDR.getName(), "dst_ip");
-put(Constants.Fields.DST_PORT.getName(), 1);
-  }};
-}
-  };
-  filter.configure(config);
-  Assert.assertTrue(filter.test(null));
-}
-  }
-
-  @Test
-  public void testReverseTraffic() throws Exception {
-Configuration config = new Configuration();
-final Map fields = new HashMap() {{
-  put(Constants.Fields.SRC_ADDR.getName(), "src_ip");
-  put(Constants.Fields.SRC_PORT.getName(), "0");
-  put(Constants.Fields.DST_ADDR.getName(), "dst_ip");
-  put(Constants.Fields.DST_PORT.getName(), "1");
-  put(Constants.Fields.INCLUDES_REVERSE_TRAFFIC.getName(), "true");
-}};
-new FixedPcapFilter.Configurator().addToConfig(fields, config);
-{
-  FixedPcapFilter filter = new FixedPcapFilter() {
-@Override
-   

[45/51] [abbrv] metron git commit: METRON-1733 PCAP UI - PCAP queries don t work on Safari (sardell via merrimanr) closes apache/metron#1158

2018-08-17 Thread rmerriman
METRON-1733 PCAP UI - PCAP queries dont work on Safari (sardell via 
merrimanr) closes apache/metron#1158


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/bce9b903
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/bce9b903
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/bce9b903

Branch: refs/heads/master
Commit: bce9b903fbd3436ea0c41eb8d75da279e16ce922
Parents: ba0a609
Author: sardell 
Authored: Mon Aug 13 16:04:45 2018 -0500
Committer: rmerriman 
Committed: Mon Aug 13 16:04:45 2018 -0500

--
 .../src/app/pcap/pcap-filters/pcap-filters.component.ts  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/bce9b903/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.ts
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.ts
index df91ae3..b23a2e2 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.ts
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.ts
@@ -59,8 +59,8 @@ export class PcapFiltersComponent implements OnInit, 
OnChanges {
   }
 
   onSubmit() {
-this.model.startTimeMs = new Date(this.startTimeStr).getTime();
-this.model.endTimeMs = new Date(this.endTimeStr).getTime();
+this.model.startTimeMs = moment(this.startTimeStr, 
DEFAULT_TIMESTAMP_FORMAT).valueOf();
+this.model.endTimeMs = moment(this.endTimeStr, 
DEFAULT_TIMESTAMP_FORMAT).valueOf();
 if (this.ipSrcPort !== '') {
   this.model.ipSrcPort = +this.ipSrcPort;
 } else {



[23/51] [abbrv] metron git commit: METRON-1671 Create PCAP UI (tiborm via merrimanr) closes apache/metron#1103

2018-08-17 Thread rmerriman
METRON-1671 Create PCAP UI (tiborm via merrimanr) closes apache/metron#1103


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/d5eb56a9
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/d5eb56a9
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/d5eb56a9

Branch: refs/heads/master
Commit: d5eb56a967ac7b925d0a843c027a2b0dde66de06
Parents: 7dff4de
Author: tiborm 
Authored: Wed Aug 1 11:31:50 2018 -0500
Committer: rmerriman 
Committed: Wed Aug 1 11:31:50 2018 -0500

--
 .../metron-alerts/package-lock.json | 3719 +-
 .../metron-alerts/src/app/app-routing.module.ts |3 +-
 .../metron-alerts/src/app/app.component.html|8 +
 .../metron-alerts/src/app/app.component.scss|   18 +
 .../metron-alerts/src/app/app.module.ts |6 +-
 .../src/app/pcap/model/pcap.request.ts  |   29 +
 .../metron-alerts/src/app/pcap/model/pdml.ts|   50 +
 .../pcap-filters/pcap-filters.component.html|   52 +
 .../pcap-filters/pcap-filters.component.scss|   69 +
 .../pcap-filters/pcap-filters.component.spec.ts |   46 +
 .../pcap/pcap-filters/pcap-filters.component.ts |   41 +
 .../app/pcap/pcap-list/pcap-list.component.html |   37 +
 .../app/pcap/pcap-list/pcap-list.component.scss |   21 +
 .../pcap/pcap-list/pcap-list.component.spec.ts  |   70 +
 .../app/pcap/pcap-list/pcap-list.component.ts   |   39 +
 .../pcap-packet-line.component.html |   19 +
 .../pcap-packet-line.component.scss |   17 +
 .../pcap-packet-line.component.spec.ts  | 1283 ++
 .../pcap-packet-line.component.ts   |   55 +
 .../pcap/pcap-packet/pcap-packet.component.html |   21 +
 .../pcap/pcap-packet/pcap-packet.component.scss |   36 +
 .../pcap-packet/pcap-packet.component.spec.ts   | 1283 ++
 .../pcap/pcap-packet/pcap-packet.component.ts   |   39 +
 .../pcap/pcap-panel/pcap-panel.component.html   |   31 +
 .../pcap/pcap-panel/pcap-panel.component.scss   |   52 +
 .../pcap-panel/pcap-panel.component.spec.ts |   68 +
 .../app/pcap/pcap-panel/pcap-panel.component.ts |   75 +
 .../metron-alerts/src/app/pcap/pcap.module.ts   |   50 +
 .../metron-alerts/src/app/pcap/pcap.routing.ts  |   27 +
 .../src/app/pcap/service/pcap.service.spec.ts   | 1752 +
 .../src/app/pcap/service/pcap.service.ts|   68 +
 31 files changed, 7304 insertions(+), 1780 deletions(-)
--




[34/51] [abbrv] metron git commit: METRON-1720 Better error messages when there are no results or wireshark is not installed (merrimanr) closes apache/metron#1154

2018-08-17 Thread rmerriman
METRON-1720 Better error messages when there are no results or wireshark is not 
installed (merrimanr) closes apache/metron#1154


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/afb9607d
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/afb9607d
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/afb9607d

Branch: refs/heads/master
Commit: afb9607dfbbaf89f06a30823bf668523bb7b6f9a
Parents: 7967f35
Author: merrimanr 
Authored: Wed Aug 8 14:11:26 2018 -0500
Committer: rmerriman 
Committed: Wed Aug 8 14:11:26 2018 -0500

--
 .../pcap-panel/pcap-panel.component.spec.ts | 64 
 .../app/pcap/pcap-panel/pcap-panel.component.ts |  9 ++-
 .../src/app/pcap/service/pcap.service.ts|  3 +-
 3 files changed, 73 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/afb9607d/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.spec.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.spec.ts
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.spec.ts
index bd732ad..0804b79 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.spec.ts
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.spec.ts
@@ -26,6 +26,7 @@ import { PcapPagination } from '../model/pcap-pagination';
 import { By } from '../../../../node_modules/@angular/platform-browser';
 import { PcapRequest } from '../model/pcap.request';
 import { defer } from 'rxjs/observable/defer';
+import {RestError} from "../../model/rest-error";
 
 @Component({
   selector: 'app-pcap-filters',
@@ -305,6 +306,7 @@ describe('PcapPanelComponent', () => {
 );
 
 const pollResponse = new PcapStatusResponse();
+pollResponse.jobStatus = 'SUCCEEDED';
 pcapService.pollStatus = jasmine.createSpy('pollStatus').and.returnValue(
   defer(() => Promise.resolve(pollResponse))
 );
@@ -321,6 +323,68 @@ describe('PcapPanelComponent', () => {
 tick();
 fixture.detectChanges();
 
+expect(component.pdml).toEqual(myPdml);
 expect(fixture.debugElement.query(By.css('app-pcap-list'))).toBeDefined();
   }));
+
+  it('should handle get packet 404', fakeAsync(() => {
+const searchResponse = new PcapStatusResponse();
+searchResponse.jobId = '42';
+
+pcapService.submitRequest = 
jasmine.createSpy('submitRequest').and.returnValue(
+defer(() => Promise.resolve(searchResponse))
+);
+
+const pollResponse = new PcapStatusResponse();
+pollResponse.jobStatus = 'SUCCEEDED';
+pcapService.pollStatus = jasmine.createSpy('pollStatus').and.returnValue(
+defer(() => Promise.resolve(pollResponse))
+);
+
+const restError = new RestError();
+restError.responseCode = 404;
+pcapService.getPackets = jasmine.createSpy('getPackets').and.returnValue(
+defer(() => Promise.reject(restError))
+);
+
+component.onSearch(new PcapRequest());
+
+expect(component.errorMsg).toBeFalsy();
+
+tick();
+fixture.detectChanges();
+
+expect(component.errorMsg).toEqual('No results returned');
+  }));
+
+  it('should handle get packet error', fakeAsync(() => {
+const searchResponse = new PcapStatusResponse();
+searchResponse.jobId = '42';
+
+pcapService.submitRequest = 
jasmine.createSpy('submitRequest').and.returnValue(
+defer(() => Promise.resolve(searchResponse))
+);
+
+const pollResponse = new PcapStatusResponse();
+pollResponse.jobStatus = 'SUCCEEDED';
+pcapService.pollStatus = jasmine.createSpy('pollStatus').and.returnValue(
+defer(() => Promise.resolve(pollResponse))
+);
+
+const restError = new RestError();
+restError.responseCode = 500;
+restError.message = 'error message';
+pcapService.getPackets = jasmine.createSpy('getPackets').and.returnValue(
+defer(() => Promise.reject(restError))
+);
+
+component.onSearch(new PcapRequest());
+
+expect(component.errorMsg).toBeFalsy();
+
+tick();
+fixture.detectChanges();
+
+expect(component.errorMsg).toEqual('Response message: error message. 
Something went wrong retrieving pdml results!');
+  }));
 });

http://git-wip-us.apache.org/repos/asf/metron/blob/afb9607d/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts
index 82121d4..8e4ced0 1

[22/51] [abbrv] metron git commit: METRON-1671 Create PCAP UI (tiborm via merrimanr) closes apache/metron#1103

2018-08-17 Thread rmerriman
http://git-wip-us.apache.org/repos/asf/metron/blob/d5eb56a9/metron-interface/metron-alerts/package-lock.json
--
diff --git a/metron-interface/metron-alerts/package-lock.json 
b/metron-interface/metron-alerts/package-lock.json
index 3ace2b7..7d3ad99 100644
--- a/metron-interface/metron-alerts/package-lock.json
+++ b/metron-interface/metron-alerts/package-lock.json
@@ -1,6 +1,6 @@
 {
   "name": "metron-alerts",
-  "version": "0.4.3",
+  "version": "0.5.1",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
@@ -12,66 +12,66 @@
   "requires": {
 "@ngtools/json-schema": "1.1.0",
 "@ngtools/webpack": "1.5.3",
-"autoprefixer": "6.7.7",
-"chalk": "2.3.0",
-"circular-dependency-plugin": "3.0.0",
-"common-tags": "1.5.1",
-"core-object": "3.1.5",
-"css-loader": "0.28.7",
-"cssnano": "3.10.0",
-"denodeify": "1.2.1",
-"diff": "3.2.0",
-"ember-cli-normalize-entity-name": "1.0.0",
-"ember-cli-string-utils": "1.1.0",
-"exports-loader": "0.6.4",
-"extract-text-webpack-plugin": "2.1.2",
-"file-loader": "0.10.1",
-"fs-extra": "4.0.2",
-"get-caller-file": "1.0.2",
-"glob": "7.1.2",
-"heimdalljs": "0.2.5",
-"heimdalljs-logger": "0.1.9",
-"html-webpack-plugin": "2.30.1",
-"inflection": "1.12.0",
-"inquirer": "3.3.0",
-"isbinaryfile": "3.0.2",
-"istanbul-instrumenter-loader": "2.0.0",
-"json-loader": "0.5.7",
-"karma-source-map-support": "1.2.0",
-"less": "2.7.3",
-"less-loader": "4.0.5",
-"license-webpack-plugin": "0.4.3",
-"lodash": "4.17.4",
-"memory-fs": "0.4.1",
-"minimatch": "3.0.4",
-"node-modules-path": "1.0.1",
-"node-sass": "4.5.3",
-"nopt": "4.0.1",
-"opn": "5.1.0",
-"portfinder": "1.0.13",
-"postcss-loader": "1.3.3",
-"postcss-url": "5.1.2",
-"raw-loader": "0.5.1",
-"resolve": "1.3.3",
-"rsvp": "3.6.2",
-"rxjs": "5.4.0",
-"sass-loader": "6.0.6",
-"script-loader": "0.7.2",
-"semver": "5.3.0",
-"silent-error": "1.1.0",
-"source-map-loader": "0.2.3",
-"style-loader": "0.13.2",
-"stylus": "0.54.5",
-"stylus-loader": "3.0.1",
+"autoprefixer": "^6.5.3",
+"chalk": "^2.0.1",
+"circular-dependency-plugin": "^3.0.0",
+"common-tags": "^1.3.1",
+"core-object": "^3.1.0",
+"css-loader": "^0.28.1",
+"cssnano": "^3.10.0",
+"denodeify": "^1.2.1",
+"diff": "^3.1.0",
+"ember-cli-normalize-entity-name": "^1.0.0",
+"ember-cli-string-utils": "^1.0.0",
+"exports-loader": "^0.6.3",
+"extract-text-webpack-plugin": "^2.1.0",
+"file-loader": "^0.10.0",
+"fs-extra": "^4.0.0",
+"get-caller-file": "^1.0.0",
+"glob": "^7.0.3",
+"heimdalljs": "^0.2.4",
+"heimdalljs-logger": "^0.1.9",
+"html-webpack-plugin": "^2.19.0",
+"inflection": "^1.7.0",
+"inquirer": "^3.0.0",
+"isbinaryfile": "^3.0.0",
+"istanbul-instrumenter-loader": "^2.0.0",
+"json-loader": "^0.5.4",
+"karma-source-map-support": "^1.2.0",
+"less": "^2.7.2",
+"less-loader": "^4.0.2",
+"license-webpack-plugin": "^0.4.2",
+"lodash": "^4.11.1",
+"memory-fs": "^0.4.1",
+"minimatch": "^3.0.3",
+"node-modules-path": "^1.0.0",
+"node-sass": "^4.3.0",
+"nopt": "^4.0.1",
+"opn": "~5.1.0",
+"portfinder": "~1.0.12",
+"postcss-loader": "^1.3.3",
+"postcss-url": "^5.1.2",
+"raw-loader": "^0.5.1",
+"resolve": "^1.1.7",
+"rsvp": "^3.0.17",
+"rxjs": "^5.0.1",
+"sass-loader": "^6.0.3",
+"script-loader": "^0.7.0",
+"semver": "^5.1.0",
+"silent-error": "^1.0.0",
+"source-map-loader": "^0.2.0",
+"style-loader": "^0.13.1",
+"stylus": "^0.54.5",
+"stylus-loader": "^3.0.1",
 "temp": "0.8.3",
-"typescript": "2.2.2",
-"url-loader": "0.5.9",
-"walk-sync": "0.3.2",
-"webpack": "2.4.1",
-"webpack-dev-middleware": "1.12.2",
-"webpack-dev-server": "2.4.5",
-"webpack-merge": "2.6.1",
-"zone.js": "0.8.18"
+"typescript": ">=2.0.0 <2.4.0",
+"url-loader": "^0.5.7",
+"walk-sync": "^0.3.1",
+"webpack": "~2.4.0",
+"webpack-dev-middleware": "^1.10.2",
+"webpack-dev-server": "~2.4.5",
+"webpack-merge": "^2.4.0",
+"zone.js": "^0.8.14"
   },
   "dependencies": {
 "ansi-styles": {
@@ -80,7 +80,7 @@
   "integrity": 

[50/51] [abbrv] metron git commit: METRON-1739 UDP packets are not handled (merrimanr) closes apache/metron#1168

2018-08-17 Thread rmerriman
METRON-1739 UDP packets are not handled (merrimanr) closes apache/metron#1168


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/14e80b3c
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/14e80b3c
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/14e80b3c

Branch: refs/heads/master
Commit: 14e80b3c229ea2e5a8d615c87d822d4b44d8ec98
Parents: 076a6a1
Author: merrimanr 
Authored: Fri Aug 17 08:47:32 2018 -0500
Committer: rmerriman 
Committed: Fri Aug 17 08:47:32 2018 -0500

--
 .../src/app/pcap/model/pdml.mock.ts | 31 
 .../pcap-packet-line.component.spec.ts  | 53 --
 .../pcap-packet-line.component.ts   | 15 ++--
 .../java/org/apache/metron/pcap/PcapHelper.java | 18 -
 .../org/apache/metron/pcap/PcapHelperTest.java  | 76 
 5 files changed, 180 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/14e80b3c/metron-interface/metron-alerts/src/app/pcap/model/pdml.mock.ts
--
diff --git a/metron-interface/metron-alerts/src/app/pcap/model/pdml.mock.ts 
b/metron-interface/metron-alerts/src/app/pcap/model/pdml.mock.ts
index 6316b92..2520da1 100644
--- a/metron-interface/metron-alerts/src/app/pcap/model/pdml.mock.ts
+++ b/metron-interface/metron-alerts/src/app/pcap/model/pdml.mock.ts
@@ -60,3 +60,34 @@ export const fakePacket = {
 } as PdmlProto
   ]
 } as PdmlPacket;
+
+export const fakeUdpPacket = {
+  "name": '',
+  "expanded": false,
+  "protos": [
+{
+  "name": "geninfo",
+  "showname": "",
+  "fields": [
+{ "name": "timestamp", "pos": "0", "showname": "Captured Time", 
"size": "342", "value": "1534414874.932794000", "show": "Aug 16, 2018 
10:21:14.932794000 UTC", "unmaskedvalue": null, "hide": null, "fields": null, 
"protos": null } as PdmlField
+  ]
+} as PdmlProto,
+{
+  "name": "ip",
+  "showname": "",
+  "fields": [
+{ "name": "ip.proto", "pos": "23", "showname": "Protocol: UDP (17)", 
"size": "1", "value": "11", "show": "17", "unmaskedvalue": null, "hide": null, 
"fields": null, "protos": null } as PdmlField,
+{ "name": "ip.src", "pos": "26", "showname": "Source: 0.0.0.0 
(0.0.0.0)", "size": "4", "value": "", "show": "0.0.0.0", 
"unmaskedvalue": null, "hide": null, "fields": null, "protos": null } as 
PdmlField,
+{ "name": "ip.dst", "pos": "30", "showname": "Destination: 
255.255.255.255 (255.255.255.255)", "size": "4", "value": "", "show": 
"255.255.255.255", "unmaskedvalue": null, "hide": null, "fields": null, 
"protos": null } as PdmlField
+  ]
+} as PdmlProto,
+{
+  "name": "udp",
+  "showname": "User Datagram Protocol, Src Port: bootpc (68), Dst Port: 
bootps (67)",
+  "fields": [
+{ "name": "udp.srcport", "pos": "34", "showname": "Source port: bootpc 
(68)", "size": "2", "value": "0044", "show": "68", "unmaskedvalue": null, 
"hide": null, "fields": null, "protos": null } as PdmlField,
+{ "name": "udp.dstport", "pos": "36", "showname": "Destination port: 
bootps (67)", "size": "2", "value": "0043", "show": "67", "unmaskedvalue": 
null, "hide": null, "fields": null, "protos": null } as PdmlField
+  ],
+} as PdmlProto
+  ]
+} as PdmlPacket;

http://git-wip-us.apache.org/repos/asf/metron/blob/14e80b3c/metron-interface/metron-alerts/src/app/pcap/pcap-packet-line/pcap-packet-line.component.spec.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-packet-line/pcap-pack

[48/51] [abbrv] metron git commit: METRON-1737: Document Job cleanup (merrimanr via mmiklavc) closes apache/metron#1164

2018-08-17 Thread rmerriman
METRON-1737: Document Job cleanup (merrimanr via mmiklavc) closes 
apache/metron#1164


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/6b70571d
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/6b70571d
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/6b70571d

Branch: refs/heads/master
Commit: 6b70571d6de3951c98269bbf5b38e8b69deddfab
Parents: d9e1f38
Author: merrimanr 
Authored: Wed Aug 15 16:00:13 2018 -0600
Committer: Michael Miklavcic 
Committed: Wed Aug 15 16:00:13 2018 -0600

--
 metron-interface/metron-rest/README.md | 11 +++
 1 file changed, 11 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/6b70571d/metron-interface/metron-rest/README.md
--
diff --git a/metron-interface/metron-rest/README.md 
b/metron-interface/metron-rest/README.md
index 080422d..2c216d1 100644
--- a/metron-interface/metron-rest/README.md
+++ b/metron-interface/metron-rest/README.md
@@ -222,6 +222,17 @@ Out of the box it is a simple wrapper around the tshark 
command to transform raw
 REST will supply the script with raw pcap data through standard in and expects 
PDML data serialized as XML.
 
 Pcap query jobs can be configured for submission to a YARN queue.  This 
setting is exposed as the Spring property `pcap.yarn.queue`.  If configured, 
the REST application will set the `mapreduce.job.queuename` Hadoop property to 
that value.
+It is highly recommended that a dedicated YARN queue be created and configured 
for Pcap queries to prevent a job from consuming too many cluster resources.  
More information about setting up YARN queues can be found 
[here](https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html#Setting_up_queues).
+
+Pcap query results are stored in HDFS.  The location of query results when run 
through the REST app is determined by a couple factors.  The root of Pcap query 
results defaults to `/apps/metron/pcap/output` but can be changed with the 
+Spring property `pcap.final.output.path`.  Assuming the default Pcap query 
output directory, the path to a result page will follow this pattern:
+```
+/apps/metron/pcap/output/{username}/MAP_REDUCE/{job id}/page-{page number}.pcap
+```
+Over time Pcap query results will accumulate in HDFS.  Currently these results 
are not cleaned up automatically so cluster administrators should be aware of 
this and monitor them.  It is highly recommended that a process be put in place 
to 
+periodically delete files and directories under the Pcap query results root.
+
+Users should also be mindful of date ranges used in queries so they don't 
produce result sets that are too large.  Currently there are no limits enforced 
on date ranges.
 
 Queries can also be configured on a global level for setting the number of 
results per page via a Spring property `pcap.page.size`. By default, this value 
is set to 10 pcaps per page, but you may choose to set this value higher
 based on observing frequenetly-run query result sizes. This setting works in 
conjunction with the property for setting finalizer threadpool size when 
optimizing query performance.



[43/51] [abbrv] metron git commit: METRON-1725 Add ability to specify YARN queue for pcap jobs (merrimanr) closes apache/metron#1153

2018-08-17 Thread rmerriman
METRON-1725 Add ability to specify YARN queue for pcap jobs (merrimanr) closes 
apache/metron#1153


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/7a8c2467
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/7a8c2467
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/7a8c2467

Branch: refs/heads/master
Commit: 7a8c246748a2c9e8c5b9230800b075dd99a7f3a4
Parents: 73dc63e
Author: merrimanr 
Authored: Fri Aug 10 16:46:31 2018 -0500
Committer: rmerriman 
Committed: Fri Aug 10 16:46:31 2018 -0500

--
 .../CURRENT/configuration/metron-rest-env.xml   |  9 ++
 .../package/scripts/params/params_linux.py  |  1 +
 .../METRON/CURRENT/package/templates/metron.j2  |  1 +
 .../METRON/CURRENT/themes/metron_theme.json | 10 ++
 metron-interface/metron-rest/README.md  |  2 ++
 .../src/main/config/rest_application.yml|  1 +
 .../apache/metron/rest/MetronRestConstants.java |  1 +
 .../metron/rest/config/PcapJobSupplier.java |  2 +-
 .../rest/service/impl/PcapServiceImpl.java  | 12 ++-
 .../apache/metron/rest/mock/MockPcapJob.java|  8 +
 .../rest/service/impl/PcapServiceImplTest.java  |  7 -
 metron-platform/metron-pcap-backend/README.md   |  2 ++
 .../org/apache/metron/pcap/query/CliParser.java |  4 +++
 .../org/apache/metron/pcap/query/PcapCli.java   |  3 ++
 .../apache/metron/pcap/query/PcapCliTest.java   | 33 ++--
 .../apache/metron/pcap/config/PcapConfig.java   | 10 ++
 16 files changed, 101 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/7a8c2467/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
index 20f9767..895c091 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
@@ -192,5 +192,14 @@
 The number of pcaps written to a page/file as a result of 
a pcap query.
 10
 
+
+pcap_yarn_queue
+Pcap YARN Queue
+The YARN queue pcap jobs will be submitted 
to.
+
+
+true
+
+
 
 

http://git-wip-us.apache.org/repos/asf/metron/blob/7a8c2467/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
index 73d3469..4f8a9a7 100755
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
@@ -390,6 +390,7 @@ pcap_base_path = 
config['configurations']['metron-rest-env']['pcap_base_path']
 pcap_base_interim_result_path = 
config['configurations']['metron-rest-env']['pcap_base_interim_result_path']
 pcap_final_output_path = 
config['configurations']['metron-rest-env']['pcap_final_output_path']
 pcap_page_size = config['configurations']['metron-rest-env']['pcap_page_size']
+pcap_yarn_queue = 
config['configurations']['metron-rest-env']['pcap_yarn_queue']
 pcap_configured_flag_file = status_params.pcap_configured_flag_file
 
 # MapReduce

http://git-wip-us.apache.org/repos/asf/metron/blob/7a8c2467/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2
index 278d6f8..55422d0 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2

[24/51] [abbrv] metron git commit: METRON-1700 Create REST endpoint to get job configuration (merrimanr) closes apache/metron#1135

2018-08-17 Thread rmerriman
METRON-1700 Create REST endpoint to get job configuration (merrimanr) closes 
apache/metron#1135


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/2b6959b4
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/2b6959b4
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/2b6959b4

Branch: refs/heads/master
Commit: 2b6959b46db79256d12b8522385212559cabada2
Parents: d5eb56a
Author: merrimanr 
Authored: Thu Aug 2 12:17:37 2018 -0500
Committer: rmerriman 
Committed: Thu Aug 2 12:17:37 2018 -0500

--
 metron-interface/metron-rest/README.md  |  10 ++
 .../metron/rest/controller/PcapController.java  |  16 +++
 .../apache/metron/rest/service/PcapService.java |  71 -
 .../rest/service/impl/PcapServiceImpl.java  |  54 +-
 .../PcapControllerIntegrationTest.java  |  50 ++
 .../apache/metron/rest/mock/MockPcapJob.java|   4 +-
 .../rest/service/impl/PcapServiceImplTest.java  | 100 +++
 .../java/org/apache/metron/job/Statusable.java  |   2 +
 .../java/org/apache/metron/pcap/mr/PcapJob.java |   5 +
 9 files changed, 306 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/2b6959b4/metron-interface/metron-rest/README.md
--
diff --git a/metron-interface/metron-rest/README.md 
b/metron-interface/metron-rest/README.md
index 68ec559..489cd9f 100644
--- a/metron-interface/metron-rest/README.md
+++ b/metron-interface/metron-rest/README.md
@@ -259,6 +259,8 @@ Request and Response objects are JSON formatted.  The JSON 
schemas are available
 | [ `GET /api/v1/pcap/{jobId}`](#get-apiv1pcapjobid)|
 | [ `GET /api/v1/pcap/{jobId}/pdml`](#get-apiv1pcapjobidpdml)|
 | [ `GET /api/v1/pcap/{jobId}/raw`](#get-apiv1pcapjobidraw)|
+| [ `DELETE /api/v1/pcap/kill/{jobId}`](#delete-apiv1pcapkilljobid)|
+| [ `GET /api/v1/pcap/{jobId}/config`](#get-apiv1pcapjobidconfig)|
 | [ `GET /api/v1/search/search`](#get-apiv1searchsearch)|
 | [ `POST /api/v1/search/search`](#post-apiv1searchsearch)|
 | [ `POST /api/v1/search/group`](#post-apiv1searchgroup)|
@@ -556,6 +558,14 @@ Request and Response objects are JSON formatted.  The JSON 
schemas are available
 * jobId - Job ID of submitted job
   * Returns:
 * 200 - Kills passed job.
+
+### `GET /api/v1/pcap/{jobId}/config`
+  * Description: Gets job configuration for Pcap query job.
+  * Input:
+* jobId - Job ID of submitted job
+  * Returns:
+* 200 - Returns a map of job properties for the Job ID.
+* 404 - Job is missing.
 
 ### `POST /api/v1/search/search`
   * Description: Searches the indexing store. GUIDs must be quoted to ensure 
correct results.

http://git-wip-us.apache.org/repos/asf/metron/blob/2b6959b4/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/controller/PcapController.java
--
diff --git 
a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/controller/PcapController.java
 
b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/controller/PcapController.java
index 13a623a..97713d8 100644
--- 
a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/controller/PcapController.java
+++ 
b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/controller/PcapController.java
@@ -46,6 +46,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.List;
+import java.util.Map;
 
 @RestController
 @RequestMapping("/api/v1/pcap")
@@ -161,4 +162,19 @@ public class PcapController {
 }
   }
 
+  @ApiOperation(value = "Gets job configuration for Pcap query job.")
+  @ApiResponses(value = {
+  @ApiResponse(message = "Returns a map of job properties for the Job 
ID.", code = 200),
+  @ApiResponse(message = "Job is missing.", code = 404)
+  })
+  @RequestMapping(value = "/{jobId}/config", method = RequestMethod.GET)
+  ResponseEntity> getConfiguration(@ApiParam(name="jobId", 
value="Job ID of submitted job", required=true)@PathVariable String jobId) 
throws RestException {
+Map configuration = 
pcapQueryService.getConfiguration(SecurityUtils.getCurrentUser(), jobId);
+if (configuration != null) {
+  return new ResponseEntity<>(configuration, HttpStatus.OK);
+} else {
+  return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+}
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/metron/blob/2b6959b4/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/PcapService.java
--
diff --git 
a/metron-interface/metron-rest/src/

[36/51] [abbrv] metron git commit: METRON-1723 PCAP UI - Unable to select/copy from packets details in PCAP query panel (sardell via merrimanr) closes apache/metron#1139

2018-08-17 Thread rmerriman
METRON-1723 PCAP UI - Unable to select/copy from packets details in PCAP query 
panel (sardell via merrimanr) closes apache/metron#1139


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/5b3e2c33
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/5b3e2c33
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/5b3e2c33

Branch: refs/heads/master
Commit: 5b3e2c337b3772bcd7d18cedac75877bbe6f7735
Parents: 52de126
Author: sardell 
Authored: Thu Aug 9 07:44:15 2018 -0500
Committer: rmerriman 
Committed: Thu Aug 9 07:44:15 2018 -0500

--
 .../src/app/pcap/pcap-packet/pcap-packet.component.html  | 2 +-
 .../src/app/pcap/pcap-packet/pcap-packet.component.scss  | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/5b3e2c33/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.html
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.html
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.html
index f7d9dbe..dd9afa1 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.html
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.html
@@ -13,7 +13,7 @@
   -->
 
   {{ proto.showname 
}}
-  
+  
 
   {{ field.name 
}}
   {{ field.showname }}

http://git-wip-us.apache.org/repos/asf/metron/blob/5b3e2c33/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.scss
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.scss
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.scss
index e9d4662..02ce7b6 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.scss
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.scss
@@ -27,10 +27,10 @@
 }
 
 .proto-fields {
-  margin-left: 1em;
+  cursor: text;
+  padding-left: 1em;
 }
 
-
 .field-name {
   display: none
 }



[07/51] [abbrv] metron git commit: METRON-1674 Create REST endpoint for job status abstraction (merrimanr) closes apache/metron#1109

2018-08-17 Thread rmerriman
METRON-1674 Create REST endpoint for job status abstraction (merrimanr) closes 
apache/metron#1109


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/39ae9f46
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/39ae9f46
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/39ae9f46

Branch: refs/heads/master
Commit: 39ae9f4642073d3d4f0fa423339dd97f85974588
Parents: dbbf624
Author: merrimanr 
Authored: Thu Jul 19 11:01:49 2018 -0500
Committer: rmerriman 
Committed: Thu Jul 19 11:01:49 2018 -0500

--
 .../rest/model/pcap/FixedPcapOptions.java   |  42 
 .../rest/model/pcap/FixedPcapRequest.java   |  72 --
 .../metron/rest/model/pcap/PcapRequest.java |  65 +++---
 .../metron/rest/model/pcap/PcapStatus.java  |  91 
 .../apache/metron/rest/MetronRestConstants.java |   6 +-
 .../apache/metron/rest/config/PcapConfig.java   |  14 +-
 .../metron/rest/config/PcapJobSupplier.java |  54 +
 .../metron/rest/controller/PcapController.java  |  34 +--
 .../apache/metron/rest/service/PcapService.java |   6 +-
 .../rest/service/impl/PcapServiceImpl.java  | 126 ++-
 .../src/main/resources/application.yml  |   6 +-
 .../apache/metron/rest/config/TestConfig.java   |  17 +-
 .../PcapControllerIntegrationTest.java  | 127 ++-
 .../apache/metron/rest/mock/MockPcapJob.java| 106 ++---
 .../metron/rest/mock/MockPcapJobSupplier.java   |  36 +++
 .../rest/service/impl/PcapServiceImplTest.java  | 217 +--
 .../common/configuration/ConfigOption.java  |  12 +-
 .../apache/metron/job/JobNotFoundException.java |  30 +++
 .../apache/metron/job/RuntimeJobException.java  |  30 +++
 .../metron/job/manager/InMemoryJobManager.java  |  11 +-
 .../org/apache/metron/pcap/query/PcapCli.java   |  12 -
 .../PcapTopologyIntegrationTest.java|   6 +-
 .../apache/metron/pcap/query/PcapCliTest.java   |   2 -
 .../apache/metron/pcap/config/PcapOptions.java  |   2 +
 .../metron/pcap/finalizer/PcapCliFinalizer.java |   4 +-
 .../metron/pcap/finalizer/PcapFinalizer.java|   8 +-
 .../pcap/finalizer/PcapRestFinalizer.java   |  22 +-
 .../java/org/apache/metron/pcap/mr/PcapJob.java |  18 +-
 28 files changed, 882 insertions(+), 294 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/39ae9f46/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/FixedPcapOptions.java
--
diff --git 
a/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/FixedPcapOptions.java
 
b/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/FixedPcapOptions.java
new file mode 100644
index 000..5e77005
--- /dev/null
+++ 
b/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/FixedPcapOptions.java
@@ -0,0 +1,42 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.metron.rest.model.pcap;
+
+import org.apache.metron.common.configuration.ConfigOption;
+
+public enum FixedPcapOptions implements ConfigOption {
+  IP_SRC_ADDR("ipSrcAddr"),
+  IP_DST_ADDR("ipDstAddr"),
+  IP_SRC_PORT("ipSrcPort"),
+  IP_DST_PORT("ipDstPort"),
+  PROTOCOL("protocol"),
+  PACKET_FILTER("packetFilter"),
+  INCLUDE_REVERSE("includeReverse")
+  ;
+
+  String key;
+
+  FixedPcapOptions(String key) {
+this.key = key;
+  }
+
+  @Override
+  public String getKey() {
+return key;
+  }
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/39ae9f46/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/FixedPcapRequest.java
--
diff --git 
a/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/FixedPcapRequest.java
 
b/metron-interface/metron-rest-client/src/main/java/org/apache/metron/r

[32/51] [abbrv] metron git commit: METRON-1683 PCAP UI - Fix the download progress bar (sardell via merrimanr) closes apache/metron#1122

2018-08-17 Thread rmerriman
METRON-1683 PCAP UI - Fix the download progress bar (sardell via merrimanr) 
closes apache/metron#1122


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/3e778592
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/3e778592
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/3e778592

Branch: refs/heads/master
Commit: 3e7785920e8f0c5aadf36e05dbcfa69252cc5574
Parents: 037b50b
Author: sardell 
Authored: Tue Aug 7 13:58:08 2018 -0500
Committer: rmerriman 
Committed: Tue Aug 7 13:58:08 2018 -0500

--
 .../metron-alerts/src/app/app.component.html|2 +-
 .../metron-alerts/src/app/app.component.ts  |3 +
 .../src/app/pcap/model/pcap-status-response.ts  |1 +
 .../src/app/pcap/model/pcap.mock.ts |   39 +
 .../src/app/pcap/model/pdml.mock.ts |   62 +
 .../metron-alerts/src/app/pcap/model/pdml.ts|6 +-
 .../app/pcap/pcap-list/pcap-list.component.html |2 +-
 .../pcap/pcap-list/pcap-list.component.spec.ts  |   17 +
 .../pcap-packet-line.component.spec.ts  | 1336 +
 .../pcap/pcap-packet/pcap-packet.component.html |   11 +-
 .../pcap-packet/pcap-packet.component.spec.ts   | 1278 +
 .../pcap/pcap-panel/pcap-panel.component.html   |6 +-
 .../pcap/pcap-panel/pcap-panel.component.scss   |   18 -
 .../pcap-panel/pcap-panel.component.spec.ts |  262 ++-
 .../app/pcap/pcap-panel/pcap-panel.component.ts |   52 +-
 .../src/app/pcap/service/pcap.service.spec.ts   | 1809 +-
 .../src/app/pcap/service/pcap.service.ts|7 +-
 .../src/environments/environment.e2e.ts |3 +-
 .../src/environments/environment.prod.ts|3 +-
 .../src/environments/environment.ts |3 +-
 metron-interface/metron-alerts/src/index.html   |2 +-
 21 files changed, 674 insertions(+), 4248 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/3e778592/metron-interface/metron-alerts/src/app/app.component.html
--
diff --git a/metron-interface/metron-alerts/src/app/app.component.html 
b/metron-interface/metron-alerts/src/app/app.component.html
index 1b992ca..c3a5d3c 100644
--- a/metron-interface/metron-alerts/src/app/app.component.html
+++ b/metron-interface/metron-alerts/src/app/app.component.html
@@ -11,7 +11,7 @@
OR CONDITIONS OF ANY KIND, either express or implied. See the License 
for
   the specific language governing permissions and limitations under the 
License.
   -->
-
+
 
 
 

http://git-wip-us.apache.org/repos/asf/metron/blob/3e778592/metron-interface/metron-alerts/src/app/app.component.ts
--
diff --git a/metron-interface/metron-alerts/src/app/app.component.ts 
b/metron-interface/metron-alerts/src/app/app.component.ts
index 2a3c15e..52dee23 100644
--- a/metron-interface/metron-alerts/src/app/app.component.ts
+++ b/metron-interface/metron-alerts/src/app/app.component.ts
@@ -17,6 +17,7 @@
  */
 import { Component, OnInit } from '@angular/core';
 import {AuthenticationService} from './service/authentication.service';
+import { environment } from 'environments/environment';
 
 declare var $;
 
@@ -27,11 +28,13 @@ declare var $;
 })
 export class AppComponent implements OnInit {
   loggedIn = false;
+  noTransition = false;
 
   constructor(private authService: AuthenticationService) {
 this.authService.onLoginEvent.subscribe(result => {
   this.loggedIn = result;
 });
+this.noTransition = environment.noTransition;
   }
 
   ngOnInit(): void {

http://git-wip-us.apache.org/repos/asf/metron/blob/3e778592/metron-interface/metron-alerts/src/app/pcap/model/pcap-status-response.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/model/pcap-status-response.ts 
b/metron-interface/metron-alerts/src/app/pcap/model/pcap-status-response.ts
index d4d9a5e..09c4985 100644
--- a/metron-interface/metron-alerts/src/app/pcap/model/pcap-status-response.ts
+++ b/metron-interface/metron-alerts/src/app/pcap/model/pcap-status-response.ts
@@ -18,6 +18,7 @@
 export class PcapStatusResponse {
   jobId: string;
   jobStatus: string;
+  description: string;
   percentComplete: number;
   pageTotal: number;
 }

http://git-wip-us.apache.org/repos/asf/metron/blob/3e778592/metron-interface/metron-alerts/src/app/pcap/model/pcap.mock.ts
--
diff --git a/metron-interface/metron-alerts/src/app/pcap/model/pcap.mock.ts 
b/metron-interface/metron-alerts/src/app/pcap/model/pcap.mock.ts
new file mode 100644
index 000..c867fe9
--- /dev/null
+++ b/metron-interface/metron-alerts/s

[09/51] [abbrv] metron git commit: METRON-1638 Retrieve Pcap results in pdml format (merrimanr) closes apache/metron#1120

2018-08-17 Thread rmerriman
METRON-1638 Retrieve Pcap results in pdml format (merrimanr) closes 
apache/metron#1120


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/3e5ef41d
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/3e5ef41d
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/3e5ef41d

Branch: refs/heads/master
Commit: 3e5ef41d9b8639fb1155686e615c02a59b735397
Parents: f316d15
Author: merrimanr 
Authored: Thu Jul 19 17:13:22 2018 -0500
Committer: rmerriman 
Committed: Thu Jul 19 17:13:22 2018 -0500

--
 dependencies_with_url.csv   |   3 +
 .../docker/rpm-docker/SPECS/metron.spec |   1 +
 metron-interface/metron-rest-client/pom.xml |   5 +
 .../apache/metron/rest/model/pcap/Field.java| 164 
 .../apache/metron/rest/model/pcap/Packet.java   |  53 
 .../org/apache/metron/rest/model/pcap/Pdml.java | 103 
 .../apache/metron/rest/model/pcap/Proto.java| 114 +
 metron-interface/metron-rest/README.md  |  34 ++-
 metron-interface/metron-rest/pom.xml|   1 -
 .../src/main/config/rest_application.yml|   5 +-
 .../apache/metron/rest/MetronRestConstants.java |   1 +
 .../apache/metron/rest/config/PcapConfig.java   |   6 +
 .../metron/rest/controller/PcapController.java  |  31 ++-
 .../apache/metron/rest/service/PcapService.java |   6 +
 .../rest/service/impl/PcapServiceImpl.java  |  47 +++-
 .../service/impl/PcapToPdmlScriptWrapper.java   |  59 +
 .../src/main/scripts/pcap_to_pdml.sh|  19 ++
 .../apache/metron/rest/config/TestConfig.java   |   7 +
 .../PcapControllerIntegrationTest.java  |  65 +++--
 .../rest/mock/MockPcapToPdmlScriptWrapper.java  |  55 
 .../rest/service/impl/PcapServiceImplTest.java  | 250 +--
 metron-interface/pom.xml|   3 +
 22 files changed, 981 insertions(+), 51 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/3e5ef41d/dependencies_with_url.csv
--
diff --git a/dependencies_with_url.csv b/dependencies_with_url.csv
index 40d3e06..bf3e382 100644
--- a/dependencies_with_url.csv
+++ b/dependencies_with_url.csv
@@ -141,12 +141,15 @@ 
com.fasterxml.jackson.dataformat:jackson-dataformat-smile:jar:2.6.6:compile,ASLv
 
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.6.6:compile,ASLv2,https://github.com/FasterXML/jackson
 
com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:2.7.4:compile,ASLv2,http://wiki.fasterxml.com/JacksonForCbor
 
com.fasterxml.jackson.dataformat:jackson-dataformat-smile:jar:2.7.4:compile,ASLv2,http://wiki.fasterxml.com/JacksonForSmile
+com.fasterxml.jackson.dataformat:jackson-dataformat-xml:jar:2.9.5:compile,ASLv2,https://github.com/FasterXML/jackson
 
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.7.4:compile,ASLv2,https://github.com/FasterXML/jackson
 
com.fasterxml.jackson.datatype:jackson-datatype-joda:jar:2.8.1:compile,ASLv2,https://github.com/FasterXML/jackson-datatype-joda
 
com.fasterxml.jackson.datatype:jackson-datatype-joda:jar:2.9.5:compile,ASLv2,https://github.com/FasterXML/jackson-datatype-joda
 
com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.5:compile,ASLv2,https://github.com/FasterXML/jackson-modules-java8
 
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.5:compile,ASLv2,https://github.com/FasterXML/jackson-modules-java8
 
com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.5:compile,ASLv2,https://github.com/FasterXML/jackson-modules-java8
+com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.5:compile,ASLv2,https://github.com/FasterXML/jackson-modules-java8
+com.fasterxml.woodstox:woodstox-core:jar:5.0.3:compile,ASLv2,https://github.com/FasterXML/woodstox
 
com.fasterxml:classmate:jar:1.3.1:compile,ASLv2,http://github.com/cowtowncoder/java-classmate
 
com.fasterxml:classmate:jar:1.3.4:compile,ASLv2,http://github.com/cowtowncoder/java-classmate
 com.google.code.gson:gson:jar:2.2.4:compile,The Apache Software License, 
Version 2.0,http://code.google.com/p/google-gson/

http://git-wip-us.apache.org/repos/asf/metron/blob/3e5ef41d/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
--
diff --git a/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec 
b/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
index 4b88fd0..3f090c8 100644
--- a/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
+++ b/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
@@ -419,6 +419,7 @@ This package installs the Metron Rest %{metron_home}
 %dir %{metron_home}/lib
 %{metron_home}/config/rest_application.yml
 %{metron_home

[11/51] [abbrv] metron git commit: Merge branch 'master' into feature/METRON-1554-pcap-query-panel

2018-08-17 Thread rmerriman
Merge branch 'master' into feature/METRON-1554-pcap-query-panel


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/b580a69f
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/b580a69f
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/b580a69f

Branch: refs/heads/master
Commit: b580a69f1d9d3346171d749dcd6f791a9bc6d894
Parents: a5a5139 aceca46
Author: Michael Miklavcic 
Authored: Fri Jul 20 09:40:09 2018 -0600
Committer: Michael Miklavcic 
Committed: Fri Jul 20 09:40:09 2018 -0600

--
 .travis.yml |  14 +-
 .../metron/profiler/client/window/Window.java   |   8 +-
 .../profiler/client/window/WindowProcessor.java |  35 +-
 .../client/window/predicates/DayPredicates.java |   2 +-
 .../profiler/DefaultMessageDistributor.java |  18 +-
 .../ansible/playbooks/docker_probe_install.yml  |   2 +-
 .../ansible/roles/bro/vars/main.yml |   2 +-
 .../centos6/ansible/inventory/group_vars/all|   2 +-
 .../ubuntu14/ansible/inventory/group_vars/all   |   2 +-
 .../package/scripts/alerts_ui_commands.py   |   9 +-
 .../package/scripts/management_ui_commands.py   |   9 +-
 metron-deployment/scripts/platform-info.sh  |   4 +
 .../alert-details-status.e2e-spec.ts| 129 +++---
 .../meta-alerts/meta-alert.e2e-spec.ts  |  30 +-
 metron-interface/metron-alerts/karma.conf.js|  15 +-
 metron-interface/metron-alerts/package.json |   3 +-
 metron-interface/metron-alerts/pom.xml  |  14 +-
 .../apache/metron/rest/config/KafkaConfig.java  |   4 +-
 .../service/impl/StormAdminServiceImpl.java |  23 +-
 .../rest/service/impl/StormCLIWrapper.java  |  25 +-
 .../common/bolt/ConfiguredParserBolt.java   |  10 +-
 .../configuration/IndexingConfigurations.java   |   2 +-
 .../configuration/SensorParserConfig.java   |  12 +-
 .../writer/ConfigurationsStrategies.java|   2 +-
 .../apache/metron/common/error/MetronError.java |  64 +--
 .../common/performance/PerformanceLogger.java   |  10 +-
 .../apache/metron/common/system/FakeClock.java  |  18 +-
 .../metron/common/utils/ReflectionUtils.java|   2 +-
 .../configurations/ConfigurationsUpdater.java   |   1 -
 .../common/bolt/ConfiguredParserBoltTest.java   |   2 +-
 .../metron/common/error/MetronErrorTest.java|  16 +-
 .../indexing/dao/metaalert/MetaAlertDao.java|   6 +-
 .../dao/metaalert/MetaAlertIntegrationTest.java |  56 +++
 .../metron/management/KafkaFunctions.java   | 109 +
 .../KafkaFunctionsIntegrationTest.java  |  92 +
 .../metron-parsers/3rdPartyParser.md| 408 +--
 metron-platform/metron-parsers/README.md|  25 +-
 .../apache/metron/parsers/bolt/ParserBolt.java  | 241 ++-
 .../apache/metron/parsers/bolt/WriterBolt.java  |   3 +-
 .../parsers/topology/ParserComponents.java  |  67 +++
 .../parsers/topology/ParserTopologyBuilder.java | 200 ++---
 .../parsers/topology/ParserTopologyCLI.java | 264 
 .../parsers/topology/config/ValueSupplier.java  |   3 +-
 .../metron/parsers/bolt/ParserBoltTest.java | 182 ++---
 .../metron/parsers/bolt/WriterBoltTest.java |  30 +-
 .../parsers/integration/ParserDriver.java   |  50 ++-
 .../components/ParserTopologyComponent.java |  58 +--
 .../parsers/topology/ParserTopologyCLITest.java | 318 ++-
 ...pleHbaseEnrichmentWriterIntegrationTest.java |   3 +-
 .../integration/WriterBoltIntegrationTest.java  | 150 ++-
 .../src/main/config/schema/metaalert/schema.xml |   6 +-
 .../metron/writer/BulkWriterComponent.java  |  27 +-
 .../metron/writer/BulkWriterComponentTest.java  |  34 +-
 .../stellar/common/CachingStellarProcessor.java |   2 +-
 .../org/apache/metron/stellar/dsl/Context.java  |   2 +-
 .../dsl/functions/DateFunctionsTest.java|   3 +-
 use-cases/forensic_clustering/README.md | 228 +++
 use-cases/parser_chaining/README.md |  14 +
 .../aggregated_parser_chaining_flow.svg |  14 +
 .../aggregated_parser_chaining_flow.xml |  14 +
 use-cases/typosquat_detection/README.md |   9 +-
 61 files changed, 2109 insertions(+), 998 deletions(-)
--




[18/51] [abbrv] metron git commit: Merge branch 'master' into feature/METRON-1554-pcap-query-panel

2018-08-17 Thread rmerriman
Merge branch 'master' into feature/METRON-1554-pcap-query-panel


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/7dff4def
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/7dff4def
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/7dff4def

Branch: refs/heads/master
Commit: 7dff4def23a7c839ea599a120ab6d4cf5b9bbbef
Parents: 6c90724 ccdbeff
Author: cstella 
Authored: Thu Jul 26 12:29:04 2018 -0400
Committer: cstella 
Committed: Thu Jul 26 12:29:04 2018 -0400

--
 .../docker/rpm-docker/SPECS/metron.spec |   1 +
 .../e2e/utils/clean_metron_update_table.ts  |  18 ++
 .../metron-alerts/e2e/utils/e2e_util.ts |  20 +-
 .../alert-filters.component.spec.ts |  18 ++
 .../alert-filters/alert-filters.component.ts|  20 +-
 .../table-view/table-view.component.spec.ts |  18 ++
 .../tree-view/tree-view.component.spec.ts   |  18 ++
 .../alerts/meta-alerts/meta-alerts.module.ts|  18 ++
 .../date-picker/date-picker.component.spec.ts   |  18 ++
 .../shared/date-picker/date-picker.component.ts |  18 ++
 .../shared/date-picker/date-picker.module.ts|  18 ++
 .../alert-severity-hexagon.directive.spec.ts|  18 ++
 .../app/shared/group-by/group-by.component.ts   |  18 ++
 .../metron-alerts/src/app/shared/index.ts   |  18 ++
 .../src/app/shared/pipes/map-keys.pipe.spec.ts  |  18 ++
 .../src/app/shared/pipes/map-keys.pipe.ts   |  18 ++
 .../src/app/shared/pipes/time-lapse.pipe.ts |  18 ++
 .../time-range/time-range.component.spec.ts |  18 ++
 .../app/shared/time-range/time-range.module.ts  |  18 ++
 metron-interface/metron-alerts/src/polyfills.ts |  18 ++
 .../metron-config/e2e/utils/e2e_util.ts |  18 ++
 .../src/app/app.config.interface.ts |  18 ++
 .../metron-config/src/app/app.config.ts |  18 ++
 .../sensor-grok/sensor-grok.component.ts|  18 ++
 .../sensor-parser-config-readonly/index.ts  |  18 ++
 .../app/sensors/sensor-parser-config/index.ts   |  18 ++
 .../shared/ace-editor/ace-editor.component.ts   |  18 ++
 .../app/shared/ace-editor/ace-editor.module.ts  |  18 ++
 .../advanced-config-form.module.ts  |  18 ++
 .../src/app/shared/metron-modal/index.ts|  18 ++
 .../shared/metron-table/metron-sorter/index.ts  |  18 ++
 .../metron-sorter.component.spec.ts |  18 ++
 .../metron-sorter/metron-sorter.component.ts|  18 ++
 .../shared/metron-table/metron-table.module.ts  |  18 ++
 .../src/app/shared/multiple-input/index.ts  |  18 ++
 .../multiple-input/multiple-input.module.ts |  18 ++
 .../src/app/shared/number-spinner/index.ts  |  18 ++
 .../number-spinner/number-spinner.module.ts |  18 ++
 .../shared/sample-data/sample-data.module.ts|  18 ++
 .../src/environments/environment.prod.ts|  18 ++
 .../src/environments/environment.ts |  18 ++
 metron-interface/metron-rest/README.md  |  12 +-
 .../parsed/jsonMapExampleParsed |   6 +
 .../raw/jsonMapExampleOutput|   3 +
 metron-platform/metron-parsers/README.md|   5 +
 .../zookeeper/parsers/jsonMapWrappedQuery.json  |   5 +
 .../metron/parsers/json/JSONMapParser.java  |  40 +++-
 .../JSONMapWrappedQueryIntegrationTest.java |  37 
 .../integration/ParserIntegrationTest.java  |  22 +-
 .../json/JSONMapParserWrappedQueryTest.java | 199 +++
 pom.xml |  19 +-
 51 files changed, 1044 insertions(+), 29 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/7dff4def/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
--

http://git-wip-us.apache.org/repos/asf/metron/blob/7dff4def/metron-interface/metron-rest/README.md
--
diff --cc metron-interface/metron-rest/README.md
index 2d9a535,caa9c78..68ec559
--- a/metron-interface/metron-rest/README.md
+++ b/metron-interface/metron-rest/README.md
@@@ -253,15 -242,8 +253,15 @@@ Request and Response objects are JSON f
  | [ `GET /api/v1/metaalert/add/alert`](#get-apiv1metaalertaddalert)|
  | [ `GET /api/v1/metaalert/remove/alert`](#get-apiv1metaalertremovealert)|
  | [ `GET 
/api/v1/metaalert/update/status/{guid}/{status}`](#get-apiv1metaalertupdatestatusguidstatus)|
 +| [ `POST /api/v1/pcap/fixed`](#post-apiv1pcapfixed)|
 +| [ `POST /api/v1/pcap/query`](#post-apiv1pcapquery)|
 +| [ `GET /api/v1/pcap`](#get-apiv1pcap)|
 +| [ `GET /api/v1/pcap/{jobId}`](#get-apiv1pcapjobid)|
 +| [ `GET /api/v1/pcap/{jobId}/pdml`](#get-apiv1pcapjobidpdml)|
 +| [ `GET /api/v1/pcap/{jobId}/raw`](#get-apiv1pcapjobidraw)|
 +| [ `GET /api/v1/search/search`](#get-apiv1searchsearch)|
- | [ `POST 

[51/51] [abbrv] metron git commit: METRON-1554 Pcap Query Panel (merrimanr) closes apache/metron#1169

2018-08-17 Thread rmerriman
METRON-1554 Pcap Query Panel (merrimanr) closes apache/metron#1169


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/9fdccba3
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/9fdccba3
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/9fdccba3

Branch: refs/heads/master
Commit: 9fdccba371c1f1e0dcb79e00a7207a934b79b64c
Parents: 308c2b2 14e80b3
Author: merrimanr 
Authored: Fri Aug 17 10:26:51 2018 -0500
Committer: merrimanr 
Committed: Fri Aug 17 10:28:09 2018 -0500

--
 dependencies_with_url.csv   |4 +
 metron-deployment/amazon-ec2/conf/defaults.yml  |1 -
 metron-deployment/amazon-ec2/playbook.yml   |2 +-
 .../ansible/playbooks/metron_install.yml|7 -
 .../roles/ambari_config/vars/single_node_vm.yml |1 +
 .../roles/metron_pcapservice/defaults/main.yml  |   28 -
 .../roles/metron_pcapservice/meta/main.yml  |   19 -
 .../metron_pcapservice/tasks/config-hbase.yml   |   26 -
 .../roles/metron_pcapservice/tasks/main.yml |   25 -
 .../metron_pcapservice/tasks/pcapservice.yml|   30 -
 .../templates/metron-pcapservice-logrotate.yml  |   27 -
 .../metron_pcapservice/templates/pcapservice|   84 -
 .../ubuntu14/ansible/inventory/hosts|4 -
 .../CURRENT/configuration/metron-rest-env.xml   |   48 +
 .../package/scripts/params/params_linux.py  |   16 +
 .../package/scripts/params/status_params.py |7 +
 .../CURRENT/package/scripts/rest_commands.py|   62 +
 .../CURRENT/package/scripts/rest_master.py  |9 +
 .../METRON/CURRENT/package/templates/metron.j2  |6 +
 .../METRON/CURRENT/themes/metron_theme.json |   30 +
 .../docker/rpm-docker/SPECS/metron.spec |1 +
 .../metron-alerts/package-lock.json | 3719 +-
 .../metron-alerts/src/app/app-routing.module.ts |3 +-
 .../metron-alerts/src/app/app.component.html|   10 +-
 .../metron-alerts/src/app/app.component.scss|   18 +
 .../metron-alerts/src/app/app.component.ts  |3 +
 .../metron-alerts/src/app/app.module.ts |6 +-
 .../src/app/pcap/model/pcap-pagination.ts   |   21 +
 .../src/app/pcap/model/pcap-status-response.ts  |   24 +
 .../src/app/pcap/model/pcap.mock.ts |   39 +
 .../src/app/pcap/model/pcap.request.ts  |   29 +
 .../src/app/pcap/model/pdml.mock.ts |   93 +
 .../metron-alerts/src/app/pcap/model/pdml.ts|   50 +
 .../pcap-filters/pcap-filters.component.html|   62 +
 .../pcap-filters/pcap-filters.component.scss|   69 +
 .../pcap-filters/pcap-filters.component.spec.ts |  463 +++
 .../pcap/pcap-filters/pcap-filters.component.ts |   77 +
 .../app/pcap/pcap-list/pcap-list.component.html |   38 +
 .../app/pcap/pcap-list/pcap-list.component.scss |   21 +
 .../pcap/pcap-list/pcap-list.component.spec.ts  |   98 +
 .../app/pcap/pcap-list/pcap-list.component.ts   |   43 +
 .../pcap-packet-line.component.html |   19 +
 .../pcap-packet-line.component.scss |   17 +
 .../pcap-packet-line.component.spec.ts  |  180 +
 .../pcap-packet-line.component.ts   |   56 +
 .../pcap/pcap-packet/pcap-packet.component.html |   22 +
 .../pcap/pcap-packet/pcap-packet.component.scss |   36 +
 .../pcap-packet/pcap-packet.component.spec.ts   |   79 +
 .../pcap/pcap-packet/pcap-packet.component.ts   |   34 +
 .../pcap-pagination.component.html  |   19 +
 .../pcap-pagination.component.scss  |   40 +
 .../pcap-pagination.component.spec.ts   |   78 +
 .../pcap-pagination.component.ts|   41 +
 .../pcap/pcap-panel/pcap-panel.component.html   |   31 +
 .../pcap/pcap-panel/pcap-panel.component.scss   |   67 +
 .../pcap-panel/pcap-panel.component.spec.ts |  557 +++
 .../app/pcap/pcap-panel/pcap-panel.component.ts |  164 +
 .../metron-alerts/src/app/pcap/pcap.module.ts   |   54 +
 .../metron-alerts/src/app/pcap/pcap.routing.ts  |   27 +
 .../src/app/pcap/service/pcap.service.spec.ts   |  197 +
 .../src/app/pcap/service/pcap.service.ts|   88 +
 .../shared/directives/alert-search.directive.ts |2 +-
 .../src/environments/environment.e2e.ts |3 +-
 .../src/environments/environment.prod.ts|3 +-
 .../src/environments/environment.ts |3 +-
 metron-interface/metron-alerts/src/index.html   |2 +-
 metron-interface/metron-rest-client/pom.xml |   10 +
 .../apache/metron/rest/model/PcapResponse.java  |   38 +
 .../apache/metron/rest/model/pcap/Field.java|  154 +
 .../rest/model/pcap/FixedPcapOptions.java   |   42 +
 .../rest/model/pcap/FixedPcapRequest.java   |  116 +
 .../apache/metron/rest/model/pcap/Packet.java   |   53 +
 .../metron/rest/model/pcap/PcapRequest.java |   83 +
 .../metron/rest/model/pcap/PcapStatus.java  |   87 +
 .../org/apache/metron/rest/model/pcap/Pdml.java 

[41/51] [abbrv] metron git commit: METRON-1702 Reload a running job in the UI (merrimanr) closes apache/metron#1156

2018-08-17 Thread rmerriman
METRON-1702 Reload a running job in the UI (merrimanr) closes apache/metron#1156


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/05316a4d
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/05316a4d
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/05316a4d

Branch: refs/heads/master
Commit: 05316a4d989d7546058e73b3a75eef435f2608a0
Parents: b29833c
Author: merrimanr 
Authored: Fri Aug 10 08:27:06 2018 -0500
Committer: rmerriman 
Committed: Fri Aug 10 08:27:06 2018 -0500

--
 .../src/app/pcap/model/pcap.request.ts  |  4 +-
 .../pcap-filters/pcap-filters.component.spec.ts | 60 +-
 .../pcap/pcap-filters/pcap-filters.component.ts | 26 --
 .../pcap/pcap-panel/pcap-panel.component.html   |  2 +-
 .../pcap-panel/pcap-panel.component.spec.ts | 37 +
 .../app/pcap/pcap-panel/pcap-panel.component.ts | 87 +---
 .../src/app/pcap/service/pcap.service.spec.ts   | 44 ++
 .../src/app/pcap/service/pcap.service.ts| 15 
 .../rest/service/impl/PcapServiceImpl.java  | 10 +--
 .../rest/service/impl/PcapServiceImplTest.java  | 36 
 10 files changed, 254 insertions(+), 67 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/05316a4d/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
--
diff --git a/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts 
b/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
index d00a6ac..8afc963 100644
--- a/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
+++ b/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
@@ -20,9 +20,9 @@ export class PcapRequest {
   startTimeMs: number = 0;
   endTimeMs: number = 15;
   ipSrcAddr: string = '';
-  ipSrcPort: number = 0;
+  ipSrcPort: number;
   ipDstAddr: string = '';
-  ipDstPort: number = 0;
+  ipDstPort: number;
   protocol: string = '';
   packetFilter: string = '';
   includeReverse: boolean = false;

http://git-wip-us.apache.org/repos/asf/metron/blob/05316a4d/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
index 4336b22..c1d8664 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
@@ -21,7 +21,7 @@ import { By } from '@angular/platform-browser';
 
 import { PcapFiltersComponent } from './pcap-filters.component';
 import { FormsModule } from '../../../../node_modules/@angular/forms';
-import { Component, Input, Output, EventEmitter, DebugElement } from 
'@angular/core';
+import { Component, Input, Output, EventEmitter, DebugElement, SimpleChange } 
from '@angular/core';
 import { PcapRequest } from '../model/pcap.request';
 
 @Component({
@@ -171,6 +171,14 @@ describe('PcapFiltersComponent', () => {
 component.onSubmit();
   });
 
+  it('Port fields should be missing by default', () => {
+component.search.emit = (model: PcapRequest) => {
+  expect(model.ipSrcPort).toBeFalsy();
+  expect(model.ipDstPort).toBeFalsy();
+};
+component.onSubmit();
+  });
+
   it('Filter should have an output called search', () => {
 component.search.subscribe((filterModel) => {
   expect(filterModel).toBeDefined();
@@ -194,14 +202,60 @@ describe('PcapFiltersComponent', () => {
 
expect(fixture.componentInstance.model.hasOwnProperty('startTimeMs')).toBeTruthy();
 
expect(fixture.componentInstance.model.hasOwnProperty('endTimeMs')).toBeTruthy();
 
expect(fixture.componentInstance.model.hasOwnProperty('ipSrcAddr')).toBeTruthy();
-
expect(fixture.componentInstance.model.hasOwnProperty('ipSrcPort')).toBeTruthy();
+
expect(fixture.componentInstance.model.hasOwnProperty('ipSrcPort')).toBeFalsy();
 
expect(fixture.componentInstance.model.hasOwnProperty('ipDstAddr')).toBeTruthy();
-
expect(fixture.componentInstance.model.hasOwnProperty('ipDstPort')).toBeTruthy();
+
expect(fixture.componentInstance.model.hasOwnProperty('ipDstPort')).toBeFalsy();
 
expect(fixture.componentInstance.model.hasOwnProperty('protocol')).toBeTruthy();
 
expect(fixture.componentInstance.model.hasOwnProperty('packetFilter')).toBeTruthy();
 
expect(fixture.componentInstance.model.hasOwnProperty('includeReverse')).toBeTruthy();
   });
 
+  it('should update request on changes', () => {
+
+let start

[16/51] [abbrv] metron git commit: METRON-1693: Fix Pcap CLI local FS finalizer (mmiklavc via mmiklavc) closes apache/metron#1130

2018-08-17 Thread rmerriman
METRON-1693: Fix Pcap CLI local FS finalizer (mmiklavc via mmiklavc) closes 
apache/metron#1130


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/f1f5dda4
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/f1f5dda4
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/f1f5dda4

Branch: refs/heads/master
Commit: f1f5dda4c643394c12ab9f4501c5b806adb21129
Parents: 9d4842f
Author: mmiklavc 
Authored: Wed Jul 25 08:26:45 2018 -0600
Committer: Michael Miklavcic 
Committed: Wed Jul 25 08:26:45 2018 -0600

--
 .../java/org/apache/metron/pcap/query/PcapCli.java  |  1 -
 .../metron/pcap/finalizer/PcapCliFinalizer.java | 15 ---
 .../apache/metron/pcap/finalizer/PcapFinalizer.java |  4 +++-
 .../metron/pcap/finalizer/PcapRestFinalizer.java| 10 ++
 .../metron/pcap/writer/PcapResultsWriter.java   | 16 
 5 files changed, 41 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/f1f5dda4/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/PcapCli.java
--
diff --git 
a/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/PcapCli.java
 
b/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/PcapCli.java
index 1a23740..0b06b0c 100644
--- 
a/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/PcapCli.java
+++ 
b/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/PcapCli.java
@@ -87,7 +87,6 @@ public class PcapCli {
   try {
 config = fixedParser.parse(otherArgs);
 commonConfig = config;
-PcapOptions.FINAL_OUTPUT_PATH.put(commonConfig, new Path("file:///" + 
execDir));
   } catch (ParseException | java.text.ParseException e) {
 System.err.println(e.getMessage());
 System.err.flush();

http://git-wip-us.apache.org/repos/asf/metron/blob/f1f5dda4/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/finalizer/PcapCliFinalizer.java
--
diff --git 
a/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/finalizer/PcapCliFinalizer.java
 
b/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/finalizer/PcapCliFinalizer.java
index c379515..c912e58 100644
--- 
a/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/finalizer/PcapCliFinalizer.java
+++ 
b/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/finalizer/PcapCliFinalizer.java
@@ -18,9 +18,13 @@
 
 package org.apache.metron.pcap.finalizer;
 
+import java.io.IOException;
+import java.util.List;
 import java.util.Map;
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 import org.apache.metron.pcap.config.PcapOptions;
+import org.apache.metron.pcap.writer.PcapResultsWriter;
 
 /**
  * Write to local FS.
@@ -33,13 +37,18 @@ public class PcapCliFinalizer extends PcapFinalizer {
* as a formatted timestamp + uuid. A final sample format will look as 
follows:
* 
/base/output/path/pcap-data-201807181911-09855b4ae3204dee8b63760d65198da3+0001.pcap
*/
-  private static final String PCAP_CLI_FILENAME_FORMAT = 
"%s/pcap-data-%s+%04d.pcap";
+  private static final String PCAP_CLI_FILENAME_FORMAT = 
"pcap-data-%s+%04d.pcap";
+
+  @Override
+  protected void write(PcapResultsWriter resultsWriter, Configuration 
hadoopConfig,
+  List data, Path outputPath) throws IOException {
+resultsWriter.writeLocal(data, outputPath.toString());
+  }
 
   @Override
   protected Path getOutputPath(Map config, int partition) {
-Path finalOutputPath = PcapOptions.FINAL_OUTPUT_PATH.get(config, 
PcapOptions.STRING_TO_PATH, Path.class);
 String prefix = PcapOptions.FINAL_FILENAME_PREFIX.get(config, 
String.class);
-return new Path(String.format(PCAP_CLI_FILENAME_FORMAT, finalOutputPath, 
prefix, partition));
+return new Path(String.format(PCAP_CLI_FILENAME_FORMAT, prefix, 
partition));
   }
 
 }

http://git-wip-us.apache.org/repos/asf/metron/blob/f1f5dda4/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/finalizer/PcapFinalizer.java
--
diff --git 
a/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/finalizer/PcapFinalizer.java
 
b/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/finalizer/PcapFinalizer.java
index 2c55e15..8dcc401 100644
--- 
a/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/finalizer/PcapFinalizer.java
+++ 
b/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/finalizer/PcapFinalizer.java
@@ -81,7 +81,7 @@ public abstract class 

[46/51] [abbrv] metron git commit: METRON-1735 Empty print status option causes NPE (merrimanr) closes apache/metron#1160

2018-08-17 Thread rmerriman
METRON-1735 Empty print status option causes NPE (merrimanr) closes 
apache/metron#1160


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/8a926dd5
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/8a926dd5
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/8a926dd5

Branch: refs/heads/master
Commit: 8a926dd5a4501df8c7ef51b526ad5e4d752a5e19
Parents: bce9b90
Author: merrimanr 
Authored: Tue Aug 14 12:59:38 2018 -0500
Committer: rmerriman 
Committed: Tue Aug 14 12:59:38 2018 -0500

--
 .../org/apache/metron/pcap/query/CliParser.java  |  4 
 .../apache/metron/pcap/query/PcapCliTest.java|  7 ++-
 .../apache/metron/pcap/config/PcapConfig.java|  2 +-
 .../java/org/apache/metron/pcap/mr/PcapJob.java  | 18 +-
 .../org/apache/metron/pcap/mr/PcapJobTest.java   | 19 +++
 5 files changed, 35 insertions(+), 15 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/8a926dd5/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/CliParser.java
--
diff --git 
a/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/CliParser.java
 
b/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/CliParser.java
index 5040f90..b9a2a50 100644
--- 
a/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/CliParser.java
+++ 
b/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/CliParser.java
@@ -55,7 +55,6 @@ public class CliParser {
 options.addOption(newOption("rpf", "records_per_file", true, 
String.format("Number of records to include in each output pcap file (defaults 
to %s)", NUM_RECORDS_PER_FILE_DEFAULT)));
 options.addOption(newOption("et", "end_time", true, "Packet end time 
range. Default is current system time."));
 options.addOption(newOption("df", "date_format", true, "Date format to use 
for parsing start_time and end_time. Default is to use time in millis since the 
epoch."));
-options.addOption(newOption("ps", "print_status", false, "Print the status 
of the job as it runs"));
 options.addOption(newOption("yq", "yarn_queue", true, "Yarn queue this job 
will be submitted to"));
 return options;
   }
@@ -127,9 +126,6 @@ public class CliParser {
 //no-op
   }
 }
-if (commandLine.hasOption("print_status")) {
-  config.setPrintJobStatus(true);
-}
 if (commandLine.hasOption("yarn_queue")) {
   config.setYarnQueue(commandLine.getOptionValue("yarn_queue"));
 }

http://git-wip-us.apache.org/repos/asf/metron/blob/8a926dd5/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
--
diff --git 
a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
 
b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
index a71e997..3e7aad2 100644
--- 
a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
+++ 
b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
@@ -172,8 +172,7 @@ public class PcapCliTest {
 "-protocol", "6",
 "-include_reverse",
 "-num_reducers", "10",
-"-records_per_file", "1000",
-"-ps"
+"-records_per_file", "1000"
 };
 Map query = new HashMap() {{
   put(Constants.Fields.SRC_ADDR.getName(), "192.168.1.1");
@@ -217,7 +216,6 @@ public class PcapCliTest {
 "-include_reverse",
 "-num_reducers", "10",
 "-records_per_file", "1000",
-"-ps",
 "-yq", "pcap"
 };
 Map query = new HashMap() {{
@@ -295,8 +293,7 @@ public class PcapCliTest {
 "-base_path", "/base/path",
 "-base_output_path", "/base/output/path",
 "-query", "some query string",
-"-records_per_file", "1000",
-"-ps"
+"-records_per_file", "1000"
 };
 
 String query = "some query string";

http://git-wip-us.apache.org/repos/asf/metron/blob/8a926dd5/metron-pla

[47/51] [abbrv] metron git commit: METRON-1732: Fix job status liveness bug and parallelize finalizer file writing (mmiklavc via mmiklavc) closes apache/metron#1157

2018-08-17 Thread rmerriman
METRON-1732: Fix job status liveness bug and parallelize finalizer file writing 
(mmiklavc via mmiklavc) closes apache/metron#1157


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/d9e1f381
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/d9e1f381
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/d9e1f381

Branch: refs/heads/master
Commit: d9e1f381cc1ae9edfbffc7216abffdbd8f942c09
Parents: 8a926dd
Author: mmiklavc 
Authored: Wed Aug 15 11:30:10 2018 -0600
Committer: Michael Miklavcic 
Committed: Wed Aug 15 11:30:10 2018 -0600

--
 .../CURRENT/configuration/metron-rest-env.xml   | 14 +++
 .../package/scripts/params/params_linux.py  |  1 +
 .../METRON/CURRENT/package/templates/metron.j2  |  1 +
 .../METRON/CURRENT/themes/metron_theme.json | 10 +++
 metron-interface/metron-rest/README.md  | 10 +++
 .../src/main/config/rest_application.yml|  1 +
 .../apache/metron/rest/MetronRestConstants.java |  1 +
 .../rest/service/impl/PcapServiceImpl.java  | 25 +++---
 .../apache/metron/rest/mock/MockPcapJob.java| 18 ++--
 .../rest/service/impl/PcapServiceImplTest.java  | 49 ++-
 .../org/apache/metron/pcap/query/CliParser.java | 10 ++-
 .../PcapTopologyIntegrationTest.java|  1 +
 .../apache/metron/pcap/query/PcapCliTest.java   | 21 ++---
 .../java/org/apache/metron/pcap/PcapPages.java  |  2 +-
 .../apache/metron/pcap/config/PcapConfig.java   |  6 ++
 .../metron/pcap/config/PcapGlobalDefaults.java  |  1 +
 .../apache/metron/pcap/config/PcapOptions.java  |  3 +-
 .../metron/pcap/finalizer/PcapFinalizer.java| 70 +--
 .../java/org/apache/metron/pcap/mr/PcapJob.java | 90 ++--
 .../org/apache/metron/pcap/mr/PcapJobTest.java  | 16 +++-
 20 files changed, 258 insertions(+), 92 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/d9e1f381/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
index 895c091..767afa3 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
@@ -201,5 +201,19 @@
 true
 
 
+
+pcap_finalizer_threadpool_size
+Pcap Finalizer Threadpool Size
+The number of threads to use when finalizing Pcap jobs. 
This affects parallelism
+  around writing out paged files to their final location.
+  If it's a string and ends with "C", then strip the C and treat it as 
an integral multiple of
+  the number of cores. If it's a string and does not end with a C, 
then treat it as a number in
+  string form.
+
+1
+
+false
+
+
 
 

http://git-wip-us.apache.org/repos/asf/metron/blob/d9e1f381/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
index 4f8a9a7..115a54c 100755
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
@@ -391,6 +391,7 @@ pcap_base_interim_result_path = 
config['configurations']['metron-rest-env']['pca
 pcap_final_output_path = 
config['configurations']['metron-rest-env']['pcap_final_output_path']
 pcap_page_size = config['configurations']['metron-rest-env']['pcap_page_size']
 pcap_yarn_queue = 
config['configurations']['metron-rest-env']['pcap_yarn_queue']
+pcap_finalizer_threadpool_size= 
config['configurations']['metron-rest-env']['pcap_finalizer_threadpool_size']
 pcap_configured_flag_file = status_params.pcap_configured_flag_file
 
 # MapReduce


[29/51] [abbrv] metron git commit: METRON-1675 PCAP UI - Introduce the paging capability (sardell via merrimanr) closes apache/metron#1121

2018-08-17 Thread rmerriman
METRON-1675 PCAP UI - Introduce the paging capability (sardell via merrimanr) 
closes apache/metron#1121


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/037b50b9
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/037b50b9
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/037b50b9

Branch: refs/heads/master
Commit: 037b50b9a829d7292db1148fc628d9231da499e1
Parents: 756ceed
Author: sardell 
Authored: Tue Aug 7 09:04:33 2018 -0500
Committer: rmerriman 
Committed: Tue Aug 7 09:04:33 2018 -0500

--
 .../src/app/pcap/model/pcap-pagination.ts   | 21 ++
 .../src/app/pcap/model/pcap-status-response.ts  | 23 ++
 .../src/app/pcap/model/pcap.request.ts  |  2 +-
 .../app/pcap/pcap-list/pcap-list.component.html |  1 +
 .../pcap/pcap-list/pcap-list.component.spec.ts  | 11 +++
 .../app/pcap/pcap-list/pcap-list.component.ts   | 18 +++--
 .../pcap-pagination.component.html  | 19 +
 .../pcap-pagination.component.scss  | 40 ++
 .../pcap-pagination.component.spec.ts   | 78 
 .../pcap-pagination.component.ts| 41 ++
 .../pcap/pcap-panel/pcap-panel.component.html   |  7 +-
 .../pcap-panel/pcap-panel.component.spec.ts |  2 +
 .../app/pcap/pcap-panel/pcap-panel.component.ts | 27 +--
 .../metron-alerts/src/app/pcap/pcap.module.ts   | 10 +--
 .../metron-alerts/src/app/pcap/pcap.routing.ts  |  2 +-
 .../src/app/pcap/service/pcap.service.spec.ts   |  2 +-
 .../src/app/pcap/service/pcap.service.ts| 10 +--
 17 files changed, 279 insertions(+), 35 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/037b50b9/metron-interface/metron-alerts/src/app/pcap/model/pcap-pagination.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/model/pcap-pagination.ts 
b/metron-interface/metron-alerts/src/app/pcap/model/pcap-pagination.ts
new file mode 100644
index 000..ae7619b
--- /dev/null
+++ b/metron-interface/metron-alerts/src/app/pcap/model/pcap-pagination.ts
@@ -0,0 +1,21 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export class PcapPagination {
+  selectedPage = 1;
+  total: number;
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/037b50b9/metron-interface/metron-alerts/src/app/pcap/model/pcap-status-response.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/model/pcap-status-response.ts 
b/metron-interface/metron-alerts/src/app/pcap/model/pcap-status-response.ts
new file mode 100644
index 000..d4d9a5e
--- /dev/null
+++ b/metron-interface/metron-alerts/src/app/pcap/model/pcap-status-response.ts
@@ -0,0 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export class PcapStatusResponse {
+  jobId: string;
+  jobStatus: string;
+  percentComplete: number;
+  pageTotal: number;
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/037b50b9/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
--
diff --git a/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.

[30/51] [abbrv] metron git commit: METRON-1683 PCAP UI - Fix the download progress bar (sardell via merrimanr) closes apache/metron#1122

2018-08-17 Thread rmerriman
http://git-wip-us.apache.org/repos/asf/metron/blob/3e778592/metron-interface/metron-alerts/src/app/pcap/service/pcap.service.spec.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/service/pcap.service.spec.ts 
b/metron-interface/metron-alerts/src/app/pcap/service/pcap.service.spec.ts
index fdaa569..c8cb937 100644
--- a/metron-interface/metron-alerts/src/app/pcap/service/pcap.service.spec.ts
+++ b/metron-interface/metron-alerts/src/app/pcap/service/pcap.service.spec.ts
@@ -15,1738 +15,139 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import { TestBed, async, inject } from '@angular/core/testing';
+import {
+  TestBed,
+  inject,
+  fakeAsync,
+  tick,
+  discardPeriodicTasks
+} from '@angular/core/testing';
 import {
   BaseRequestOptions,
   HttpModule,
-  Http,
   Response,
-  ResponseOptions
+  ResponseOptions,
+  XHRBackend
 } from '@angular/http';
 import { MockBackend } from '@angular/http/testing';
+import { Observable } from 'rxjs/Rx';
 
 import { PcapService } from './pcap.service';
+import { PcapStatusResponse } from '../model/pcap-status-response';
 import { PcapRequest } from '../model/pcap.request';
+import { fakePdml, fakePacket } from '../model/pdml.mock';
+import { fakePcapStatusResponse, fakePcapRequest } from '../model/pcap.mock';
+
+const jobId = 'job_1234567890123_4567';
+let pdmlJsonMock = fakePdml;
+pdmlJsonMock['pdml']['packet'].push(fakePacket);
 
 describe('PcapService', () => {
   beforeEach(() => {
-
 TestBed.configureTestingModule({
   imports: [HttpModule],
   providers: [
 PcapService,
-{
-  provide: Http,
-  useFactory: (mockBackend, options) => {
-return new Http(mockBackend, options);
-  },
-  deps: [MockBackend, BaseRequestOptions]
-},
+{ provide: XHRBackend, useClass: MockBackend },
 MockBackend,
 BaseRequestOptions
   ]
 });
   });
   describe('getPackets()', () => {
-it('should return an Observable',
-  inject([PcapService, MockBackend], (pcapService, mockBackend) => {
-
-let request: PcapRequest = {
-  startTimeMs: 0,
-  endTimeMs: 0,
-  ipSrcAddr: '0.0.0.0',
-  ipSrcPort: '80',
-  ipDstAddr: '0.0.0.0',
-  ipDstPort: '80',
-  protocol: '*',
-  packetFilter: '*',
-  includeReverse: false,
-};
-
-mockBackend.connections.subscribe((connection) => {
-  connection.mockRespond(new Response(new ResponseOptions({body: 
pdml_json()})));
-});
+it('should return an Observable', inject(
+  [PcapService, XHRBackend],
+  (pcapService, mockBackend) => {
 let packets;
-pcapService.getPackets(request).subscribe(r => packets = r)
-expect(packets).toBeTruthy()
-expect(packets.pdml).toBeTruthy()
-expect(packets.pdml.packet.length).toBe(1)
-expect(packets.pdml.packet[0].proto.length).toBeGreaterThan(3)
-
-console.log(packets)
-  }))
-
-
-it('should ...', inject([PcapService], (service: PcapService) => {
-  expect(service).toBeTruthy();
-}));
-
-  })
-
-});
 
+mockBackend.connections.subscribe(connection => {
+  expect(connection.request.url).toMatch(
+/\/api\/v1\/pcap\/job_1234567890123_4567\/pdml\?page=1/
+  );
+  connection.mockRespond(
+new Response(new ResponseOptions({ body: pdmlJsonMock }))
+  );
+});
+pcapService.getPackets(jobId, 1).subscribe(r => (packets = r));
+expect(packets).toBeTruthy();
+expect(packets.pdml).toBeTruthy();
+expect(packets.pdml.packet.length).toBe(1);
+expect(packets.pdml.packet[0].protos.length).toBe(3);
+  }
+));
+  });
 
+  describe('pollStatus()', () => {
+it('should call getStatus() in intervals', fakeAsync(inject(
+  [PcapService, XHRBackend], (pcapService, mockBackend) => {
+  const responseMock: PcapStatusResponse = fakePcapStatusResponse;
+  const spy = spyOn(pcapService, 'getStatus').and.returnValue(
+Observable.of(responseMock)
+  );
+  let response;
+
+  pcapService.pollStatus(jobId).subscribe(r => (response = r));
+  tick(4000);
+  expect(spy.calls.count()).toBe(1);
+  tick(4000);
+  expect(spy.calls.count()).toBe(2);
+  discardPeriodicTasks();
+})
+  )
+);
+  });
 
+  describe('submitRequest()', () => {
+it('should return an Observable', inject(
+  [PcapService, XHRBackend],
+  (pcapService, mockBackend) => {
+const request: PcapRequest = fakePcapRequest;
+const responseMock: PcapStatusResponse = fakePcapStatusResponse;
+let response;
+
+mockBackend.connections.subscribe(connection => {
+  

[44/51] [abbrv] metron git commit: METRON-1734 Src and Dst port filters are incorrect after changing to empty (merrimanr) closes apache/metron#1159

2018-08-17 Thread rmerriman
METRON-1734 Src and Dst port filters are incorrect after changing to empty 
(merrimanr) closes apache/metron#1159


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/ba0a6092
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/ba0a6092
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/ba0a6092

Branch: refs/heads/master
Commit: ba0a6092c97d23c118c2b5780c2559c2f849a220
Parents: 7a8c246
Author: merrimanr 
Authored: Mon Aug 13 15:42:29 2018 -0500
Committer: rmerriman 
Committed: Mon Aug 13 15:42:29 2018 -0500

--
 .../pcap/pcap-filters/pcap-filters.component.spec.ts   | 13 +
 .../app/pcap/pcap-filters/pcap-filters.component.ts|  4 
 2 files changed, 17 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/ba0a6092/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
index c1d8664..3f1ab07 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
@@ -179,6 +179,19 @@ describe('PcapFiltersComponent', () => {
 component.onSubmit();
   });
 
+  it('Port fields should be removed from request when set to empty', () => {
+component.model.ipSrcPort = 44;
+component.model.ipDstPort = 44;
+component.ipSrcPort = '';
+component.ipDstPort = '';
+
+component.search.emit = (model: PcapRequest) => {
+  expect(model.ipSrcPort).toBeFalsy();
+  expect(model.ipDstPort).toBeFalsy();
+};
+component.onSubmit();
+  });
+
   it('Filter should have an output called search', () => {
 component.search.subscribe((filterModel) => {
   expect(filterModel).toBeDefined();

http://git-wip-us.apache.org/repos/asf/metron/blob/ba0a6092/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.ts
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.ts
index 20a8c2b..df91ae3 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.ts
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.ts
@@ -63,9 +63,13 @@ export class PcapFiltersComponent implements OnInit, 
OnChanges {
 this.model.endTimeMs = new Date(this.endTimeStr).getTime();
 if (this.ipSrcPort !== '') {
   this.model.ipSrcPort = +this.ipSrcPort;
+} else {
+  delete this.model.ipSrcPort;
 }
 if (this.ipDstPort !== '') {
   this.model.ipDstPort = +this.ipDstPort;
+} else {
+  delete this.model.ipDstPort;
 }
 
 this.search.emit(this.model);



[17/51] [abbrv] metron git commit: METRON-1691: REST should limit the number of Pcap jobs a user can submit (merrimanr via mmiklavc) closes apache/metron#1129

2018-08-17 Thread rmerriman
METRON-1691: REST should limit the number of Pcap jobs a user can submit 
(merrimanr via mmiklavc) closes apache/metron#1129


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/6c90724d
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/6c90724d
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/6c90724d

Branch: refs/heads/master
Commit: 6c90724d8d4f06c453128f860eff51037f1870d8
Parents: f1f5dda
Author: merrimanr 
Authored: Wed Jul 25 10:58:05 2018 -0600
Committer: Michael Miklavcic 
Committed: Wed Jul 25 10:58:05 2018 -0600

--
 .../apache/metron/rest/model/pcap/Field.java| 36 ---
 .../rest/model/pcap/FixedPcapRequest.java   | 30 -
 .../apache/metron/rest/model/pcap/Packet.java   |  8 +--
 .../metron/rest/model/pcap/PcapStatus.java  | 24 +++
 .../org/apache/metron/rest/model/pcap/Pdml.java | 21 +++---
 .../apache/metron/rest/model/pcap/Proto.java| 24 +++
 .../rest/model/pcap/QueryPcapRequest.java   | 18 --
 metron-interface/metron-rest/README.md  | 27 ++--
 .../apache/metron/rest/MetronRestConstants.java |  1 +
 .../metron/rest/controller/PcapController.java  | 13 
 .../apache/metron/rest/service/PcapService.java |  6 ++
 .../rest/service/impl/PcapServiceImpl.java  | 64 --
 .../src/main/resources/application.yml  |  1 +
 .../PcapControllerIntegrationTest.java  | 46 +
 .../rest/service/impl/PcapServiceImplTest.java  | 68 
 .../metron/job/manager/InMemoryJobManager.java  |  4 ++
 16 files changed, 261 insertions(+), 130 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/6c90724d/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/Field.java
--
diff --git 
a/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/Field.java
 
b/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/Field.java
index 9c2878b..4ed71c3 100644
--- 
a/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/Field.java
+++ 
b/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/Field.java
@@ -22,6 +22,7 @@ import 
com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 public class Field {
 
@@ -132,33 +133,22 @@ public class Field {
   public boolean equals(Object o) {
 if (this == o) return true;
 if (o == null || getClass() != o.getClass()) return false;
-
 Field field = (Field) o;
-
-return (getName() != null ? getName().equals(field.getName()) : 
field.getName() != null) &&
-(getPos() != null ? getPos().equals(field.getPos()) : 
field.getPos() == null) &&
-(getShowname() != null ? getShowname().equals(field.getShowname()) 
: field.getShowname() == null) &&
-(getSize() != null ? getSize().equals(field.getSize()) : 
field.getSize() == null) &&
-(getValue() != null ? getValue().equals(field.getValue()) : 
field.getValue() == null) &&
-(getShow() != null ? getShow().equals(field.getShow()) : 
field.getShow() == null) &&
-(getUnmaskedvalue() != null ? 
getUnmaskedvalue().equals(field.getUnmaskedvalue()) : field.getUnmaskedvalue() 
== null) &&
-(getHide() != null ? getHide().equals(field.getHide()) : 
field.getHide() == null) &&
-(getFields() != null ? getFields().equals(field.getFields()) : 
field.getFields() == null) &&
-(getProtos() != null ? getProtos().equals(field.getProtos()) : 
field.getProtos() == null);
+return Objects.equals(name, field.name) &&
+Objects.equals(pos, field.pos) &&
+Objects.equals(showname, field.showname) &&
+Objects.equals(size, field.size) &&
+Objects.equals(value, field.value) &&
+Objects.equals(show, field.show) &&
+Objects.equals(unmaskedvalue, field.unmaskedvalue) &&
+Objects.equals(hide, field.hide) &&
+Objects.equals(fields, field.fields) &&
+Objects.equals(protos, field.protos);
   }
 
   @Override
   public int hashCode() {
-int result = getName() != null ? getName().hashCode() : 0;
-result = 31 * result + (getPos() != null ? getPos().hashCode() : 0);
-result = 31 * result + (getShowname() != null ? getShowname().hashCode() : 
0);
-result = 31 * result + (getSize() != null ? getSize().hashCode() : 0);
-result = 31 * result + (getValue() != null ? getValue().hashCode() : 0);
-result = 31 * result + (getShow() != null ? getShow().hashCode() : 0);
-result = 31 * result + 

[10/51] [abbrv] metron git commit: METRON-1685 Retrieve Pcap results in raw binary format (merrimanr) closes apache/metron#1123

2018-08-17 Thread rmerriman
METRON-1685 Retrieve Pcap results in raw binary format (merrimanr) closes 
apache/metron#1123


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/a5a51399
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/a5a51399
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/a5a51399

Branch: refs/heads/master
Commit: a5a51399d2eafd2535d79bb13ee0d4d8eb2e2d23
Parents: 3e5ef41
Author: merrimanr 
Authored: Fri Jul 20 09:37:34 2018 -0500
Committer: rmerriman 
Committed: Fri Jul 20 09:37:34 2018 -0500

--
 metron-interface/metron-rest/README.md  | 10 
 .../metron/rest/controller/PcapController.java  | 40 ++
 .../apache/metron/rest/service/PcapService.java |  5 +-
 .../rest/service/impl/PcapServiceImpl.java  | 17 ++
 .../PcapControllerIntegrationTest.java  | 44 
 .../rest/service/impl/PcapServiceImplTest.java  | 55 
 6 files changed, 170 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/a5a51399/metron-interface/metron-rest/README.md
--
diff --git a/metron-interface/metron-rest/README.md 
b/metron-interface/metron-rest/README.md
index 7b3a263..4a7102f 100644
--- a/metron-interface/metron-rest/README.md
+++ b/metron-interface/metron-rest/README.md
@@ -256,6 +256,7 @@ Request and Response objects are JSON formatted.  The JSON 
schemas are available
 | [ `GET /api/v1/pcap/fixed`](#get-apiv1pcapfixed)|
 | [ `GET /api/v1/pcap/{jobId}`](#get-apiv1pcapjobid)|
 | [ `GET /api/v1/pcap/{jobId}/pdml`](#get-apiv1pcapjobidpdml)|
+| [ `GET /api/v1/pcap/{jobId}/raw`](#get-apiv1pcapjobidraw)|
 | [ `GET /api/v1/search/search`](#get-apiv1searchsearch)|
 | [ `POST /api/v1/search/search`](#get-apiv1searchsearch)|
 | [ `POST /api/v1/search/group`](#get-apiv1searchgroup)|
@@ -523,6 +524,15 @@ Request and Response objects are JSON formatted.  The JSON 
schemas are available
   * Returns:
 * 200 - Returns PDML in json format.
 * 404 - Job or page is missing.
+
+### `POST /api/v1/pcap/{jobId}/raw`
+  * Description: Download Pcap Results for a page.
+  * Input:
+* jobId - Job ID of submitted job
+* page - Page number
+  * Returns:
+* 200 - Returns Pcap as a file download.
+* 404 - Job or page is missing.
 
 ### `POST /api/v1/search/search`
   * Description: Searches the indexing store. GUIDs must be quoted to ensure 
correct results.

http://git-wip-us.apache.org/repos/asf/metron/blob/a5a51399/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/controller/PcapController.java
--
diff --git 
a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/controller/PcapController.java
 
b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/controller/PcapController.java
index 47bc6a0..23bb0b9 100644
--- 
a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/controller/PcapController.java
+++ 
b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/controller/PcapController.java
@@ -21,6 +21,8 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.metron.rest.RestException;
 import org.apache.metron.rest.model.pcap.FixedPcapRequest;
 import org.apache.metron.rest.model.pcap.PcapStatus;
@@ -37,10 +39,18 @@ import 
org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
 @RestController
 @RequestMapping("/api/v1/pcap")
 public class PcapController {
 
+  private static final String PCAP_FILENAME_FORMAT = "pcap_%s_%s.pcap";
+
   @Autowired
   private PcapService pcapQueryService;
 
@@ -99,4 +109,34 @@ public class PcapController {
 }
   }
 
+  @ApiOperation(value = "Download Pcap Results for a page.")
+  @ApiResponses(value = {
+  @ApiResponse(message = "Returns Pcap as a file download.", code = 
200),
+  @ApiResponse(message = "Job or page is missing.", code = 404)
+  })
+  @RequestMapping(value = "/{jobId}/raw", method = RequestMethod.GET)
+  void raw(@ApiParam(name="jobId", value="Job ID of submitted job", 
required=true)@PathVariable String jobId,
+   @ApiP

[12/51] [abbrv] metron git commit: METRON-1562 Enable Kerberos in REST for YARN and MR jobs (merrimanr) closes apache/metron#1094

2018-08-17 Thread rmerriman
METRON-1562 Enable Kerberos in REST for YARN and MR jobs (merrimanr) closes 
apache/metron#1094


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/8763fba2
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/8763fba2
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/8763fba2

Branch: refs/heads/master
Commit: 8763fba2ff579b37b6af82822fc4b2c4390665a8
Parents: b580a69
Author: merrimanr 
Authored: Fri Jul 20 11:05:32 2018 -0500
Committer: rmerriman 
Committed: Fri Jul 20 11:05:32 2018 -0500

--
 .../ansible/roles/ambari_config/vars/single_node_vm.yml   |  1 +
 metron-interface/metron-rest/pom.xml  | 10 ++
 2 files changed, 11 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/8763fba2/metron-deployment/ansible/roles/ambari_config/vars/single_node_vm.yml
--
diff --git 
a/metron-deployment/ansible/roles/ambari_config/vars/single_node_vm.yml 
b/metron-deployment/ansible/roles/ambari_config/vars/single_node_vm.yml
index 6b67719..a3c643b 100644
--- a/metron-deployment/ansible/roles/ambari_config/vars/single_node_vm.yml
+++ b/metron-deployment/ansible/roles/ambari_config/vars/single_node_vm.yml
@@ -69,6 +69,7 @@ configurations:
   yarn_heapsize: 512
   apptimelineserver_heapsize : 512
   resourcemanager_heapsize: 1024
+  min_user_id: 500
   - mapred-env:
   jobhistory_heapsize: 256
   - mapred-site:

http://git-wip-us.apache.org/repos/asf/metron/blob/8763fba2/metron-interface/metron-rest/pom.xml
--
diff --git a/metron-interface/metron-rest/pom.xml 
b/metron-interface/metron-rest/pom.xml
index 1bf0fd6..e98c96b 100644
--- a/metron-interface/metron-rest/pom.xml
+++ b/metron-interface/metron-rest/pom.xml
@@ -191,6 +191,16 @@
   
 
   
+  
+org.apache.hadoop
+hadoop-mapreduce-client-app
+${global_hadoop_version}
+  
+  
+org.apache.hadoop
+hadoop-mapreduce-client-core
+${global_hadoop_version}
+  
 
 org.apache.metron
 metron-hbase-client



[13/51] [abbrv] metron git commit: METRON-1560 Update MPack to support Pcap panel (merrimanr) closes apache/metron#1124

2018-08-17 Thread rmerriman
METRON-1560 Update MPack to support Pcap panel (merrimanr) closes 
apache/metron#1124


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/e78bc530
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/e78bc530
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/e78bc530

Branch: refs/heads/master
Commit: e78bc530260aa622e8263cda2b94be99194dffb5
Parents: 8763fba
Author: merrimanr 
Authored: Mon Jul 23 09:08:12 2018 -0500
Committer: rmerriman 
Committed: Mon Jul 23 09:08:12 2018 -0500

--
 .../CURRENT/configuration/metron-rest-env.xml   | 25 
 .../package/scripts/params/params_linux.py  |  5 +++-
 .../CURRENT/package/scripts/rest_commands.py| 18 --
 .../METRON/CURRENT/package/templates/metron.j2  |  4 
 .../METRON/CURRENT/themes/metron_theme.json | 10 
 .../src/main/config/rest_application.yml|  6 -
 .../src/main/config/pcap.properties |  2 +-
 7 files changed, 65 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/e78bc530/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
index 066b527..20f9767 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
@@ -168,4 +168,29 @@
 The field name where the threat triage score can be found 
in the search indices. This setting primarily affects the Alerts 
UI.
 threat:triage:score
 
+
+pcap_base_path
+Pcap Base Path
+The HDFS path where pcap files are stored.  These files 
are the input to pcap queries.
+/apps/metron/pcap/input
+
+
+pcap_base_interim_result_path
+Pcap Base Interim Result Path
+The HDFS path where interim results of a pcap query are 
stored, before they are separated into pages.
+/apps/metron/pcap/interim
+
+
+pcap_final_output_path
+Pcap Final Output Path
+The HDFS path where the final results of a pcap query are 
stored.
+/apps/metron/pcap/output
+
+
+pcap_page_size
+Pcap Page Size
+The number of pcaps written to a page/file as a result of 
a pcap query.
+10
+
+
 

http://git-wip-us.apache.org/repos/asf/metron/blob/e78bc530/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
index b8d6123..73d3469 100755
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
@@ -386,7 +386,10 @@ bolt_hdfs_rotation_policy_units = 
config['configurations']['metron-indexing-env'
 bolt_hdfs_rotation_policy_count = 
config['configurations']['metron-indexing-env']['bolt_hdfs_rotation_policy_count']
 
 # Pcap
-pcap_hdfs_dir = format("{metron_apps_hdfs_dir}/pcap")
+pcap_base_path = config['configurations']['metron-rest-env']['pcap_base_path']
+pcap_base_interim_result_path = 
config['configurations']['metron-rest-env']['pcap_base_interim_result_path']
+pcap_final_output_path = 
config['configurations']['metron-rest-env']['pcap_final_output_path']
+pcap_page_size = config['configurations']['metron-rest-env']['pcap_page_size']
 pcap_configured_flag_file = status_params.pcap_configured_flag_file
 
 # MapReduce

http://git-wip-us.apache.org/repos/asf/metron/blob/e78bc530/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_commands.py
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resour

[02/51] [abbrv] metron git commit: METRON-1614: Create job status abstraction (mmiklavc via mmiklavc) closes apache/metron#1108

2018-08-17 Thread rmerriman
http://git-wip-us.apache.org/repos/asf/metron/blob/dbbf6243/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/integration/PcapTopologyIntegrationTest.java
--
diff --git 
a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/integration/PcapTopologyIntegrationTest.java
 
b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/integration/PcapTopologyIntegrationTest.java
index c7292ab..9ea7912 100644
--- 
a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/integration/PcapTopologyIntegrationTest.java
+++ 
b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/integration/PcapTopologyIntegrationTest.java
@@ -36,6 +36,7 @@ import java.util.Map;
 import java.util.Properties;
 import javax.annotation.Nullable;
 import kafka.consumer.ConsumerIterator;
+import org.apache.commons.io.FileUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -45,6 +46,7 @@ import org.apache.hadoop.io.IntWritable;
 import org.apache.hadoop.io.SequenceFile;
 import org.apache.kafka.clients.producer.Producer;
 import org.apache.metron.common.Constants;
+import org.apache.metron.common.utils.HDFSUtils;
 import org.apache.metron.integration.BaseIntegrationTest;
 import org.apache.metron.integration.ComponentRunner;
 import org.apache.metron.integration.Processor;
@@ -55,12 +57,18 @@ import 
org.apache.metron.integration.components.KafkaComponent;
 import org.apache.metron.integration.components.MRComponent;
 import org.apache.metron.integration.components.ZKServerComponent;
 import org.apache.metron.integration.utils.KafkaUtil;
+import org.apache.metron.job.JobStatus;
+import org.apache.metron.job.Statusable;
 import org.apache.metron.pcap.PacketInfo;
 import org.apache.metron.pcap.PcapHelper;
 import org.apache.metron.pcap.PcapMerger;
+import org.apache.metron.pcap.config.FixedPcapConfig;
+import org.apache.metron.pcap.config.PcapOptions;
 import org.apache.metron.pcap.filter.fixed.FixedPcapFilter;
 import org.apache.metron.pcap.filter.query.QueryPcapFilter;
+import org.apache.metron.pcap.finalizer.PcapFinalizerStrategies;
 import org.apache.metron.pcap.mr.PcapJob;
+import org.apache.metron.pcap.query.PcapCli;
 import org.apache.metron.spout.pcap.Endianness;
 import org.apache.metron.spout.pcap.deserializer.Deserializers;
 import org.apache.metron.test.utils.UnitTestHelper;
@@ -73,13 +81,22 @@ public class PcapTopologyIntegrationTest extends 
BaseIntegrationTest {
   final static String KAFKA_TOPIC = "pcap";
   private static String BASE_DIR = "pcap";
   private static String DATA_DIR = BASE_DIR + "/data_dir";
-  private static String QUERY_DIR = BASE_DIR + "/query";
+  private static String INTERIM_RESULT = BASE_DIR + "/query";
+  private static String OUTPUT_DIR = BASE_DIR + "/output";
+  private static final int MAX_RETRIES = 30;
+  private static final int SLEEP_MS = 500;
   private String topologiesDir = "src/main/flux";
   private String targetDir = "target";
 
-  private static void clearOutDir(File outDir) {
-for(File f : outDir.listFiles()) {
-  f.delete();
+  private static void clearOutDirs(File... dirs) throws IOException {
+for(File dir: dirs) {
+  for(File f : dir.listFiles()) {
+if (f.isDirectory()) {
+  FileUtils.deleteDirectory(f);
+} else {
+  f.delete();
+}
+  }
 }
   }
   private static int numFiles(File outDir, Configuration config) {
@@ -158,10 +175,10 @@ public class PcapTopologyIntegrationTest extends 
BaseIntegrationTest {
   topologiesDir = UnitTestHelper.findDir("topologies");
 }
 targetDir = UnitTestHelper.findDir("target");
-final File outDir = getOutDir(targetDir);
-final File queryDir = getQueryDir(targetDir);
-clearOutDir(outDir);
-clearOutDir(queryDir);
+final File inputDir = getDir(targetDir, DATA_DIR);
+final File interimResultDir = getDir(targetDir, INTERIM_RESULT);
+final File outputDir = getDir(targetDir, OUTPUT_DIR);
+clearOutDirs(inputDir, interimResultDir, outputDir);
 
 File baseDir = new File(new File(targetDir), BASE_DIR);
 //Assert.assertEquals(0, numFiles(outDir));
@@ -175,7 +192,7 @@ public class PcapTopologyIntegrationTest extends 
BaseIntegrationTest {
   setProperty("topology.worker.childopts", "");
   setProperty("spout.kafka.topic.pcap", KAFKA_TOPIC);
   setProperty("kafka.pcap.start", "EARLIEST");
-  setProperty("kafka.pcap.out", outDir.getAbsolutePath());
+  setProperty("kafka.pcap.out", inputDir.getAbsolutePath());
   setProperty("kafka.pcap.numPackets", "2");
   setProperty("kafka.pcap.maxTimeMS", "2");
   setProperty("kafka.pcap.ts_granularity", "NANOSECONDS");
@@ -219,7 +236,7 @@ public class PcapTopologyIntegrationTest extends 
BaseIntegrationTest {
   runner.process(new 

[20/51] [abbrv] metron git commit: METRON-1671 Create PCAP UI (tiborm via merrimanr) closes apache/metron#1103

2018-08-17 Thread rmerriman
http://git-wip-us.apache.org/repos/asf/metron/blob/d5eb56a9/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.spec.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.spec.ts
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.spec.ts
new file mode 100644
index 000..155e1f8
--- /dev/null
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.spec.ts
@@ -0,0 +1,1283 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { PcapPacketComponent } from './pcap-packet.component';
+import { PdmlPacket } from '../model/pdml';
+
+describe('PcapPacketComponent', () => {
+  let component: PcapPacketComponent;
+  let fixture: ComponentFixture;
+
+  beforeEach(async(() => {
+TestBed.configureTestingModule({
+  declarations: [ PcapPacketComponent ]
+})
+.compileComponents();
+  }));
+
+  beforeEach(() => {
+fixture = TestBed.createComponent(PcapPacketComponent);
+component = fixture.componentInstance;
+component.packet = fakePacket as PdmlPacket;
+fixture.detectChanges();
+  });
+
+  it('should create', () => {
+expect(component).toBeTruthy();
+  });
+});
+
+const fakePacket = {
+  name: "something",
+  expanded: false,
+  protos: [
+{
+  "name": "geninfo",
+  "pos": "0",
+  "showname": "General information",
+  "size": "722",
+  "hide": null,
+  "fields": [
+{
+  "name": "num",
+  "pos": "0",
+  "showname": "Number",
+  "size": "722",
+  "value": "1",
+  "show": "1",
+  "unmaskedvalue": null,
+  "hide": null,
+  "fields": null,
+  "protos": null
+},
+{
+  "name": "len",
+  "pos": "0",
+  "showname": "Frame Length",
+  "size": "722",
+  "value": "2d2",
+  "show": "722",
+  "unmaskedvalue": null,
+  "hide": null,
+  "fields": null,
+  "protos": null
+},
+{
+  "name": "caplen",
+  "pos": "0",
+  "showname": "Captured Length",
+  "size": "722",
+  "value": "2d2",
+  "show": "722",
+  "unmaskedvalue": null,
+  "hide": null,
+  "fields": null,
+  "protos": null
+},
+{
+  "name": "timestamp",
+  "pos": "0",
+  "showname": "Captured Time",
+  "size": "722",
+  "value": "1458240269.373968000",
+  "show": "Mar 17, 2016 18:44:29.373968000 UTC",
+  "unmaskedvalue": null,
+  "hide": null,
+  "fields": null,
+  "protos": null
+}
+  ]
+},
+{
+  "name": "frame",
+  "pos": "0",
+  "showname": "Frame 1: 722 bytes on wire (5776 bits), 722 bytes captured 
(5776 bits)",
+  "size": "722",
+  "hide": null,
+  "fields": [
+{
+  "name": "frame.dlt",
+  "pos": "0",
+  "showname": "WTAP_ENCAP: 1",
+  "size": "0",
+  "value": null,
+  "show": "1",
+  "unmaskedvalue": null,
+  "hide": null,
+  "fields": null,
+  "protos": null
+},
+{
+  "name": "frame.time",
+  "pos": "0",
+  "showname": "Arrival Time: Mar 17, 2016 18:44:29.373968000 UTC",
+  "size": "0",
+  "value": null,
+  "show": "Mar 17, 2016 18:44:29.373968000",
+  "unmaskedvalue": null,
+  "hide": null,
+  "fields": null,
+  "protos": null
+},
+{
+  "name": "frame.offset_shift",
+  "pos": "0",
+  "showname": "Time shift for this packet: 0.0 seconds",
+  "size": "0",
+  "value": null,
+  "show": "0.0",
+  "unmaskedvalue": null,
+  "hide": null,
+  "fields": null,
+  "protos": null
+},
+{
+  "name": "frame.time_epoch",
+  "pos": "0",
+  

[25/51] [abbrv] metron git commit: METRON-1662 PCAP UI - Downloading PCAP page files (tiborm via merrimanr) closes apache/metron#1118

2018-08-17 Thread rmerriman
METRON-1662 PCAP UI - Downloading PCAP page files (tiborm via merrimanr) closes 
apache/metron#1118


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/b445bfe2
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/b445bfe2
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/b445bfe2

Branch: refs/heads/master
Commit: b445bfe242123e544c1fef41e2ab5bdc07dbc56e
Parents: 2b6959b
Author: tiborm 
Authored: Fri Aug 3 08:13:11 2018 -0500
Committer: rmerriman 
Committed: Fri Aug 3 08:13:11 2018 -0500

--
 .../metron-alerts/src/app/pcap/model/pdml.ts| 12 +++-
 .../pcap/pcap-packet/pcap-packet.component.ts   |  9 ++
 .../pcap/pcap-panel/pcap-panel.component.html   |  2 +-
 .../app/pcap/pcap-panel/pcap-panel.component.ts | 30 +++-
 .../src/app/pcap/service/pcap.service.ts| 15 ++
 5 files changed, 33 insertions(+), 35 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/b445bfe2/metron-interface/metron-alerts/src/app/pcap/model/pdml.ts
--
diff --git a/metron-interface/metron-alerts/src/app/pcap/model/pdml.ts 
b/metron-interface/metron-alerts/src/app/pcap/model/pdml.ts
index 97fc347..34245c6 100644
--- a/metron-interface/metron-alerts/src/app/pcap/model/pdml.ts
+++ b/metron-interface/metron-alerts/src/app/pcap/model/pdml.ts
@@ -17,8 +17,7 @@
  */
  
  export class PdmlField {
-  //public $: any[]
-public name: string;
+  public name: string;
   public fields?: PdmlField[]
   public show: string;
   public value: string;
@@ -26,9 +25,8 @@
 }
 
 export class PdmlProto {
-  //public $: any
-public name: string;
-public showname: string;
+  public name: string;
+  public showname: string;
   public fields: PdmlField[]
   
   public static findField(p: PdmlProto, name: string): PdmlField {
@@ -36,10 +34,8 @@ export class PdmlProto {
   }
 }
 
-
 export class PdmlPacket {
-  //public $: any
-public name: string;
+  public name: string;
   public protos: PdmlProto[]
   public expanded: boolean = false
 }

http://git-wip-us.apache.org/repos/asf/metron/blob/b445bfe2/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.ts
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.ts
index f1bbe2d..ca28a39 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.ts
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.ts
@@ -24,16 +24,11 @@ import { PdmlPacket } from '../model/pdml'
   templateUrl: './pcap-packet.component.html',
   styleUrls: ['./pcap-packet.component.scss']
 })
-export class PcapPacketComponent implements OnInit {
+export class PcapPacketComponent {
   @Input() packet: PdmlPacket
 
-  constructor() { }
-
-  ngOnInit() {
-  }
-
   toggle() {
-this.packet.expanded = !this.packet.expanded
+this.packet.expanded = !this.packet.expanded;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/metron/blob/b445bfe2/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.html
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.html
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.html
index b373914..1fd250f 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.html
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.html
@@ -27,5 +27,5 @@
   
 
   
-
+  Download PCAP
 

http://git-wip-us.apache.org/repos/asf/metron/blob/b445bfe2/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts
index fd49ec7..4114e24 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts
@@ -15,47 +15,45 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import { Component, OnInit, Input } from '@angular/core';
+import { Component, Input } from '@angular/core';
 
-import { PcapService, PcapStatusResponse } from '../service/pcap.service'
-import { PcapRequest } from '../model/pcap.request'
-import { Pdml } from '../model/pdml'
-import

[05/51] [abbrv] metron git commit: METRON-1614: Create job status abstraction (mmiklavc via mmiklavc) closes apache/metron#1108

2018-08-17 Thread rmerriman
METRON-1614: Create job status abstraction (mmiklavc via mmiklavc) closes 
apache/metron#1108


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/dbbf6243
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/dbbf6243
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/dbbf6243

Branch: refs/heads/master
Commit: dbbf624367f8a3fb5d78352be0d9a2dec0533923
Parents: f30e9cc
Author: mmiklavc 
Authored: Wed Jul 18 15:48:08 2018 -0600
Committer: Michael Miklavcic 
Committed: Wed Jul 18 15:48:08 2018 -0600

--
 metron-deployment/amazon-ec2/conf/defaults.yml  |   1 -
 metron-deployment/amazon-ec2/playbook.yml   |   2 +-
 .../ansible/playbooks/metron_install.yml|   7 -
 .../roles/metron_pcapservice/defaults/main.yml  |  28 -
 .../roles/metron_pcapservice/meta/main.yml  |  19 -
 .../metron_pcapservice/tasks/config-hbase.yml   |  26 -
 .../roles/metron_pcapservice/tasks/main.yml |  25 -
 .../metron_pcapservice/tasks/pcapservice.yml|  30 -
 .../templates/metron-pcapservice-logrotate.yml  |  27 -
 .../metron_pcapservice/templates/pcapservice|  84 ---
 .../ubuntu14/ansible/inventory/hosts|   4 -
 metron-interface/metron-rest-client/pom.xml |   5 +
 .../metron/rest/model/pcap/PcapRequest.java |  37 +-
 .../metron/rest/controller/PcapController.java  |  32 +-
 .../rest/service/impl/PcapServiceImpl.java  |  11 +-
 .../rest/service/impl/PcapServiceImplTest.java  |  32 +-
 metron-platform/metron-api/README.md|  65 --
 metron-platform/metron-api/pom.xml  | 269 -
 .../apache/metron/api/ConfigurationManager.java | 135 -
 .../api/helper/service/PcapServiceCli.java  | 169 --
 .../metron/pcapservice/ConfigurationUtil.java   |  64 --
 .../pcapservice/PcapReceiverImplRestEasy.java   | 299 -
 .../metron/pcapservice/PcapsResponse.java   | 118 
 .../metron/pcapservice/RestTestingUtil.java | 329 --
 .../pcapservice/rest/JettyServiceRunner.java|  44 --
 .../metron/pcapservice/rest/PcapService.java|  56 --
 .../src/main/resources/META-INF/LICENSE | 605 ---
 .../src/main/resources/META-INF/NOTICE  |  39 --
 .../pcapservice/ConfigurationUtilTest.java  |  43 --
 .../PcapReceiverImplRestEasyTest.java   | 255 
 .../src/test/resources/log4j.properties |  24 -
 .../src/test/resources/test-tcp-packet.pcap | Bin 144 -> 0 bytes
 .../common/configuration/ConfigOption.java  |  45 ++
 .../apache/metron/common/utils/HDFSUtils.java   |  20 +-
 metron-platform/metron-job/README.md|  26 +
 .../metron-job_state_statechart_diagram.svg |  14 +
 .../metron-job_state_statechart_diagram.xml |  14 +
 .../java/org/apache/metron/job/Finalizer.java   |  38 ++
 .../org/apache/metron/job/JobException.java |  31 +
 .../java/org/apache/metron/job/JobStatus.java   |  17 +-
 .../java/org/apache/metron/job/Pageable.java|  16 +-
 .../java/org/apache/metron/job/Statusable.java  |  32 +-
 .../metron/job/manager/InMemoryJobManager.java  |  82 +++
 .../apache/metron/job/manager/JobManager.java   |  41 ++
 .../job/manager/InMemoryJobManagerTest.java | 192 ++
 metron-platform/metron-pcap-backend/pom.xml |   6 +
 .../org/apache/metron/pcap/query/CliConfig.java | 128 
 .../org/apache/metron/pcap/query/CliParser.java |  24 +-
 .../metron/pcap/query/FixedCliConfig.java   |  50 --
 .../metron/pcap/query/FixedCliParser.java   |  10 +-
 .../org/apache/metron/pcap/query/PcapCli.java   |  89 ++-
 .../metron/pcap/query/QueryCliConfig.java   |  34 --
 .../metron/pcap/query/QueryCliParser.java   |  10 +-
 .../org/apache/metron/pcap/PcapJobTest.java | 189 +++---
 .../PcapTopologyIntegrationTest.java| 545 ++---
 .../apache/metron/pcap/query/PcapCliTest.java   | 170 +++---
 .../java/org/apache/metron/pcap/PcapFiles.java  |  42 --
 .../java/org/apache/metron/pcap/PcapPages.java  |  86 +++
 .../metron/pcap/config/FixedPcapConfig.java |  46 ++
 .../apache/metron/pcap/config/PcapConfig.java   | 131 
 .../apache/metron/pcap/config/PcapOptions.java  |  66 ++
 .../metron/pcap/config/QueryPcapConfig.java |  33 +
 .../metron/pcap/finalizer/PcapCliFinalizer.java |  45 ++
 .../metron/pcap/finalizer/PcapFinalizer.java| 128 
 .../pcap/finalizer/PcapFinalizerStrategies.java |  47 ++
 .../pcap/finalizer/PcapRestFinalizer.java   |  44 ++
 .../java/org/apache/metron/pcap/mr/PcapJob.java | 337 +++
 .../metron/pcap/writer/PcapResultsWriter.java   |  59 ++
 .../metron/pcap/writer/ResultsWriter.java   |  59 --
 .../org/apache/metron/pcap/PcapPagesTest.java   |  76 +++
 metron-platform/pom.xml |   1 -
 71 files changed, 2159 insertions(+), 3748 deletions(-)
--



[04/51] [abbrv] metron git commit: METRON-1614: Create job status abstraction (mmiklavc via mmiklavc) closes apache/metron#1108

2018-08-17 Thread rmerriman
http://git-wip-us.apache.org/repos/asf/metron/blob/dbbf6243/metron-platform/metron-api/src/main/java/org/apache/metron/pcapservice/RestTestingUtil.java
--
diff --git 
a/metron-platform/metron-api/src/main/java/org/apache/metron/pcapservice/RestTestingUtil.java
 
b/metron-platform/metron-api/src/main/java/org/apache/metron/pcapservice/RestTestingUtil.java
deleted file mode 100644
index ef31a2a..000
--- 
a/metron-platform/metron-api/src/main/java/org/apache/metron/pcapservice/RestTestingUtil.java
+++ /dev/null
@@ -1,329 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.metron.pcapservice;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * The Class RestTestingUtil.
- */
-public class RestTestingUtil {
-  
-  /** The host name. */
-  public static String hostName = null;
-
-  /**
-   * Gets the pcaps by keys.
-   * 
-   * @param keys
-   *  the keys
-   * @return the pcaps by keys
-   */
-  @SuppressWarnings("unchecked")
-  private static void getPcapsByKeys(String keys) {
-System.out
-.println("**getPcapsByKeys 
**");
-// 1.
-String url = "http://; + hostName
-+ "/cisco-rest/pcapGetter/getPcapsByKeys?keys={keys}"
-+ "={includeReverseTraffic}"
-+ "={startTime}" + "={endTime}"
-+ "={maxResponseSize}";
-// default values
-String startTime = "-1";
-String endTime = "-1";
-String maxResponseSize = "6";
-String includeReverseTraffic = "false";
-
-@SuppressWarnings("rawtypes")
-Map map = new HashMap();
-map.put("keys", keys);
-map.put("includeReverseTraffic", includeReverseTraffic);
-map.put("startTime", startTime);
-map.put("endTime", endTime);
-map.put("maxResponseSize", maxResponseSize);
-
-RestTemplate template = new RestTemplate();
-
-// set headers and entity to send
-HttpHeaders headers = new HttpHeaders();
-headers.set("Accept", MediaType.APPLICATION_OCTET_STREAM_VALUE);
-HttpEntity requestEntity = new HttpEntity(headers);
-
-// 1.
-ResponseEntity response1 = template.exchange(url, HttpMethod.GET,
-requestEntity, byte[].class, map);
-System.out
-
.println("");
-System.out
-.format(
-"getPcapsByKeys : request=  \n response= %s \n",
-keys, includeReverseTraffic, startTime, endTime, maxResponseSize,
-response1);
-System.out
-
.println("");
-System.out.println();
-
-// 2. with reverse traffic
-includeReverseTraffic = "true";
-map.put("includeReverseTraffic", includeReverseTraffic);
-ResponseEntity response2 = template.exchange(url, HttpMethod.GET,
-requestEntity, byte[].class, map);
-System.out
-
.println("");
-System.out
-.format(
-"getPcapsByKeys : request=  \n response= %s \n",
-keys, includeReverseTraffic, startTime, endTime, maxResponseSize,
-response2);
-System.out
-
.println("");
-System.out.println();
-
-// 3.with time range
-startTime = System.getProperty("startTime", "-1");
-endTime = System.getProperty("endTime", "-1");
-map.put("startTime", startTime);
-map.put("endTime", endTime);
-ResponseEntity response3 = template.exchange(url, HttpMethod.GET,
-requestEntity, byte[].class, map);
-System.out
-

[01/51] [abbrv] metron git commit: METRON-1614: Create job status abstraction (mmiklavc via mmiklavc) closes apache/metron#1108

2018-08-17 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/master 308c2b27b -> 9fdccba37


http://git-wip-us.apache.org/repos/asf/metron/blob/dbbf6243/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/mr/PcapJob.java
--
diff --git 
a/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/mr/PcapJob.java
 
b/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/mr/PcapJob.java
index 269f69b..05c494b 100644
--- 
a/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/mr/PcapJob.java
+++ 
b/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/mr/PcapJob.java
@@ -22,17 +22,17 @@ import static 
org.apache.metron.pcap.PcapHelper.greaterThanOrEqualTo;
 import static org.apache.metron.pcap.PcapHelper.lessThanOrEqualTo;
 
 import com.google.common.base.Joiner;
-import com.google.common.collect.Iterables;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.Timer;
+import java.util.TimerTask;
 import java.util.UUID;
 import java.util.stream.Stream;
 import org.apache.commons.lang3.StringUtils;
@@ -50,30 +50,43 @@ import org.apache.hadoop.mapreduce.Partitioner;
 import org.apache.hadoop.mapreduce.Reducer;
 import org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat;
 import org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat;
-import org.apache.metron.common.hadoop.SequenceFileIterable;
+import org.apache.metron.job.Finalizer;
+import org.apache.metron.job.JobException;
 import org.apache.metron.job.JobStatus;
 import org.apache.metron.job.JobStatus.State;
 import org.apache.metron.job.Pageable;
 import org.apache.metron.job.Statusable;
 import org.apache.metron.pcap.PacketInfo;
-import org.apache.metron.pcap.PcapFiles;
 import org.apache.metron.pcap.PcapHelper;
+import org.apache.metron.pcap.PcapPages;
+import org.apache.metron.pcap.config.PcapOptions;
 import org.apache.metron.pcap.filter.PcapFilter;
 import org.apache.metron.pcap.filter.PcapFilterConfigurator;
 import org.apache.metron.pcap.filter.PcapFilters;
 import org.apache.metron.pcap.utils.FileFilterUtil;
-import org.apache.metron.pcap.writer.ResultsWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class PcapJob implements Statusable {
+/**
+ * Encompasses MapReduce job and final writing of Pageable results to 
specified location.
+ * Cleans up MapReduce results from HDFS on completion.
+ */
+public class PcapJob implements Statusable {
 
   private static final Logger LOG = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
   public static final String START_TS_CONF = "start_ts";
   public static final String END_TS_CONF = "end_ts";
   public static final String WIDTH_CONF = "width";
-  private Job job; // store a running MR job reference for async status check
-  private Path outputPath;
+  private static final long THREE_SECONDS = 3000;
+  private static final long ONE_SECOND = 1000;
+  private Job mrJob; // store a running MR job reference for async status check
+  private State jobState; // overall job state, including finalization step
+  private Finalizer finalizer;
+  private Map configuration;
+  private Pageable finalResults;
+  private Timer timer;
+  private long statusInterval; // how often timer thread checks job status.
+  private long completeCheckInterval; // how long we sleep between isDone 
checks in get()
 
   public static enum PCAP_COUNTER {
 MALFORMED_PACKET_COUNT
@@ -167,61 +180,92 @@ public class PcapJob implements Statusable {
 }
   }
 
+  public PcapJob() {
+jobState = State.NOT_RUNNING;
+finalResults = new PcapPages();
+statusInterval = THREE_SECONDS;
+completeCheckInterval = ONE_SECOND;
+  }
+
   /**
-   * Run query synchronously.
+   * Primarily for testing.
+   *
+   * @param interval time in millis
*/
-  public  SequenceFileIterable query(Path basePath
-, Path baseOutputPath
-, long beginNS
-, long endNS
-, int numReducers
-, T fields
-, Configuration conf
-, FileSystem fs
-, PcapFilterConfigurator filterImpl
-) throws IOException, ClassNotFoundException, 
InterruptedException {
-Statusable statusable = query(Optional.empty(), basePath, baseOutputPath, 
beginNS, endNS, numReducers, fields,
-conf,
-fs, filterImpl, true);
-JobStatus jobStatus = statusable.getStatus();
-if (jobStatus.getState() == State.SUCCEEDED) {
-  Path resultPath = jobStatus.getResultPath();
-  return 

[14/51] [abbrv] metron git commit: METRON-1661 Create Pcap Query Filter endpoint (merrimanr) closes apache/metron#1125

2018-08-17 Thread rmerriman
METRON-1661 Create Pcap Query Filter endpoint (merrimanr) closes 
apache/metron#1125


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/d0e87576
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/d0e87576
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/d0e87576

Branch: refs/heads/master
Commit: d0e87576944b6370eb1d9a0c98d0450f2c51f052
Parents: e78bc53
Author: merrimanr 
Authored: Mon Jul 23 09:09:37 2018 -0500
Committer: rmerriman 
Committed: Mon Jul 23 09:09:37 2018 -0500

--
 .../rest/model/pcap/FixedPcapRequest.java   |  1 +
 .../metron/rest/model/pcap/PcapRequest.java |  4 +-
 .../rest/model/pcap/QueryPcapOptions.java   | 35 +
 .../rest/model/pcap/QueryPcapRequest.java   | 59 ++
 metron-interface/metron-rest/README.md  | 10 ++-
 .../metron/rest/controller/PcapController.java  | 15 +++-
 .../apache/metron/rest/service/PcapService.java |  8 +-
 .../rest/service/impl/PcapServiceImpl.java  | 13 ++--
 .../PcapControllerIntegrationTest.java  | 81 +---
 .../apache/metron/rest/mock/MockPcapJob.java| 13 ++--
 .../rest/service/impl/PcapServiceImplTest.java  | 55 +++--
 11 files changed, 240 insertions(+), 54 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/d0e87576/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/FixedPcapRequest.java
--
diff --git 
a/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/FixedPcapRequest.java
 
b/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/FixedPcapRequest.java
index a2d345b..d91aac7 100644
--- 
a/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/FixedPcapRequest.java
+++ 
b/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/FixedPcapRequest.java
@@ -87,6 +87,7 @@ public class FixedPcapRequest extends PcapRequest {
 FixedPcapOptions.INCLUDE_REVERSE.put(this, includeReverse);
   }
 
+  @Override
   public void setFields() {
 Map fields = new HashMap<>();
 if (getIpSrcAddr() != null) {

http://git-wip-us.apache.org/repos/asf/metron/blob/d0e87576/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/PcapRequest.java
--
diff --git 
a/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/PcapRequest.java
 
b/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/PcapRequest.java
index 64ed932..44721fa 100644
--- 
a/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/PcapRequest.java
+++ 
b/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/PcapRequest.java
@@ -22,7 +22,7 @@ import org.apache.metron.pcap.config.PcapOptions;
 
 import java.util.HashMap;
 
-public class PcapRequest extends AbstractMapDecorator {
+public abstract class PcapRequest extends AbstractMapDecorator 
{
 
   public PcapRequest() {
 super(new HashMap<>());
@@ -78,4 +78,6 @@ public class PcapRequest extends AbstractMapDecorator {
   public void setNumReducers(Integer numReducers) {
 PcapOptions.NUM_REDUCERS.put(this, numReducers);
   }
+
+  public abstract void setFields();
 }

http://git-wip-us.apache.org/repos/asf/metron/blob/d0e87576/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/QueryPcapOptions.java
--
diff --git 
a/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/QueryPcapOptions.java
 
b/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/QueryPcapOptions.java
new file mode 100644
index 000..1ae3da6
--- /dev/null
+++ 
b/metron-interface/metron-rest-client/src/main/java/org/apache/metron/rest/model/pcap/QueryPcapOptions.java
@@ -0,0 +1,35 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY

[06/51] [abbrv] metron git commit: METRON-1674 Create REST endpoint for job status abstraction (merrimanr) closes apache/metron#1109

2018-08-17 Thread rmerriman
http://git-wip-us.apache.org/repos/asf/metron/blob/39ae9f46/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/finalizer/PcapRestFinalizer.java
--
diff --git 
a/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/finalizer/PcapRestFinalizer.java
 
b/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/finalizer/PcapRestFinalizer.java
index 059bba2..95907df 100644
--- 
a/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/finalizer/PcapRestFinalizer.java
+++ 
b/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/finalizer/PcapRestFinalizer.java
@@ -18,27 +18,27 @@
 
 package org.apache.metron.pcap.finalizer;
 
-import java.util.Map;
 import org.apache.hadoop.fs.Path;
+import org.apache.metron.job.Statusable;
 import org.apache.metron.pcap.config.PcapOptions;
 
+import java.util.Map;
+
 /**
  * Write to HDFS.
  */
 public class PcapRestFinalizer extends PcapFinalizer {
 
-  /**
-   * Format will have the format output-path/page-page-num.pcap
-   * The filename prefix is pluggable, but in most cases it will be provided 
via the PcapConfig
-   * as a formatted timestamp + uuid. A final sample format will look as 
follows:
-   * 
/base/output/path/pcap-data-201807181911-09855b4ae3204dee8b63760d65198da3+0001.pcap
-   */
-  private static final String PCAP_CLI_FILENAME_FORMAT = "%s/page-%s.pcap";
+  private static final String PCAP_REST_FILEPATH_FORMAT = 
"%s/%s/%s/%s/page-%s.pcap";
+
+  private String jobType = Statusable.JobType.MAP_REDUCE.name();
 
   @Override
-  protected String getOutputFileName(Map config, int 
partition) {
-Path finalOutputPath = 
PcapOptions.FINAL_OUTPUT_PATH.getTransformed(config, Path.class);
-return String.format(PCAP_CLI_FILENAME_FORMAT, finalOutputPath, partition);
+  protected Path getOutputPath(Map config, int partition) {
+String finalOutputPath = PcapOptions.FINAL_OUTPUT_PATH.get(config, 
String.class);
+String user = PcapOptions.USERNAME.get(config, String.class);
+String jobId = PcapOptions.JOB_ID.get(config, String.class);
+return new Path(String.format(PCAP_REST_FILEPATH_FORMAT, finalOutputPath, 
user, jobType, jobId, partition));
   }
 
 }

http://git-wip-us.apache.org/repos/asf/metron/blob/39ae9f46/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/mr/PcapJob.java
--
diff --git 
a/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/mr/PcapJob.java
 
b/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/mr/PcapJob.java
index 05c494b..1dd670d 100644
--- 
a/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/mr/PcapJob.java
+++ 
b/metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/mr/PcapJob.java
@@ -215,14 +215,24 @@ public class PcapJob implements Statusable {
 FileSystem fileSystem = PcapOptions.FILESYSTEM.get(configuration, 
FileSystem.class);
 Path basePath = PcapOptions.BASE_PATH.getTransformed(configuration, 
Path.class);
 Path baseInterimResultPath = 
PcapOptions.BASE_INTERIM_RESULT_PATH.getTransformed(configuration, Path.class);
-long startTime = PcapOptions.START_TIME_NS.get(configuration, Long.class);
-long endTime = PcapOptions.END_TIME_NS.get(configuration, Long.class);
+long startTime;
+if (configuration.containsKey(PcapOptions.START_TIME_NS.getKey())) {
+  startTime = PcapOptions.START_TIME_NS.get(configuration, Long.class);
+} else {
+  startTime = PcapOptions.START_TIME_MS.get(configuration, Long.class) * 
100;
+}
+long endTime;
+if (configuration.containsKey(PcapOptions.END_TIME_NS.getKey())) {
+  endTime = PcapOptions.END_TIME_NS.get(configuration, Long.class);
+} else {
+  endTime = PcapOptions.END_TIME_MS.get(configuration, Long.class) * 
100;
+}
 int numReducers = PcapOptions.NUM_REDUCERS.get(configuration, 
Integer.class);
 T fields = (T) PcapOptions.FIELDS.get(configuration, Object.class);
 PcapFilterConfigurator filterImpl = 
PcapOptions.FILTER_IMPL.get(configuration, PcapFilterConfigurator.class);
 
 try {
-  return query(jobName,
+  Statusable statusable = query(jobName,
   basePath,
   baseInterimResultPath,
   startTime,
@@ -233,6 +243,8 @@ public class PcapJob implements Statusable {
   new Configuration(hadoopConf),
   fileSystem,
   filterImpl);
+  PcapOptions.JOB_ID.put(configuration, statusable.getStatus().getJobId());
+  return statusable;
 } catch (IOException | InterruptedException | ClassNotFoundException e) {
   throw new JobException("Failed to run pcap query.", e);
 }



[19/51] [abbrv] metron git commit: METRON-1671 Create PCAP UI (tiborm via merrimanr) closes apache/metron#1103

2018-08-17 Thread rmerriman
http://git-wip-us.apache.org/repos/asf/metron/blob/d5eb56a9/metron-interface/metron-alerts/src/app/pcap/service/pcap.service.spec.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/service/pcap.service.spec.ts 
b/metron-interface/metron-alerts/src/app/pcap/service/pcap.service.spec.ts
new file mode 100644
index 000..244a3ea
--- /dev/null
+++ b/metron-interface/metron-alerts/src/app/pcap/service/pcap.service.spec.ts
@@ -0,0 +1,1752 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { TestBed, async, inject } from '@angular/core/testing';
+import {
+  BaseRequestOptions,
+  HttpModule,
+  Http,
+  Response,
+  ResponseOptions
+} from '@angular/http';
+import { MockBackend } from '@angular/http/testing';
+
+import { PcapService } from './pcap.service';
+import { PcapRequest } from '../model/pcap.request';
+
+describe('PcapService', () => {
+  beforeEach(() => {
+
+TestBed.configureTestingModule({
+  imports: [HttpModule],
+  providers: [
+PcapService,
+{
+  provide: Http,
+  useFactory: (mockBackend, options) => {
+return new Http(mockBackend, options);
+  },
+  deps: [MockBackend, BaseRequestOptions]
+},
+MockBackend,
+BaseRequestOptions
+  ]
+});
+  });
+  describe('getPackets()', () => {
+it('should return an Observable',
+  inject([PcapService, MockBackend], (pcapService, mockBackend) => {
+
+let request: PcapRequest = {
+  startTimeMs: 0,
+  endTimeMs: 0,
+  ipSrcAddr: '0.0.0.0',
+  ipSrcPort: '80',
+  ipDstAddr: '0.0.0.0',
+  ipDstPort: '80',
+  protocol: '*',
+  packetFilter: '*',
+  includeReverse: false,
+};
+
+mockBackend.connections.subscribe((connection) => {
+  connection.mockRespond(new Response(new ResponseOptions({body: 
pdml_json()})));
+});
+let packets;
+pcapService.getPackets(request).subscribe(r => packets = r)
+expect(packets).toBeTruthy()
+expect(packets.pdml).toBeTruthy()
+expect(packets.pdml.packet.length).toBe(1)
+expect(packets.pdml.packet[0].proto.length).toBeGreaterThan(3)
+
+console.log(packets)
+  }))
+
+
+it('should ...', inject([PcapService], (service: PcapService) => {
+  expect(service).toBeTruthy();
+}));
+
+  })
+
+});
+
+
+
+
+function pdml_json() {
+  return `{
+  "pdml": {
+"$": {
+  "version": "0",
+  "creator": "wireshark/2.4.2",
+  "time": "Tue Mar 27 21:55:25 2018",
+  "capture_file": 
"./metron-platform/metron-api/src/test/resources/test-tcp-packet.pcap"
+},
+"packet": [
+  {
+"proto": [
+  {
+"$": {
+  "name": "geninfo",
+  "pos": "0",
+  "showname": "General information",
+  "size": "104"
+},
+"field": [
+  {
+"$": {
+  "name": "num",
+  "pos": "0",
+  "show": "1",
+  "showname": "Number",
+  "value": "1",
+  "size": "104"
+}
+  },
+  {
+"$": {
+  "name": "len",
+  "pos": "0",
+  "show": "104",
+  "showname": "Frame Length",
+  "value": "68",
+  "size": "104"
+}
+  },
+  {
+"$": {
+  "name": "caplen",
+  "pos": "0",
+  "show": "104",
+  "showname": "Captured Length",
+  "value": "68",
+  "size": "104"
+}
+  },
+  {
+"$": {
+  "name": "timestamp",
+  "pos": "0",
+  "show": "Mar 26, 2014 19:59:40.024362000 GMT",
+  "showname": "Captured Time",
+  "value": "1395863980.024362000",
+  "size": "104"
+}
+ 

metron git commit: METRON-1739 UDP packets are not handled (merrimanr) closes apache/metron#1168

2018-08-17 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/feature/METRON-1554-pcap-query-panel 076a6a197 -> 14e80b3c2


METRON-1739 UDP packets are not handled (merrimanr) closes apache/metron#1168


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/14e80b3c
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/14e80b3c
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/14e80b3c

Branch: refs/heads/feature/METRON-1554-pcap-query-panel
Commit: 14e80b3c229ea2e5a8d615c87d822d4b44d8ec98
Parents: 076a6a1
Author: merrimanr 
Authored: Fri Aug 17 08:47:32 2018 -0500
Committer: rmerriman 
Committed: Fri Aug 17 08:47:32 2018 -0500

--
 .../src/app/pcap/model/pdml.mock.ts | 31 
 .../pcap-packet-line.component.spec.ts  | 53 --
 .../pcap-packet-line.component.ts   | 15 ++--
 .../java/org/apache/metron/pcap/PcapHelper.java | 18 -
 .../org/apache/metron/pcap/PcapHelperTest.java  | 76 
 5 files changed, 180 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/14e80b3c/metron-interface/metron-alerts/src/app/pcap/model/pdml.mock.ts
--
diff --git a/metron-interface/metron-alerts/src/app/pcap/model/pdml.mock.ts 
b/metron-interface/metron-alerts/src/app/pcap/model/pdml.mock.ts
index 6316b92..2520da1 100644
--- a/metron-interface/metron-alerts/src/app/pcap/model/pdml.mock.ts
+++ b/metron-interface/metron-alerts/src/app/pcap/model/pdml.mock.ts
@@ -60,3 +60,34 @@ export const fakePacket = {
 } as PdmlProto
   ]
 } as PdmlPacket;
+
+export const fakeUdpPacket = {
+  "name": '',
+  "expanded": false,
+  "protos": [
+{
+  "name": "geninfo",
+  "showname": "",
+  "fields": [
+{ "name": "timestamp", "pos": "0", "showname": "Captured Time", 
"size": "342", "value": "1534414874.932794000", "show": "Aug 16, 2018 
10:21:14.932794000 UTC", "unmaskedvalue": null, "hide": null, "fields": null, 
"protos": null } as PdmlField
+  ]
+} as PdmlProto,
+{
+  "name": "ip",
+  "showname": "",
+  "fields": [
+{ "name": "ip.proto", "pos": "23", "showname": "Protocol: UDP (17)", 
"size": "1", "value": "11", "show": "17", "unmaskedvalue": null, "hide": null, 
"fields": null, "protos": null } as PdmlField,
+{ "name": "ip.src", "pos": "26", "showname": "Source: 0.0.0.0 
(0.0.0.0)", "size": "4", "value": "", "show": "0.0.0.0", 
"unmaskedvalue": null, "hide": null, "fields": null, "protos": null } as 
PdmlField,
+{ "name": "ip.dst", "pos": "30", "showname": "Destination: 
255.255.255.255 (255.255.255.255)", "size": "4", "value": "", "show": 
"255.255.255.255", "unmaskedvalue": null, "hide": null, "fields": null, 
"protos": null } as PdmlField
+  ]
+} as PdmlProto,
+{
+  "name": "udp",
+  "showname": "User Datagram Protocol, Src Port: bootpc (68), Dst Port: 
bootps (67)",
+  "fields": [
+{ "name": "udp.srcport", "pos": "34", "showname": "Source port: bootpc 
(68)", "size": "2", "value": "0044", "show": "68", "unmaskedvalue": null, 
"hide": null, "fields": null, "protos": null } as PdmlField,
+{ "name": "udp.dstport", "pos": "36", "showname": "Destination port: 
bootps (67)", "size": "2", "value": "0043", "show": "67", "unmaskedvalue": 
null, "hide": null, "fields": null, "protos": null } as PdmlField
+  ],
+} as PdmlProto
+  ]
+} as PdmlPacket;

http://git-wip-us.apache.org/repos/asf/metron/blob/14e80b3c/metron-interface/metron-alerts/src/app/pcap/pcap-packet-line/pcap-packet-line.component.spec.ts
--

metron git commit: METRON-1735 Empty print status option causes NPE (merrimanr) closes apache/metron#1160

2018-08-14 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/feature/METRON-1554-pcap-query-panel bce9b903f -> 8a926dd5a


METRON-1735 Empty print status option causes NPE (merrimanr) closes 
apache/metron#1160


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/8a926dd5
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/8a926dd5
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/8a926dd5

Branch: refs/heads/feature/METRON-1554-pcap-query-panel
Commit: 8a926dd5a4501df8c7ef51b526ad5e4d752a5e19
Parents: bce9b90
Author: merrimanr 
Authored: Tue Aug 14 12:59:38 2018 -0500
Committer: rmerriman 
Committed: Tue Aug 14 12:59:38 2018 -0500

--
 .../org/apache/metron/pcap/query/CliParser.java  |  4 
 .../apache/metron/pcap/query/PcapCliTest.java|  7 ++-
 .../apache/metron/pcap/config/PcapConfig.java|  2 +-
 .../java/org/apache/metron/pcap/mr/PcapJob.java  | 18 +-
 .../org/apache/metron/pcap/mr/PcapJobTest.java   | 19 +++
 5 files changed, 35 insertions(+), 15 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/8a926dd5/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/CliParser.java
--
diff --git 
a/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/CliParser.java
 
b/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/CliParser.java
index 5040f90..b9a2a50 100644
--- 
a/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/CliParser.java
+++ 
b/metron-platform/metron-pcap-backend/src/main/java/org/apache/metron/pcap/query/CliParser.java
@@ -55,7 +55,6 @@ public class CliParser {
 options.addOption(newOption("rpf", "records_per_file", true, 
String.format("Number of records to include in each output pcap file (defaults 
to %s)", NUM_RECORDS_PER_FILE_DEFAULT)));
 options.addOption(newOption("et", "end_time", true, "Packet end time 
range. Default is current system time."));
 options.addOption(newOption("df", "date_format", true, "Date format to use 
for parsing start_time and end_time. Default is to use time in millis since the 
epoch."));
-options.addOption(newOption("ps", "print_status", false, "Print the status 
of the job as it runs"));
 options.addOption(newOption("yq", "yarn_queue", true, "Yarn queue this job 
will be submitted to"));
 return options;
   }
@@ -127,9 +126,6 @@ public class CliParser {
 //no-op
   }
 }
-if (commandLine.hasOption("print_status")) {
-  config.setPrintJobStatus(true);
-}
 if (commandLine.hasOption("yarn_queue")) {
   config.setYarnQueue(commandLine.getOptionValue("yarn_queue"));
 }

http://git-wip-us.apache.org/repos/asf/metron/blob/8a926dd5/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
--
diff --git 
a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
 
b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
index a71e997..3e7aad2 100644
--- 
a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
+++ 
b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
@@ -172,8 +172,7 @@ public class PcapCliTest {
 "-protocol", "6",
 "-include_reverse",
 "-num_reducers", "10",
-"-records_per_file", "1000",
-"-ps"
+"-records_per_file", "1000"
 };
 Map query = new HashMap() {{
   put(Constants.Fields.SRC_ADDR.getName(), "192.168.1.1");
@@ -217,7 +216,6 @@ public class PcapCliTest {
 "-include_reverse",
 "-num_reducers", "10",
 "-records_per_file", "1000",
-"-ps",
 "-yq", "pcap"
 };
 Map query = new HashMap() {{
@@ -295,8 +293,7 @@ public class PcapCliTest {
 "-base_path", "/base/path",
 "-base_output_path", "/base/output/path",
 "-query", "some query string",
-"-records_per_file", "1000",
-"-ps"
+"-records_per_file", &quo

metron git commit: METRON-1733 PCAP UI - PCAP queries don t work on Safari (sardell via merrimanr) closes apache/metron#1158

2018-08-13 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/feature/METRON-1554-pcap-query-panel ba0a6092c -> bce9b903f


METRON-1733 PCAP UI - PCAP queries dont work on Safari (sardell via 
merrimanr) closes apache/metron#1158


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/bce9b903
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/bce9b903
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/bce9b903

Branch: refs/heads/feature/METRON-1554-pcap-query-panel
Commit: bce9b903fbd3436ea0c41eb8d75da279e16ce922
Parents: ba0a609
Author: sardell 
Authored: Mon Aug 13 16:04:45 2018 -0500
Committer: rmerriman 
Committed: Mon Aug 13 16:04:45 2018 -0500

--
 .../src/app/pcap/pcap-filters/pcap-filters.component.ts  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/bce9b903/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.ts
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.ts
index df91ae3..b23a2e2 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.ts
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.ts
@@ -59,8 +59,8 @@ export class PcapFiltersComponent implements OnInit, 
OnChanges {
   }
 
   onSubmit() {
-this.model.startTimeMs = new Date(this.startTimeStr).getTime();
-this.model.endTimeMs = new Date(this.endTimeStr).getTime();
+this.model.startTimeMs = moment(this.startTimeStr, 
DEFAULT_TIMESTAMP_FORMAT).valueOf();
+this.model.endTimeMs = moment(this.endTimeStr, 
DEFAULT_TIMESTAMP_FORMAT).valueOf();
 if (this.ipSrcPort !== '') {
   this.model.ipSrcPort = +this.ipSrcPort;
 } else {



metron git commit: METRON-1725 Add ability to specify YARN queue for pcap jobs (merrimanr) closes apache/metron#1153

2018-08-10 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/feature/METRON-1554-pcap-query-panel 73dc63e67 -> 7a8c24674


METRON-1725 Add ability to specify YARN queue for pcap jobs (merrimanr) closes 
apache/metron#1153


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/7a8c2467
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/7a8c2467
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/7a8c2467

Branch: refs/heads/feature/METRON-1554-pcap-query-panel
Commit: 7a8c246748a2c9e8c5b9230800b075dd99a7f3a4
Parents: 73dc63e
Author: merrimanr 
Authored: Fri Aug 10 16:46:31 2018 -0500
Committer: rmerriman 
Committed: Fri Aug 10 16:46:31 2018 -0500

--
 .../CURRENT/configuration/metron-rest-env.xml   |  9 ++
 .../package/scripts/params/params_linux.py  |  1 +
 .../METRON/CURRENT/package/templates/metron.j2  |  1 +
 .../METRON/CURRENT/themes/metron_theme.json | 10 ++
 metron-interface/metron-rest/README.md  |  2 ++
 .../src/main/config/rest_application.yml|  1 +
 .../apache/metron/rest/MetronRestConstants.java |  1 +
 .../metron/rest/config/PcapJobSupplier.java |  2 +-
 .../rest/service/impl/PcapServiceImpl.java  | 12 ++-
 .../apache/metron/rest/mock/MockPcapJob.java|  8 +
 .../rest/service/impl/PcapServiceImplTest.java  |  7 -
 metron-platform/metron-pcap-backend/README.md   |  2 ++
 .../org/apache/metron/pcap/query/CliParser.java |  4 +++
 .../org/apache/metron/pcap/query/PcapCli.java   |  3 ++
 .../apache/metron/pcap/query/PcapCliTest.java   | 33 ++--
 .../apache/metron/pcap/config/PcapConfig.java   | 10 ++
 16 files changed, 101 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/7a8c2467/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
index 20f9767..895c091 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
@@ -192,5 +192,14 @@
 The number of pcaps written to a page/file as a result of 
a pcap query.
 10
 
+
+pcap_yarn_queue
+Pcap YARN Queue
+The YARN queue pcap jobs will be submitted 
to.
+
+
+true
+
+
 
 

http://git-wip-us.apache.org/repos/asf/metron/blob/7a8c2467/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
index 73d3469..4f8a9a7 100755
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
@@ -390,6 +390,7 @@ pcap_base_path = 
config['configurations']['metron-rest-env']['pcap_base_path']
 pcap_base_interim_result_path = 
config['configurations']['metron-rest-env']['pcap_base_interim_result_path']
 pcap_final_output_path = 
config['configurations']['metron-rest-env']['pcap_final_output_path']
 pcap_page_size = config['configurations']['metron-rest-env']['pcap_page_size']
+pcap_yarn_queue = 
config['configurations']['metron-rest-env']['pcap_yarn_queue']
 pcap_configured_flag_file = status_params.pcap_configured_flag_file
 
 # MapReduce

http://git-wip-us.apache.org/repos/asf/metron/blob/7a8c2467/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2
--
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2
index 278d

metron git commit: METRON-1702 Reload a running job in the UI (merrimanr) closes apache/metron#1156

2018-08-10 Thread rmerriman
Repository: metron
Updated Branches:
  refs/heads/feature/METRON-1554-pcap-query-panel b29833cc5 -> 05316a4d9


METRON-1702 Reload a running job in the UI (merrimanr) closes apache/metron#1156


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/05316a4d
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/05316a4d
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/05316a4d

Branch: refs/heads/feature/METRON-1554-pcap-query-panel
Commit: 05316a4d989d7546058e73b3a75eef435f2608a0
Parents: b29833c
Author: merrimanr 
Authored: Fri Aug 10 08:27:06 2018 -0500
Committer: rmerriman 
Committed: Fri Aug 10 08:27:06 2018 -0500

--
 .../src/app/pcap/model/pcap.request.ts  |  4 +-
 .../pcap-filters/pcap-filters.component.spec.ts | 60 +-
 .../pcap/pcap-filters/pcap-filters.component.ts | 26 --
 .../pcap/pcap-panel/pcap-panel.component.html   |  2 +-
 .../pcap-panel/pcap-panel.component.spec.ts | 37 +
 .../app/pcap/pcap-panel/pcap-panel.component.ts | 87 +---
 .../src/app/pcap/service/pcap.service.spec.ts   | 44 ++
 .../src/app/pcap/service/pcap.service.ts| 15 
 .../rest/service/impl/PcapServiceImpl.java  | 10 +--
 .../rest/service/impl/PcapServiceImplTest.java  | 36 
 10 files changed, 254 insertions(+), 67 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/metron/blob/05316a4d/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
--
diff --git a/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts 
b/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
index d00a6ac..8afc963 100644
--- a/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
+++ b/metron-interface/metron-alerts/src/app/pcap/model/pcap.request.ts
@@ -20,9 +20,9 @@ export class PcapRequest {
   startTimeMs: number = 0;
   endTimeMs: number = 15;
   ipSrcAddr: string = '';
-  ipSrcPort: number = 0;
+  ipSrcPort: number;
   ipDstAddr: string = '';
-  ipDstPort: number = 0;
+  ipDstPort: number;
   protocol: string = '';
   packetFilter: string = '';
   includeReverse: boolean = false;

http://git-wip-us.apache.org/repos/asf/metron/blob/05316a4d/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
--
diff --git 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
index 4336b22..c1d8664 100644
--- 
a/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
+++ 
b/metron-interface/metron-alerts/src/app/pcap/pcap-filters/pcap-filters.component.spec.ts
@@ -21,7 +21,7 @@ import { By } from '@angular/platform-browser';
 
 import { PcapFiltersComponent } from './pcap-filters.component';
 import { FormsModule } from '../../../../node_modules/@angular/forms';
-import { Component, Input, Output, EventEmitter, DebugElement } from 
'@angular/core';
+import { Component, Input, Output, EventEmitter, DebugElement, SimpleChange } 
from '@angular/core';
 import { PcapRequest } from '../model/pcap.request';
 
 @Component({
@@ -171,6 +171,14 @@ describe('PcapFiltersComponent', () => {
 component.onSubmit();
   });
 
+  it('Port fields should be missing by default', () => {
+component.search.emit = (model: PcapRequest) => {
+  expect(model.ipSrcPort).toBeFalsy();
+  expect(model.ipDstPort).toBeFalsy();
+};
+component.onSubmit();
+  });
+
   it('Filter should have an output called search', () => {
 component.search.subscribe((filterModel) => {
   expect(filterModel).toBeDefined();
@@ -194,14 +202,60 @@ describe('PcapFiltersComponent', () => {
 
expect(fixture.componentInstance.model.hasOwnProperty('startTimeMs')).toBeTruthy();
 
expect(fixture.componentInstance.model.hasOwnProperty('endTimeMs')).toBeTruthy();
 
expect(fixture.componentInstance.model.hasOwnProperty('ipSrcAddr')).toBeTruthy();
-
expect(fixture.componentInstance.model.hasOwnProperty('ipSrcPort')).toBeTruthy();
+
expect(fixture.componentInstance.model.hasOwnProperty('ipSrcPort')).toBeFalsy();
 
expect(fixture.componentInstance.model.hasOwnProperty('ipDstAddr')).toBeTruthy();
-
expect(fixture.componentInstance.model.hasOwnProperty('ipDstPort')).toBeTruthy();
+
expect(fixture.componentInstance.model.hasOwnProperty('ipDstPort')).toBeFalsy();
 
expect(fixture.componentInstance.model.hasOwnProperty('protocol')).toBeTruthy();
 
expect(fixture.componentInstance.model.hasOwnProperty('packetFilter')).toBeT

  1   2   3   >