From 4d3fb82ab476102aaa98b0589f336ad6bce09675 Mon Sep 17 00:00:00 2001 From: Valentin Boucher Date: Tue, 28 Aug 2018 12:57:23 -0400 Subject: [PATCH] Compute: Enable vGPU in Nova if exist on the host Since Queens release Nova support vGPUs. In order to use it, nova must have the right configuration. This commit will enable vGPU in the nova configuration if some mdev[1] devices exist on the compute node. [1] - https://docs.openstack.org/nova/latest/admin/virtual-gpu.html#how-to-discover-a-gpu-type Change-Id: Ia30b1a4fe38eb966f029f16142b8302707107bfc Signed-off-by: Valentin Boucher --- tasks/main.yml | 5 +++++ tasks/nova_vgpu_detect.yml | 30 ++++++++++++++++++++++++++++++ templates/nova.conf.j2 | 5 +++++ 3 files changed, 40 insertions(+) create mode 100644 tasks/nova_vgpu_detect.yml diff --git a/tasks/main.yml b/tasks/main.yml index 5569620e..db865f07 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -73,6 +73,11 @@ - always - nova-config +- include_tasks: nova_vgpu_detect.yml + tags: + - always + - nova-config + - include_tasks: nova_pre_install.yml tags: - nova-install diff --git a/tasks/nova_vgpu_detect.yml b/tasks/nova_vgpu_detect.yml new file mode 100644 index 00000000..c64166cf --- /dev/null +++ b/tasks/nova_vgpu_detect.yml @@ -0,0 +1,30 @@ +--- +# Copyright 2018, Kontron. +# +# Licensed 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. + +- name: Check if the mdev folder exist + stat: path=/sys/class/mdev_bus + register: mdev_folder + +- name: Get mdev info content and store as var + command: "/bin/sh -c 'ls -1 /sys/class/mdev_bus/*/mdev_supported_types'" + register: mdev + when: mdev_folder.stat.exists + +- name: Register a fact for nova enabled_vgpu_types + set_fact: + enabled_vgpu_types: "{{ mdev.stdout_lines | unique }}" + when: + - mdev.stdout_lines is defined + - mdev.stdout_lines | length > 0 diff --git a/templates/nova.conf.j2 b/templates/nova.conf.j2 index e1f33291..6f161227 100644 --- a/templates/nova.conf.j2 +++ b/templates/nova.conf.j2 @@ -345,3 +345,8 @@ server_groups = {{ nova_quota_server_groups }} [upgrade_levels] compute=auto + +{% if enabled_vgpu_types is defined %} +[devices] +enabled_vgpu_types = {{ enabled_vgpu_types | join(',') }} +{% endif %}