Install python-osc-placement for Queens

PROD-34009

Change-Id: I1f6f826c9d352f6ccb6767532b1e36facca4211b
diff --git a/metadata/service/client/init.yml b/metadata/service/client/init.yml
index 46046d6..0129687 100644
--- a/metadata/service/client/init.yml
+++ b/metadata/service/client/init.yml
@@ -4,3 +4,4 @@
   nova:
     client:
       enabled: true
+      version: ${_param:nova_version}
\ No newline at end of file
diff --git a/nova/map.jinja b/nova/map.jinja
index 9591f74..0d3b79a 100644
--- a/nova/map.jinja
+++ b/nova/map.jinja
@@ -28,12 +28,16 @@
 {%- do services_list.append('nova-cert') %}
 {%- endif %}
 {%- do pkgs_list.append('nova-novncproxy' if controller_version in ['rocky'] else 'nova-consoleproxy') %}
+{# python-osc-placement package is available starting Queens #}
+{%- if controller_version in ['queens'] %}
+{%- do pkgs_list.append('python-osc-placement') %}
+{%- endif %}
 {%- endif %}
 
 {%- if 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-conductor', 'openstack-nova-api', 'openstack-nova-consoleauth', 'openstack-nova-scheduler', 'openstack-nova-novncproxy'] %}
-{%- if pillar.nova.controller is defined and pillar.nova.controller.get('version',{}) in ["juno", "kilo", "liberty", "mitaka", "newton", "ocata"] %}
+{%- 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 %}
@@ -138,14 +142,23 @@
 } %}
 {% endif %}
 
-{% set client = salt['grains.filter_by']({
-    'Debian': {
-        'pkgs': ['python-novaclient']
-    },
-    'RedHat': {
-        'pkgs': ['python-novaclient']
-    },
-}, merge=pillar.nova.get('client', {})) %}
+{%- load_yaml as client_defaults %}
+Debian:
+  pkgs:
+    - python-novaclient
+{# python-osc-placement package is available starting Queens #}
+{%- if pillar.nova.client is defined and pillar.nova.client.get('version', '') in ["queens"] %}
+    - python-osc-placement
+{%- endif %}
+RedHat:
+  pkgs:
+    - python-novaclient
+{# python-osc-placement package is available starting Queens #}
+{%- if pillar.nova.client is defined and pillar.nova.client.get('version', '') in ["queens"] %}
+    - python-osc-placement
+{%- endif %}
+{%- endload %}
+{% set client = salt["grains.filter_by"](client_defaults, merge=pillar.nova.get("client", {})) %}
 
 {% set compute_network = salt['grains.filter_by']({
     'default': {
@@ -169,6 +182,10 @@
   - nova-common
   - nova-compute-kvm
   - python-novaclient
+{# python-osc-placement package is available starting Queens #}
+{%- if pillar.nova.compute is defined and pillar.nova.compute.get('version', '') in ["queens"] %}
+  - python-osc-placement
+{%- endif %}
   - pm-utils
   - sysfsutils
   - sg3-utils