Merge "Enforcing virtual routers, config/analytics/database nodes"
diff --git a/README.rst b/README.rst
index 4aae3e1..4dcf94d 100644
--- a/README.rst
+++ b/README.rst
@@ -651,7 +651,7 @@
       ...
 
 Cassandra listen interface
-------------------------------
+--------------------------
 
 .. code-block:: yaml
   
@@ -663,6 +663,21 @@
         rpc_port: 9160
       ....
 
+OpenContrail WebUI version >= 3.1.1
+-----------------------------------
+For OpenContrail version >= 3.1.1 and Cassandra >=2.1 we should override WebUI's cassandra port from 9160 to 9042.
+
+For appropriate node at class level:
+
+.. code-block:: yaml
+    opencontrail:
+      ....
+      web:
+        database:
+          port: 9042
+      ....
+
+
 RabbitMQ HA hosts
 ------------------
 
@@ -697,7 +712,8 @@
       compute:
         dpdk:
           enabled: true
-          taskset: 0x0000003C00003C
+          taskset: "0x0000003C00003C"
+          socket_mem: "1024,1024"
         interface:
           mac_address: 90:e2:ba:7c:22:e1
           pci: 0000:81:00.1
diff --git a/metadata/service/control/analytics.yml b/metadata/service/control/analytics.yml
index 49d2fb8..80046dc 100644
--- a/metadata/service/control/analytics.yml
+++ b/metadata/service/control/analytics.yml
@@ -21,6 +21,7 @@
     collector:
       version: ${_param:opencontrail_version}
       enabled: true
+      aaa_mode: no-auth
       bind:
         address: ${_param:cluster_local_address}
         port: 9081
diff --git a/metadata/service/control/cluster.yml b/metadata/service/control/cluster.yml
index 8a20225..1c8b28b 100644
--- a/metadata/service/control/cluster.yml
+++ b/metadata/service/control/cluster.yml
@@ -83,6 +83,7 @@
     collector:
       version: ${_param:opencontrail_version}
       enabled: true
+      aaa_mode: no-auth
       bind:
         address: ${_param:cluster_local_address}
         port: 9081
@@ -143,6 +144,9 @@
         id: 2
       - host: ${_param:cluster_node03_address}
         id: 3
+      database:
+        engine: cassandra
+        port: 9160
       identity:
         engine: keystone
         version: '2.0'
diff --git a/metadata/service/control/control.yml b/metadata/service/control/control.yml
index 6ab199c..62f8831 100644
--- a/metadata/service/control/control.yml
+++ b/metadata/service/control/control.yml
@@ -124,6 +124,9 @@
         id: 2
       - host: ${_param:cluster_node03_address}
         id: 3
+      database:
+        engine: cassandra
+        port: 9160
       identity:
         engine: keystone
         version: '2.0'
diff --git a/metadata/service/control/single.yml b/metadata/service/control/single.yml
index fe4bca8..8903522 100644
--- a/metadata/service/control/single.yml
+++ b/metadata/service/control/single.yml
@@ -74,6 +74,7 @@
     collector:
       version: ${_param:opencontrail_version}
       enabled: true
+      aaa_mode: no-auth
       bind:
         address: ${_param:single_address}
         port: 9081
@@ -122,6 +123,9 @@
       members:
       - host: ${_param:single_address}
         id: 1
+      database:
+        engine: cassandra
+        port: 9160      
       identity:
         engine: keystone
         version: '2.0'
diff --git a/opencontrail/compute.sls b/opencontrail/compute.sls
index ea66e24..53eb3fd 100644
--- a/opencontrail/compute.sls
+++ b/opencontrail/compute.sls
@@ -88,6 +88,7 @@
   - names:
     - contrail-vrouter-dpdk
     - contrail-vrouter-dpdk-init
+    - contrail-vrouter-agent
   - require_in:
     - pkg: opencontrail_compute_packages
 
@@ -116,7 +117,9 @@
 
 opencontrail_vrouter_package:
   pkg.installed:
-  - name: contrail-vrouter-dkms
+  - names:
+    - contrail-vrouter-dkms
+    - contrail-vrouter-agent
   - require_in:
     - pkg: opencontrail_compute_packages
 
diff --git a/opencontrail/files/3.0/config.global.js b/opencontrail/files/3.0/config.global.js
index 5b0f63d..178343a 100644
--- a/opencontrail/files/3.0/config.global.js
+++ b/opencontrail/files/3.0/config.global.js
@@ -187,7 +187,7 @@
 /* Cassandra Server */
 config.cassandra = {};
 config.cassandra.server_ips = [{%- for member in web.members %}'{{ member.host }}'{% if not loop.last %},{% endif %}{%- endfor %}];
-config.cassandra.server_port = '9160';
+config.cassandra.server_port = '{{ web.database.port }}';
 config.cassandra.enable_edit = false;
 
 /* KUE Job Scheduler */
