From c482a3ce5a9ab4074c61903c5b9e8e2af7d39bfe Mon Sep 17 00:00:00 2001 From: Martin Schuppert Date: Thu, 5 Jul 2018 12:16:35 +0200 Subject: [PATCH] New profile to configure libvirt-guests on compute host On compute shutdown we might want to gracefully shutdown instances using libvirt-guests. If it gets configured is managed via a tht parameter NovaResumeGuestsStateOnHostBoot. This triggers config of /etc/sysconfig/libvirt-guests via puppet-nova, configures a dependency for virt-guest-shutdown.target to paunch-container-shutdown.service that instances get shutdown before the libvirt container gets stopped. Change-Id: Id1cc2e75af316b864cebf601395f1111b7fb049a Closes-Bug: 1778216 Depends-On: I2766cdd66ff17756daaf1a75ad516a7af6eebddc --- .../base/nova/compute/libvirt_guests.pp | 56 +++++++++++++++++++ .../nova_libvirt_guests-d0e5424d40d9e26e.yaml | 10 ++++ 2 files changed, 66 insertions(+) create mode 100644 manifests/profile/base/nova/compute/libvirt_guests.pp create mode 100644 manifests/releasenotes/notes/nova_libvirt_guests-d0e5424d40d9e26e.yaml diff --git a/manifests/profile/base/nova/compute/libvirt_guests.pp b/manifests/profile/base/nova/compute/libvirt_guests.pp new file mode 100644 index 000000000..cde2fdda4 --- /dev/null +++ b/manifests/profile/base/nova/compute/libvirt_guests.pp @@ -0,0 +1,56 @@ +# Copyright 2016 Red Hat, Inc. +# +# 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. +# +# == Class: tripleo::profile::base::nova::compute::libvirt_guests +# +# Configures libvirt-guests service. +# +# === Parameters: +# +# [*step*] +# (Optional) The current step in deployment. See tripleo-heat-templates +# for more details. +# Defaults to hiera('step') +# +# [*enabled*] +# (Optional) Whether libvirt-guests should be configured and enabled or not. +# Defaults to undef +# +class tripleo::profile::base::nova::compute::libvirt_guests ( + $step = Integer(hiera('step')), + $enabled = undef, +) { + if $step >= 4 { + class { '::nova::compute::libvirt_guests': + enabled => $enabled, + } + include ::nova::compute::libvirt_guests + + #set dep to docker to make sure we shutdown instances before libvirt + #container stops + if str2bool(hiera('docker_enabled', false)) { + include ::systemd::systemctl::daemon_reload + + Package<| name == 'docker' |> + -> file { '/etc/systemd/system/virt-guest-shutdown.target.wants': + ensure => directory, + } + -> systemd::unit_file { 'paunch-container-shutdown.service': + path => '/etc/systemd/system/virt-guest-shutdown.target.wants', + target => '/usr/lib/systemd/system/paunch-container-shutdown.service', + before => Class['::nova::compute::libvirt_guests'], + } + } + } +} diff --git a/manifests/releasenotes/notes/nova_libvirt_guests-d0e5424d40d9e26e.yaml b/manifests/releasenotes/notes/nova_libvirt_guests-d0e5424d40d9e26e.yaml new file mode 100644 index 000000000..2841346cb --- /dev/null +++ b/manifests/releasenotes/notes/nova_libvirt_guests-d0e5424d40d9e26e.yaml @@ -0,0 +1,10 @@ +--- +features: + - | + New profile to configure libvirt-guests on compute host. On compute + shutdown we might want to gracefully shutdown instances using + libvirt-guests. If it gets configured is managed with the tht + NovaResumeGuestsStateOnHostBoot parameter. This triggers config of + /etc/sysconfig/libvirt-guests via puppet-nova, configures a dependency + for virt-guest-shutdown.target to the docker service that instances get + shutdown before the libvirt container gets stopped.