Merge remote-tracking branch 'target/master'
diff --git a/nova/controller.sls b/nova/controller.sls
index 94dda8b..2c90f0f 100644
--- a/nova/controller.sls
+++ b/nova/controller.sls
@@ -129,7 +129,7 @@
 
 {%- endfor %}
 
-{%- if controller.version in ["ocata"] %}
+{%- if controller.version not in ["juno", "kilo", "liberty", "mitaka", "newton"] %}
 
 {#- the following api_db sync --version 20 happens only if the current api_db version is < 20 #}
 
@@ -172,6 +172,8 @@
   {%- if grains.get('noservices') %}
   - onlyif: /bin/false
   {%- endif %}
+  - require:
+    - cmd: nova_controller_syncdb
 
 nova_cell1_create:
   cmd.run:
@@ -180,6 +182,8 @@
   - onlyif: /bin/false
   {%- endif %}
   - unless: 'nova-manage cell_v2 list_cells | grep cell1'
+  - require:
+    - cmd: nova_controller_syncdb
 
 nova_placement_service_mask:
   file.symlink:
@@ -214,6 +218,7 @@
   - require:
     - cmd: nova_controller_map_cell0
     - cmd: nova_cell1_create
+    - cmd: nova_controller_syncdb
 
 nova_controller_map_instances:
   novang.map_instances:
@@ -227,7 +232,7 @@
 
 {%- endif %}
 
-{%- if controller.version in ["mitaka", "newton", "ocata"] %}
+{%- if controller.version not in ["juno", "kilo", "liberty"] %}
 nova_controller_sync_apidb:
   cmd.run:
   - name: nova-manage api_db sync
@@ -249,7 +254,7 @@
   - require:
     - file: /etc/nova/nova.conf
 
-{%- if controller.version in ["mitaka", "newton", "ocata"] %}
+{%- if controller.version not in ["juno", "kilo", "liberty"] %}
 
 nova_controller_online_data_migrations:
   cmd.run:
@@ -262,7 +267,7 @@
 
 {%- endif %}
 
-{%- if controller.version in ["ocata"] %}
+{%- if controller.version not in ["juno", "kilo", "liberty", "mitaka", "newton"] %}
 
 nova_apache_restart:
   service.running:
diff --git a/nova/files/pike b/nova/files/pike
new file mode 120000
index 0000000..d5e8ce2
--- /dev/null
+++ b/nova/files/pike
@@ -0,0 +1 @@
+ocata
\ No newline at end of file
diff --git a/nova/map.jinja b/nova/map.jinja
index c645e13..51eb23f 100644
--- a/nova/map.jinja
+++ b/nova/map.jinja
@@ -10,10 +10,28 @@
     'vnc_protocol': 'http',
 } %}
 
+{%- if grains.os_family == "Debian" %}
+{%- set pkgs_list = [ 'nova-common', 'nova-consoleproxy', 'novnc', 'nova-api', 'nova-conductor', 'nova-consoleauth', 'nova-doc', 'nova-scheduler', 'python-novaclient', 'python-memcache', 'gettext-base', 'python-pycadf'] %}
+{%- set services_list = ['nova-api', 'nova-consoleauth', 'nova-scheduler', 'nova-conductor', 'nova-novncproxy'] %}
+{%- if pillar.nova.controller is defined and pillar.nova.controller.get('version',{}) in ["juno", "kilo", "liberty", "mitaka", "newton", "ocata"] %}
+{%- do pkgs_list.append('nova-cert') %}
+{%- do services_list.append('nova-cert') %}
+{%- endif %}
+{%- endif %}
+
+{%- if grains.os_family == "RedHat" %}
+{%- set pkgs_list = ['openstack-nova-novncproxy', 'python-nova', 'openstack-nova-api', 'openstack-nova-console', 'openstack-nova-scheduler', 'python-novaclient', 'openstack-nova-common', 'openstack-nova-conductor', 'python-pycadf'] %}
+{%- set services_list = ['openstack-nova-api', 'openstack-nova-consoleauth', 'openstack-nova-scheduler', 'openstack-nova-conductor', 'openstack-nova-novncproxy'] %}
+{%- if pillar.nova.controller is defined and pillar.nova.controller.get('version',{}) in ["juno", "kilo", "liberty", "mitaka", "newton", "ocata"] %}
+{%- do pkgs_list.append('openstack-nova-cert') %}
+{%- do services_list.append('openstack-nova-cert') %}
+{%- endif %}
+{%- endif %}
+
 {% set controller = salt['grains.filter_by']({
     'Debian': {
-        'pkgs': ['nova-common', 'nova-consoleproxy', 'novnc', 'nova-api', 'nova-cert', 'nova-conductor', 'nova-consoleauth', 'nova-doc', 'nova-scheduler', 'python-novaclient', 'python-memcache', 'gettext-base', 'python-pycadf'],
-        'services': ['nova-api', 'nova-cert', 'nova-consoleauth', 'nova-scheduler', 'nova-conductor', 'nova-novncproxy'],
+        'pkgs': pkgs_list,
+        'services': services_list,
         'debug': false,
         'notification': false,
         'cors': {},
@@ -22,8 +40,8 @@
         },
     },
     'RedHat': {
-        'pkgs': ['openstack-nova-novncproxy', 'python-nova', 'openstack-nova-api', 'openstack-nova-console', 'openstack-nova-scheduler', 'python-novaclient', 'openstack-nova-common', 'openstack-nova-conductor', 'openstack-nova-cert', 'python-pycadf'],
-        'services': ['openstack-nova-api', 'openstack-nova-cert', 'openstack-nova-consoleauth', 'openstack-nova-scheduler', 'openstack-nova-conductor', 'openstack-nova-novncproxy'],
+        'pkgs': pkgs_list,
+        'services': services_list,
         'debug': false,
         'notification': false,
         'cors': {},