diff --git a/opencontrail/files/3.0/contrail-analytics-api.conf b/opencontrail/files/3.0/contrail-analytics-api.conf
index 3ccc887..14c261b 100644
--- a/opencontrail/files/3.0/contrail-analytics-api.conf
+++ b/opencontrail/files/3.0/contrail-analytics-api.conf
@@ -11,6 +11,8 @@
 log_category = 
 log_file = /var/log/contrail/contrail-analytics-api.log
 
+aaa_mode = {{ collector.get('aaa_mode', 'no-auth') }}
+
 # Time-to-live in hours of the various data stored by collector into
 # cassandra
 # analytics_config_audit_ttl, if not set (or set to -1), defaults to analytics_data_ttl
diff --git a/opencontrail/files/3.0/contrail-vrouter-dpdk.ini b/opencontrail/files/3.0/contrail-vrouter-dpdk.ini
index 781cb1c..b44d437 100644
--- a/opencontrail/files/3.0/contrail-vrouter-dpdk.ini
+++ b/opencontrail/files/3.0/contrail-vrouter-dpdk.ini
@@ -1,6 +1,6 @@
 {%- from "opencontrail/map.jinja" import compute with context %}
 [program:contrail-vrouter-dpdk]
-command=taskset {{ compute.dpdk.taskset }} /usr/bin/contrail-vrouter-dpdk --no-daemon --vr_flow_entries=2097152 --vr_mpls_labels 6000 --socket-mem 1024,1024
+command=taskset {{ compute.dpdk.taskset }} /usr/bin/contrail-vrouter-dpdk --no-daemon --vr_flow_entries=2097152 --vr_mpls_labels 6000 --socket-mem {{ compute.dpdk.socket_mem }}
 priority=410
 autostart=true
 killasgroup=true
diff --git a/opencontrail/files/grafana_dashboards/contrail_influxdb.json b/opencontrail/files/grafana_dashboards/contrail_influxdb.json
index 14c122b..3bdfe8f 100644
--- a/opencontrail/files/grafana_dashboards/contrail_influxdb.json
+++ b/opencontrail/files/grafana_dashboards/contrail_influxdb.json
@@ -1101,7 +1101,7 @@
         },
         {
           "aliasColors": {
-            "lma_components_processes.mean": "#1F78C1"
+            "process_processes.mean": "#1F78C1"
           },
           "bars": false,
           "datasource": null,
@@ -1152,7 +1152,7 @@
                   "type": "fill"
                 }
               ],
-              "measurement": "lma_components_processes",
+              "measurement": "process_processes",
               "policy": "default",
               "refId": "A",
               "resultFormat": "time_series",
