fixes for contrail 3.0 package dependencies and keystone v3. Supervisor files missing in official contrail-packages.

Change-Id: Ie1e6071bdbe2bac2f6814048d9140c2d9e9c483f
diff --git a/opencontrail/collector.sls b/opencontrail/collector.sls
index 96b4515..c6caf50 100644
--- a/opencontrail/collector.sls
+++ b/opencontrail/collector.sls
@@ -71,6 +71,26 @@
   - require:
     - pkg: opencontrail_collector_packages
 
+{% if collector.version == 3.0 %}
+
+/etc/contrail/supervisord_analytics_files/contrail-analytics-nodemgr.ini:
+  file.managed:
+  - source: salt://opencontrail/files/{{ collector.version }}/collector/contrail-analytics-nodemgr.ini
+  - require:
+    - pkg: opencontrail_collector_packages
+  - require_in:
+    - service: opencontrail_collector_services
+
+/etc/contrail/supervisord_analytics.conf:
+  file.managed:
+  - source: salt://opencontrail/files/{{ collector.version }}/collector/supervisord_analytics.conf
+  - require:
+    - pkg: opencontrail_collector_packages
+  - require_in:
+    - service: opencontrail_collector_services
+
+{% endif %}
+
 opencontrail_collector_services:
   service.running:
   - enable: true
diff --git a/opencontrail/common.sls b/opencontrail/common.sls
index e9cf240..c027e13 100644
--- a/opencontrail/common.sls
+++ b/opencontrail/common.sls
@@ -66,7 +66,7 @@
 
 fs.file-max:
   sysctl.present:
-  - value: 65535
+  - value: 124165
 
 security_limits_conf:
   cmd.run:
@@ -112,4 +112,4 @@
   - template: jinja
   - require:
     - file: /etc/contrail
-{%- endif %}
\ No newline at end of file
+{%- endif %}
diff --git a/opencontrail/config.sls b/opencontrail/config.sls
index ecf2fc5..3b6f2eb 100644
--- a/opencontrail/config.sls
+++ b/opencontrail/config.sls
@@ -134,6 +134,33 @@
   - require:
     - pkg: opencontrail_config_packages
 
+{% if config.version == 3.0 %}
+
+/etc/contrail/supervisord_config_files/contrail-config-nodemgr.ini:
+  file.managed:
+  - source: salt://opencontrail/files/{{ config.version }}/config/contrail-config-nodemgr.ini
+  - require:
+    - pkg: opencontrail_config_packages
+  - require_in:
+    - service: opencontrail_config_services
+
+/etc/contrail/supervisord_config_files/ifmap.ini:
+  file.absent:
+  - require:
+    - pkg: opencontrail_config_packages
+  - require_in:
+    - service: opencontrail_config_services
+
+/etc/contrail/supervisord_config.conf:
+  file.managed:
+  - source: salt://opencontrail/files/{{ config.version }}/config/supervisord_config.conf
+  - require:
+    - pkg: opencontrail_config_packages
+  - require_in:
+    - service: opencontrail_config_services
+
+{% endif %}
+
 opencontrail_config_services:
   service.running:
   - enable: true
@@ -149,4 +176,4 @@
     - file: /etc/sudoers.d/contrail_sudoers
 
 
-{%- endif %}
\ No newline at end of file
+{%- endif %}
diff --git a/opencontrail/control.sls b/opencontrail/control.sls
index c988b9e..08da0d7 100644
--- a/opencontrail/control.sls
+++ b/opencontrail/control.sls
@@ -44,6 +44,26 @@
   - require:
     - pkg: opencontrail_control_packages
 
+{% if control.version == 3.0 %}
+
+/etc/contrail/supervisord_control_files/contrail-control-nodemgr.ini:
+  file.managed:
+  - source: salt://opencontrail/files/{{ control.version }}/control/contrail-control-nodemgr.ini
+  - require:
+    - pkg: opencontrail_control_packages
+  - require_in:
+    - service: opencontrail_control_services
+
+/etc/contrail/supervisord_control.conf:
+  file.managed:
+  - source: salt://opencontrail/files/{{ control.version }}/control/supervisord_control.conf
+  - require:
+    - pkg: opencontrail_control_packages
+  - require_in:
+    - service: opencontrail_control_services
+
+{% endif %}
+
 opencontrail_control_services:
   service.running:
   - enable: true
diff --git a/opencontrail/database.sls b/opencontrail/database.sls
index dc2e479..93662e2 100644
--- a/opencontrail/database.sls
+++ b/opencontrail/database.sls
@@ -93,6 +93,14 @@
   - require_in:
     - service: opencontrail_database_services
 
+/etc/contrail/supervisord_database_files/contrail-database-nodemgr.ini:
+  file.managed:
+  - source: salt://opencontrail/files/{{ database.version }}/database/contrail-database-nodemgr.ini
+  - require:
+    - pkg: opencontrail_database_packages
+  - require_in:
+    - service: opencontrail_database_services
+
 {% endif %}
 
 opencontrail_database_services:
diff --git a/opencontrail/files/3.0/collector/contrail-analytics-nodemgr.ini b/opencontrail/files/3.0/collector/contrail-analytics-nodemgr.ini
new file mode 100755
index 0000000..0285e66
--- /dev/null
+++ b/opencontrail/files/3.0/collector/contrail-analytics-nodemgr.ini
@@ -0,0 +1,35 @@
+; The below sample eventlistener section shows all possible
+; eventlistener subsection values, create one or more 'real'
+; eventlistener: sections to be able to handle event notifications
+; sent by supervisor.
+
+[eventlistener:contrail-analytics-nodemgr]
+command=/bin/bash -c "exec /usr/bin/contrail-nodemgr"
+;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
+;numprocs=1                    ; number of processes copies to start (def 1)
+events=PROCESS_COMMUNICATION,PROCESS_STATE,TICK_60
+buffer_size=10000                ; event buffer queue size (default 10)
+;directory=/tmp                ; directory to cwd to before exec (def no cwd)
+;umask=022                     ; umask for process (default None)
+;priority=-1                   ; the relative start priority (default -1)
+;autostart=true                ; start at supervisord start (default: true)
+;autorestart=unexpected        ; whether/when to restart (default: unexpected)
+;startsecs=1                   ; number of secs prog must stay running (def. 1)
+;startretries=3                ; max # of serial start failures (default 3)
+;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
+;stopsignal=QUIT               ; signal used to kill process (default TERM)
+;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
+;stopasgroup=false             ; send stop signal to the UNIX process group (default false)
+;killasgroup=false             ; SIGKILL the UNIX process group (def false)
+;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
+stdout_logfile=/var/log/contrail/contrail-analytics-nodemgr-stdout.log        ; stdout log path, NONE for none; default AUTO
+;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
+;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
+;stdout_events_enabled=false   ; emit events on stdout writes (default false)
+stderr_logfile=/var/log/contrail/contrail-analytics-nodemgr-stderr.log ; stderr log path, NONE for none; default AUTO
+;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
+;stderr_logfile_backups        ; # of stderr logfile backups (default 10)
+;stderr_events_enabled=false   ; emit events on stderr writes (default false)
+;environment=A=1,B=2           ; process environment additions
+;serverurl=AUTO                ; override serverurl computation (childutils)
+
diff --git a/opencontrail/files/3.0/collector/supervisord_analytics.conf b/opencontrail/files/3.0/collector/supervisord_analytics.conf
new file mode 100644
index 0000000..31de3c2
--- /dev/null
+++ b/opencontrail/files/3.0/collector/supervisord_analytics.conf
@@ -0,0 +1,104 @@
+; Sample supervisor config file.
+;
+; For more information on the config file, please see:
+; http://supervisord.org/configuration.html
+;
+; Note: shell expansion ("~" or "$HOME") is not supported.  Environment
+; variables can be expanded using this syntax: "%(ENV_HOME)s".
+
+[unix_http_server]
+file=/tmp/supervisord_analytics.sock    ; (the path to the socket file)
+chmod=0700                 ; socket file mode (default 0700)
+;chown=nobody:nogroup       ; socket file uid:gid owner
+;username=user              ; (default is no username (open server))
+;password=123               ; (default is no password (open server))
+
+;[inet_http_server]         ; inet (TCP) server disabled by default
+;port=127.0.0.1:9001        ; Port for analytics (ip_address:port specifier, *:port for all iface)
+;username=user              ; (default is no username (open server))
+;password=123               ; (default is no password (open server))
+
+[supervisord]
+logfile=/var/log/contrail/supervisord-analytics.log   ; (main log file;default $CWD/supervisord.log)
+logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)
+logfile_backups=3            ; (num of main logfile rotation backups;default 10)
+loglevel=info                ; (log level;default info; others: debug,warn,trace)
+pidfile=/var/run/supervisord-analytics.pid   ; (supervisord pidfile;default supervisord.pid)
+nodaemon=false               ; (start in foreground if true;default false)
+minfds=10240
+minprocs=200                 ; (min. avail process descriptors;default 200)
+;umask=022                   ; (process file creation umask;default 022)
+;user=chrism                 ; (default is current user, required if root)
+;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')
+;directory=/tmp              ; (default is not to cd during start)
+nocleanup=true              ; (don't clean up tempfiles at start;default false)
+childlogdir=/var/log/contrail ; ('AUTO' child log dir, default $TEMP)
+;environment=KEY=value       ; (key value pairs to add to environment)
+;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)
+
+; the below section must remain in the config file for RPC
+; (supervisorctl/web interface) to work, additional interfaces may be
+; added by defining them in separate rpcinterface: sections
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisord_analytics.sock ; use a unix:// URL  for a unix socket
+;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
+;username=chris              ; should be same as http_username if set
+;password=123                ; should be same as http_password if set
+;prompt=mysupervisor         ; cmd line prompt (default "supervisor")
+;history_file=~/.sc_history  ; use readline history if available
+
+; The below sample program section shows all possible program subsection values,
+; create one or more 'real' program: sections to be able to control them under
+; supervisor.
+
+;[program:theprogramname]
+;command=/bin/cat              ; the program (relative uses PATH, can take args)
+;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
+;numprocs=1                    ; number of processes copies to start (def 1)
+;directory=/tmp                ; directory to cwd to before exec (def no cwd)
+;umask=022                     ; umask for process (default None)
+;priority=999                  ; the relative start priority (default 999)
+;autostart=true                ; start at supervisord start (default: true)
+;autorestart=unexpected        ; whether/when to restart (default: unexpected)
+;startsecs=1                   ; number of secs prog must stay running (def. 1)
+;startretries=3                ; max # of serial start failures (default 3)
+;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
+;stopsignal=QUIT               ; signal used to kill process (default TERM)
+;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
+;stopasgroup=false             ; send stop signal to the UNIX process group (default false)
+;killasgroup=false             ; SIGKILL the UNIX process group (def false)
+;user=chrism                   ; setuid to this UNIX account to run the program
+;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
+;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
+;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
+;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
+;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
+;stdout_events_enabled=false   ; emit events on stdout writes (default false)
+;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
+;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
+;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)
+;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
+;stderr_events_enabled=false   ; emit events on stderr writes (default false)
+;environment=A=1,B=2           ; process environment additions (def no adds)
+;serverurl=AUTO                ; override serverurl computation (childutils)
+
+; The below sample group section shows all possible group values,
+; create one or more 'real' group: sections to create "heterogeneous"
+; process groups.
+
+;[group:thegroupname]
+;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions
+;priority=999                  ; the relative start priority (default 999)
+
+; The [include] section can just contain the "files" setting.  This
+; setting can list multiple files (separated by whitespace or
+; newlines).  It can also contain wildcards.  The filenames are
+; interpreted as relative to this file.  Included files *cannot*
+; include files themselves.
+
+[include]
+files = /etc/contrail/supervisord_analytics_files/*.ini
+
diff --git a/opencontrail/files/3.0/config/contrail-config-nodemgr.ini b/opencontrail/files/3.0/config/contrail-config-nodemgr.ini
new file mode 100755
index 0000000..7f57ed6
--- /dev/null
+++ b/opencontrail/files/3.0/config/contrail-config-nodemgr.ini
@@ -0,0 +1,38 @@
+; The below sample eventlistener section shows all possible
+; eventlistener subsection values, create one or more 'real'
+; eventlistener: sections to be able to handle event notifications
+; sent by supervisor.
+
+[eventlistener:contrail-config-nodemgr]
+command=/bin/bash -c "exec python /usr/bin/contrail-nodemgr --nodetype=contrail-config"
+events=PROCESS_COMMUNICATION,PROCESS_STATE,TICK_60
+;[eventlistener:theeventlistenername]
+;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)
+;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
+;numprocs=1                    ; number of processes copies to start (def 1)
+;events=EVENT                  ; event notif. types to subscribe to (req'd)
+buffer_size=10000                ; event buffer queue size (default 10)
+;directory=/tmp                ; directory to cwd to before exec (def no cwd)
+;umask=022                     ; umask for process (default None)
+;priority=-1                   ; the relative start priority (default -1)
+;autostart=true                ; start at supervisord start (default: true)
+;autorestart=unexpected        ; whether/when to restart (default: unexpected)
+;startsecs=1                   ; number of secs prog must stay running (def. 1)
+;startretries=3                ; max # of serial start failures (default 3)
+;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
+;stopsignal=QUIT               ; signal used to kill process (default TERM)
+;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
+;stopasgroup=false             ; send stop signal to the UNIX process group (default false)
+;killasgroup=false             ; SIGKILL the UNIX process group (def false)
+;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
+stdout_logfile=/var/log/contrail/contrail-config-nodemgr-stdout.log       ; stdout log path, NONE for none; default AUTO
+;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
+;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
+;stdout_events_enabled=false   ; emit events on stdout writes (default false)
+stderr_logfile=/var/log/contrail/contrail-config-nodemgr-stderr.log ; stderr log path, NONE for none; default AUTO
+;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
+;stderr_logfile_backups        ; # of stderr logfile backups (default 10)
+;stderr_events_enabled=false   ; emit events on stderr writes (default false)
+;environment=A=1,B=2           ; process environment additions
+;serverurl=AUTO                ; override serverurl computation (childutils)
+
diff --git a/opencontrail/files/3.0/config/supervisord_config.conf b/opencontrail/files/3.0/config/supervisord_config.conf
new file mode 100644
index 0000000..5295900
--- /dev/null
+++ b/opencontrail/files/3.0/config/supervisord_config.conf
@@ -0,0 +1,104 @@
+; Sample supervisor config file.
+;
+; For more information on the config file, please see:
+; http://supervisord.org/configuration.html
+;
+; Note: shell expansion ("~" or "$HOME") is not supported.  Environment
+; variables can be expanded using this syntax: "%(ENV_HOME)s".
+
+[unix_http_server]
+file=/tmp/supervisord_config.sock   ; (the path to the socket file)
+chmod=0700                 ; socket file mode (default 0700)
+;chown=nobody:nogroup       ; socket file uid:gid owner
+;username=user              ; (default is no username (open server))
+;password=123               ; (default is no password (open server))
+
+;[inet_http_server]         ; inet (TCP) server disabled by default
+;port=127.0.0.1:9001        ; Port for analytics (ip_address:port specifier, *:port for all iface)
+;username=user              ; (default is no username (open server))
+;password=123               ; (default is no password (open server))
+
+[supervisord]
+logfile=/var/log/contrail/supervisord-config.log ; (main log file;default $CWD/supervisord.log)
+logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)
+logfile_backups=3            ; (num of main logfile rotation backups;default 10)
+loglevel=info                ; (log level;default info; others: debug,warn,trace)
+pidfile=/var/run/supervisord-config.pid   ; (supervisord pidfile;default supervisord.pid)
+nodaemon=false               ; (start in foreground if true;default false)
+minfds=10240
+minprocs=200                 ; (min. avail process descriptors;default 200)
+;umask=022                   ; (process file creation umask;default 022)
+;user=chrism                 ; (default is current user, required if root)
+;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')
+;directory=/tmp              ; (default is not to cd during start)
+nocleanup=true              ; (don't clean up tempfiles at start;default false)
+childlogdir=/var/log/contrail ; ('AUTO' child log dir, default $TEMP)
+;environment=KEY=value       ; (key value pairs to add to environment)
+;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)
+
+; the below section must remain in the config file for RPC
+; (supervisorctl/web interface) to work, additional interfaces may be
+; added by defining them in separate rpcinterface: sections
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisord_config.sock ; use a unix:// URL  for a unix socket
+;serverurl=http://127.0.0.1:9004 ; use an http:// url to specify an inet socket
+;username=chris              ; should be same as http_username if set
+;password=123                ; should be same as http_password if set
+;prompt=mysupervisor         ; cmd line prompt (default "supervisor")
+;history_file=~/.sc_history  ; use readline history if available
+
+; The below sample program section shows all possible program subsection values,
+; create one or more 'real' program: sections to be able to control them under
+; supervisor.
+
+;[program:theprogramname]
+;command=/bin/cat              ; the program (relative uses PATH, can take args)
+;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
+;numprocs=1                    ; number of processes copies to start (def 1)
+;directory=/tmp                ; directory to cwd to before exec (def no cwd)
+;umask=022                     ; umask for process (default None)
+;priority=999                  ; the relative start priority (default 999)
+;autostart=true                ; start at supervisord start (default: true)
+;autorestart=unexpected        ; whether/when to restart (default: unexpected)
+;startsecs=1                   ; number of secs prog must stay running (def. 1)
+;startretries=3                ; max # of serial start failures (default 3)
+;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
+;stopsignal=QUIT               ; signal used to kill process (default TERM)
+;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
+;stopasgroup=false             ; send stop signal to the UNIX process group (default false)
+;killasgroup=false             ; SIGKILL the UNIX process group (def false)
+;user=chrism                   ; setuid to this UNIX account to run the program
+;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
+;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
+;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
+;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
+;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
+;stdout_events_enabled=false   ; emit events on stdout writes (default false)
+;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
+;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
+;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)
+;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
+;stderr_events_enabled=false   ; emit events on stderr writes (default false)
+;environment=A=1,B=2           ; process environment additions (def no adds)
+;serverurl=AUTO                ; override serverurl computation (childutils)
+
+; The below sample group section shows all possible group values,
+; create one or more 'real' group: sections to create "heterogeneous"
+; process groups.
+
+;[group:thegroupname]
+;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions
+;priority=999                  ; the relative start priority (default 999)
+
+; The [include] section can just contain the "files" setting.  This
+; setting can list multiple files (separated by whitespace or
+; newlines).  It can also contain wildcards.  The filenames are
+; interpreted as relative to this file.  Included files *cannot*
+; include files themselves.
+
+[include]
+files = /etc/contrail/supervisord_config_files/*.ini
+
diff --git a/opencontrail/files/3.0/contrail-api.conf b/opencontrail/files/3.0/contrail-api.conf
index bf7f4e2..52c4f69 100644
--- a/opencontrail/files/3.0/contrail-api.conf
+++ b/opencontrail/files/3.0/contrail-api.conf
@@ -39,4 +39,8 @@
 admin_token={{ config.identity.token }}
 admin_tenant_name={{ config.identity.tenant }}
 insecure=True
+{%- if config.identity.version == "3" %}
+project_name={{ config.identity.tenant }}
+auth_url=http://{{ config.identity.host }}:{{ config.identity.port }}/v3
+{%- endif %}
 {%- endif %}
\ No newline at end of file
diff --git a/opencontrail/files/3.0/control/contrail-control-nodemgr.ini b/opencontrail/files/3.0/control/contrail-control-nodemgr.ini
new file mode 100755
index 0000000..be08379
--- /dev/null
+++ b/opencontrail/files/3.0/control/contrail-control-nodemgr.ini
@@ -0,0 +1,37 @@
+; The below sample eventlistener section shows all possible
+; eventlistener subsection values, create one or more 'real'
+; eventlistener: sections to be able to handle event notifications
+; sent by supervisor.
+
+[eventlistener:contrail-control-nodemgr]
+command=/bin/bash -c "exec python /usr/bin/contrail-nodemgr --nodetype=contrail-control" 
+events=PROCESS_COMMUNICATION,PROCESS_STATE,TICK_60
+;[eventlistener:theeventlistenername]
+;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)
+;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
+;numprocs=1                    ; number of processes copies to start (def 1)
+;events=EVENT                  ; event notif. types to subscribe to (req'd)
+buffer_size=10000                ; event buffer queue size (default 10)
+;directory=/tmp                ; directory to cwd to before exec (def no cwd)
+;umask=022                     ; umask for process (default None)
+;priority=-1                   ; the relative start priority (default -1)
+;autostart=true                ; start at supervisord start (default: true)
+;autorestart=unexpected        ; whether/when to restart (default: unexpected)
+;startsecs=1                   ; number of secs prog must stay running (def. 1)
+;startretries=3                ; max # of serial start failures (default 3)
+;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
+;stopsignal=QUIT               ; signal used to kill process (default TERM)
+;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
+;stopasgroup=false             ; send stop signal to the UNIX process group (default false)
+;killasgroup=false             ; SIGKILL the UNIX process group (def false)
+;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
+stdout_logfile=/var/log/contrail/contrail-control-nodemgr-stdout.log ; stdout log path, NONE for none; default AUTO
+;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
+;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
+;stdout_events_enabled=false   ; emit events on stdout writes (default false)
+stderr_logfile=/var/log/contrail/contrail-control-nodemgr-stderr.log ; stderr log path, NONE for none; default AUTO
+;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
+;stderr_logfile_backups        ; # of stderr logfile backups (default 10)
+;stderr_events_enabled=false   ; emit events on stderr writes (default false)
+;environment=A=1,B=2           ; process environment additions
+;serverurl=AUTO                ; override serverurl computation (childutils)
diff --git a/opencontrail/files/3.0/control/supervisord_control.conf b/opencontrail/files/3.0/control/supervisord_control.conf
new file mode 100644
index 0000000..683637d
--- /dev/null
+++ b/opencontrail/files/3.0/control/supervisord_control.conf
@@ -0,0 +1,104 @@
+; Sample supervisor config file.
+;
+; For more information on the config file, please see:
+; http://supervisord.org/configuration.html
+;
+; Note: shell expansion ("~" or "$HOME") is not supported.  Environment
+; variables can be expanded using this syntax: "%(ENV_HOME)s".
+
+[unix_http_server]
+file=/tmp/supervisord_control.sock   ; (the path to the socket file)
+chmod=0700                 ; socket file mode (default 0700)
+;chown=nobody:nogroup       ; socket file uid:gid owner
+;username=user              ; (default is no username (open server))
+;password=123               ; (default is no password (open server))
+
+;[inet_http_server]         ; inet (TCP) server disabled by default
+;port=127.0.0.1:9001        ; Port for analytics (ip_address:port specifier, *:port for all iface)
+;username=user              ; (default is no username (open server))
+;password=123               ; (default is no password (open server))
+
+[supervisord]
+logfile=/var/log/contrail/supervisord-control.log ; (main log file;default $CWD/supervisord.log)
+logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)
+logfile_backups=3            ; (num of main logfile rotation backups;default 10)
+loglevel=info                ; (log level;default info; others: debug,warn,trace)
+pidfile=/var/run/supervisord_control.pid ; (supervisord pidfile;default supervisord.pid)
+nodaemon=false               ; (start in foreground if true;default false)
+minfds=10240
+minprocs=200                 ; (min. avail process descriptors;default 200)
+;umask=022                   ; (process file creation umask;default 022)
+;user=chrism                 ; (default is current user, required if root)
+;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')
+;directory=/tmp              ; (default is not to cd during start)
+nocleanup=true              ; (don't clean up tempfiles at start;default false)
+childlogdir=/var/log/contrail ; ('AUTO' child log dir, default $TEMP)
+;environment=KEY=value       ; (key value pairs to add to environment)
+;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)
+
+; the below section must remain in the config file for RPC
+; (supervisorctl/web interface) to work, additional interfaces may be
+; added by defining them in separate rpcinterface: sections
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisord_control.sock ; use a unix:// URL  for a unix socket
+;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
+;username=chris              ; should be same as http_username if set
+;password=123                ; should be same as http_password if set
+;prompt=mysupervisor         ; cmd line prompt (default "supervisor")
+;history_file=~/.sc_history  ; use readline history if available
+
+; The below sample program section shows all possible program subsection values,
+; create one or more 'real' program: sections to be able to control them under
+; supervisor.
+
+;[program:theprogramname]
+;command=/bin/cat              ; the program (relative uses PATH, can take args)
+;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
+;numprocs=1                    ; number of processes copies to start (def 1)
+;directory=/tmp                ; directory to cwd to before exec (def no cwd)
+;umask=022                     ; umask for process (default None)
+;priority=999                  ; the relative start priority (default 999)
+;autostart=true                ; start at supervisord start (default: true)
+;autorestart=unexpected        ; whether/when to restart (default: unexpected)
+;startsecs=1                   ; number of secs prog must stay running (def. 1)
+;startretries=3                ; max # of serial start failures (default 3)
+;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
+;stopsignal=QUIT               ; signal used to kill process (default TERM)
+;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
+;stopasgroup=false             ; send stop signal to the UNIX process group (default false)
+;killasgroup=false             ; SIGKILL the UNIX process group (def false)
+;user=chrism                   ; setuid to this UNIX account to run the program
+;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
+;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
+;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
+;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
+;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
+;stdout_events_enabled=false   ; emit events on stdout writes (default false)
+;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
+;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
+;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)
+;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
+;stderr_events_enabled=false   ; emit events on stderr writes (default false)
+;environment=A=1,B=2           ; process environment additions (def no adds)
+;serverurl=AUTO                ; override serverurl computation (childutils)
+
+; The below sample group section shows all possible group values,
+; create one or more 'real' group: sections to create "heterogeneous"
+; process groups.
+
+;[group:thegroupname]
+;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions
+;priority=999                  ; the relative start priority (default 999)
+
+; The [include] section can just contain the "files" setting.  This
+; setting can list multiple files (separated by whitespace or
+; newlines).  It can also contain wildcards.  The filenames are
+; interpreted as relative to this file.  Included files *cannot*
+; include files themselves.
+
+[include]
+files = /etc/contrail/supervisord_control_files/*.ini
+
diff --git a/opencontrail/files/3.0/database/contrail-database-nodemgr.ini b/opencontrail/files/3.0/database/contrail-database-nodemgr.ini
new file mode 100755
index 0000000..af67e91
--- /dev/null
+++ b/opencontrail/files/3.0/database/contrail-database-nodemgr.ini
@@ -0,0 +1,37 @@
+; The below sample eventlistener section shows all possible
+; eventlistener subsection values, create one or more 'real'
+; eventlistener: sections to be able to handle event notifications
+; sent by supervisor.
+
+[eventlistener:contrail-database-nodemgr]
+command=/bin/bash -c "exec python /usr/bin/contrail-nodemgr --nodetype=contrail-database"
+environment_file= /etc/contrail/database_nodemgr_param
+
+;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
+;numprocs=1                    ; number of processes copies to start (def 1)
+events=PROCESS_COMMUNICATION,PROCESS_STATE,TICK_60
+buffer_size=10000                ; event buffer queue size (default 10)
+;directory=/tmp                ; directory to cwd to before exec (def no cwd)
+;umask=022                     ; umask for process (default None)
+;priority=-1                   ; the relative start priority (default -1)
+;autostart=true                ; start at supervisord start (default: true)
+;autorestart=unexpected        ; whether/when to restart (default: unexpected)
+;startsecs=1                   ; number of secs prog must stay running (def. 1)
+;startretries=3                ; max # of serial start failures (default 3)
+;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
+;stopsignal=QUIT               ; signal used to kill process (default TERM)
+;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
+;stopasgroup=false             ; send stop signal to the UNIX process group (default false)
+;killasgroup=false             ; SIGKILL the UNIX process group (def false)
+;user=chrism                   ; setuid to this UNIX account to run the program
+;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
+stdout_logfile=/var/log/contrail/contrail-database-nodemgr-stdout.log ; stdout log path, NONE for none; default AUTO
+;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
+;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
+;stdout_events_enabled=false   ; emit events on stdout writes (default false)
+stderr_logfile=/var/log/contrail/contrail-database-nodemgr-stderr.log ; stderr log path, NONE for none; default AUTO
+;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
+;stderr_logfile_backups        ; # of stderr logfile backups (default 10)
+;stderr_events_enabled=false   ; emit events on stderr writes (default false)
+;environment=A=1,B=2           ; process environment additions
+;serverurl=AUTO                ; override serverurl computation (childutils)
diff --git a/opencontrail/map.jinja b/opencontrail/map.jinja
index 0f3a3e6..1be5ba6 100644
--- a/opencontrail/map.jinja
+++ b/opencontrail/map.jinja
@@ -12,7 +12,7 @@
 
 {% set collector = salt['grains.filter_by']({
     'Debian': {
-        'pkgs': ['contrail-analytics'],
+        'pkgs': ['contrail-analytics', 'python-kafka-python', 'python-cassandra'],
         'redis_config': '/etc/redis/redis.conf',
         'services': ['supervisor-analytics','redis-server']
     },
@@ -71,7 +71,7 @@
 
 {% set web = salt['grains.filter_by']({
     'Debian': {
-        'pkgs': ['contrail-web-controller'],
+        'pkgs': ['contrail-web-controller', 'nodejs-legacy'],
         'services': ['contrail-webui-webserver','contrail-webui-jobserver']
     },
     'RedHat': {