diff --git a/opencontrail/map.jinja b/opencontrail/map.jinja
index 53aee1e..5ff3153 100644
--- a/opencontrail/map.jinja
+++ b/opencontrail/map.jinja
@@ -25,7 +25,7 @@
 
 {% set compute = salt['grains.filter_by']({
     'Debian': {
-        'pkgs': ['contrail-vrouter-agent', 'contrail-utils', 'iproute2', 'haproxy'],
+        'pkgs': ['contrail-utils', 'iproute2', 'haproxy'],
         'services': ['supervisor-vrouter'],
         'dpdk': {
             'enabled': False
diff --git a/opencontrail/meta/heka.yml b/opencontrail/meta/heka.yml
index a5cd0c9..0e00f15 100644
--- a/opencontrail/meta/heka.yml
+++ b/opencontrail/meta/heka.yml
@@ -175,11 +175,40 @@
       splitter: "TokenSplitter"
   {%- endif %}
   {%- if control_processes is defined or
+         collector_processes is defined or
          compute_processes is defined or
          database_processes is defined or
          web_processes is defined %}
 metric_collector:
   trigger:
+    {%- if collector_processes is defined %}
+    contrail_collector_api_local_endpoint:
+      description: 'Contrail Collector API is locally down'
+      severity: down
+      rules:
+      - metric: http_check
+        field:
+          service: contrail-collector
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+      {%- for contrail_process in collector_processes %}
+    {{ contrail_process|replace("-", "_") }}:
+      description: "There is no {{ contrail_process }} process running"
+      severity: down
+      rules:
+      - metric: lma_components_processes
+        field:
+          service: {{ contrail_process }}
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+      {%- endfor %}
+    {%- endif %}
     {%- if control_processes is defined %}
     contrail_api_local_endpoint:
       description: 'Contrail API is locally down'
@@ -205,18 +234,6 @@
         window: 60
         periods: 0
         function: last
-    contrail_collector_api_local_endpoint:
-      description: 'Contrail Collector API is locally down'
-      severity: down
-      rules:
-      - metric: http_check
-        field:
-          service: contrail-collector
-        relational_operator: '=='
-        threshold: 0
-        window: 60
-        periods: 0
-        function: last
     xmpp_number_of_sessions_up:
       description: "There are no active XMPP sessions "
       severity: warning
@@ -302,7 +319,7 @@
       description: "There is no {{ contrail_process }} process running"
       severity: down
       rules:
-      - metric: lma_components_processes
+      - metric: process_processes
         field:
           service: {{ contrail_process }}
         relational_operator: '=='
@@ -542,7 +559,7 @@
       description: "There is no {{ contrail_process }} process running"
       severity: down
       rules:
-      - metric: lma_components_processes
+      - metric: process_processes
         field:
           service: {{ contrail_process }}
         relational_operator: '=='
@@ -568,7 +585,7 @@
       description: "There is no {{ contrail_process }} process running"
       severity: down
       rules:
-      - metric: lma_components_processes
+      - metric: process_processes
         field:
           service: {{ contrail_process }}
         relational_operator: '=='
@@ -584,7 +601,7 @@
       description: "There is no {{ contrail_process }} process running"
       severity: down
       rules:
-      - metric: lma_components_processes
+      - metric: process_processes
         field:
           service: {{ contrail_process }}
         relational_operator: '=='
@@ -595,6 +612,22 @@
       {%- endfor %}
     {%- endif %}
   alarm:
+    {%- if collector_processes is defined %}
+    contrail_collector_api_endpoint:
+      alerting: enabled
+      triggers:
+      - contrail_collector_api_local_endpoint
+      dimension:
+        service: contrail-collector-api-endpoint
+      {%- for contrail_process in collector_processes %}
+    {{ contrail_process|replace("-", "_") }}:
+      alerting: enabled
+      triggers:
+      - {{ contrail_process|replace("-", "_") }}
+      dimension:
+        process: {{ contrail_process }}
+      {%- endfor %}
+    {%- endif %}
     {%- if control_processes is defined %}
     contrail_api_endpoint:
       alerting: enabled
@@ -608,12 +641,6 @@
       - contrail_discovery_api_local_endpoint
       dimension:
         service: contrail-discovery-api-endpoint
-    contrail_collector_api_endpoint:
-      alerting: enabled
-      triggers:
-      - contrail_collector_api_local_endpoint
-      dimension:
-        service: contrail-collector-api-endpoint
       {%- for contrail_process in control_processes %}
     {{ contrail_process|replace("-", "_") }}:
       alerting: enabled
@@ -667,9 +694,49 @@
     {%- endif %}
   {%- endif %}
   {%- if control_processes is defined or
+         collector_processes is defined or
          compute_processes is defined %}
 aggregator:
   alarm_cluster:
+    {%- if collector_processes is defined %}
+    contrail_collector_api_endpoint:
+      policy: availability_of_members
+      alerting: enabled
+      group_by: hostname
+      match:
+        service: contrail-collector-api-endpoint
+      members:
+      - contrail_collector_api_endpoint
+      dimension:
+        service: contrail-collector
+        nagios_host: 01-service-clusters
+      {%- for contrail_process in collector_processes %}
+    contrail_{{ contrail_process|replace("-", "_") }}:
+      policy: availability_of_members
+      alerting: enabled
+      group_by: hostname
+      match:
+        process: {{ contrail_process }}
+      members:
+      - {{ contrail_process|replace("-", "_") }}
+      dimension:
+        service: contrail-collector
+        nagios_host: 01-service-clusters
+      {%- endfor %}
+    contrail_collector:
+      policy: highest_severity
+      alerting: enabled_with_notification
+      match:
+        service: contrail-collector
+      members:
+      - contrail_collector_api_endpoint
+      {%- for contrail_process in collector_processes %}
+      - contrail_{{ contrail_process|replace("-", "_") }}
+      {%- endfor %}
+      dimension:
+        cluster_name: contrail-collector
+        nagios_host: 00-top-clusters
+    {%- endif %}
     {%- if control_processes is defined %}
     contrail_api_endpoint:
       policy: availability_of_members
@@ -693,17 +760,6 @@
       dimension:
         service: contrail-control
         nagios_host: 01-service-clusters
-    contrail_collector_api_endpoint:
-      policy: availability_of_members
-      alerting: enabled
-      group_by: hostname
-      match:
-        service: contrail-collector-api-endpoint
-      members:
-      - contrail_collector_api_endpoint
-      dimension:
-        service: contrail-control
-        nagios_host: 01-service-clusters
       {%- for contrail_process in control_processes %}
     contrail_{{ contrail_process|replace("-", "_") }}:
       policy: availability_of_members
@@ -725,7 +781,6 @@
       members:
       - contrail_api_endpoint
       - contrail_discovery_api_endpoint
-      - contrail_collector_api_endpoint
       {%- for contrail_process in control_processes %}
       - contrail_{{ contrail_process|replace("-", "_") }}
       {%- endfor %}
diff --git a/tests/pillar/vrouter_dpdk.sls b/tests/pillar/vrouter_dpdk.sls
index 35f57f3..8a6c17f 100644
--- a/tests/pillar/vrouter_dpdk.sls
+++ b/tests/pillar/vrouter_dpdk.sls
@@ -16,7 +16,8 @@
     enabled: True
     dpdk:
       enabled: True
-      taskset: 0x0000003C00003C
+      taskset: "0x0000003C00003C"
+      socket_mem: "1024,1024"
     discovery:
       host: 127.0.0.1
     bind: