From 1c19735a9a40ca8f47aa9bc83a237cc16501ef1b Mon Sep 17 00:00:00 2001 From: Mykyta Karpin Date: Wed, 28 Sep 2016 19:08:29 +0300 Subject: [PATCH] Add class for migration options configuration in qemu.conf Change-Id: I8d346c55de637324d4b80a80eb827140c46a984d Related-Bug: #1627476 --- manifests/migration/qemu.pp | 54 +++++++++++++++ ...migration_qemu_class-3b3386696dd597c2.yaml | 4 ++ spec/classes/nova_migration_qemu_spec.rb | 66 +++++++++++++++++++ 3 files changed, 124 insertions(+) create mode 100644 manifests/migration/qemu.pp create mode 100644 releasenotes/notes/add_migration_qemu_class-3b3386696dd597c2.yaml create mode 100644 spec/classes/nova_migration_qemu_spec.rb diff --git a/manifests/migration/qemu.pp b/manifests/migration/qemu.pp new file mode 100644 index 000000000..50e998aec --- /dev/null +++ b/manifests/migration/qemu.pp @@ -0,0 +1,54 @@ +# == Class: nova::migration::qemu +# +# Sets qemu config that is required for migration +# +# === Parameters: +# +# [*configure_qemu*] +# (optional) Whether or not configure qemu bits. +# Defaults to false. +# +# [*migration_port_min*] +# (optional) Lower limit of port range used for migration. +# Defaults to 49152. +# +# [*migration_port_max*] +# (optional) Higher limit of port range used for migration. +# Defaults to 49215. +# +class nova::migration::qemu( + $configure_qemu = false, + $migration_port_min = 49152, + $migration_port_max = 49215, +){ + + include ::nova::deps + + Anchor['nova::config::begin'] + -> Augeas<| tag == 'qemu-conf-augeas'|> + -> Anchor['nova::config::end'] + + Augeas<| tag == 'qemu-conf-augeas'|> + ~> Service['libvirt'] + + if $configure_qemu { + + augeas { 'qemu-conf-migration-ports': + context => '/files/etc/libvirt/qemu.conf', + changes => [ + "set migration_port_min ${migration_port_min}", + "set migration_port_max ${migration_port_max}", + ], + tag => 'qemu-conf-augeas', + } + } else { + augeas { 'qemu-conf-migration-ports': + context => '/files/etc/libvirt/qemu.conf', + changes => [ + 'rm migration_port_min', + 'rm migration_port_max', + ], + tag => 'qemu-conf-augeas', + } + } +} diff --git a/releasenotes/notes/add_migration_qemu_class-3b3386696dd597c2.yaml b/releasenotes/notes/add_migration_qemu_class-3b3386696dd597c2.yaml new file mode 100644 index 000000000..5d318dadb --- /dev/null +++ b/releasenotes/notes/add_migration_qemu_class-3b3386696dd597c2.yaml @@ -0,0 +1,4 @@ +--- +features: + - Add class for management of migration + options in qemu.conf diff --git a/spec/classes/nova_migration_qemu_spec.rb b/spec/classes/nova_migration_qemu_spec.rb new file mode 100644 index 000000000..26a4b44c2 --- /dev/null +++ b/spec/classes/nova_migration_qemu_spec.rb @@ -0,0 +1,66 @@ +require 'spec_helper' + +describe 'nova::migration::qemu' do + + let :pre_condition do + 'include nova + include nova::compute + include nova::compute::libvirt' + end + + shared_examples_for 'nova migration with qemu' do + + context 'when not configuring qemu' do + let :params do + { + :configure_qemu => false + } + end + it { is_expected.to contain_augeas('qemu-conf-migration-ports').with({ + :context => '/files/etc/libvirt/qemu.conf', + :changes => [ "rm migration_port_min", "rm migration_port_max" ], + }).that_notifies('Service[libvirt]') } + end + + context 'when configuring qemu by default' do + let :params do + { + :configure_qemu => true + } + end + it { is_expected.to contain_augeas('qemu-conf-migration-ports').with({ + :context => '/files/etc/libvirt/qemu.conf', + :changes => [ "set migration_port_min 49152", "set migration_port_max 49215" ], + :tag => 'qemu-conf-augeas', + }).that_notifies('Service[libvirt]') } + end + + context 'when configuring qemu with overriden parameters' do + let :params do + { + :configure_qemu => true, + :migration_port_min => 61138, + :migration_port_max => 61200, + } + end + it { is_expected.to contain_augeas('qemu-conf-migration-ports').with({ + :context => '/files/etc/libvirt/qemu.conf', + :changes => [ "set migration_port_min 61138", "set migration_port_max 61200" ], + :tag => 'qemu-conf-augeas', + }).that_notifies('Service[libvirt]') } + end + end + + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts()) + end + + it_configures 'nova migration with qemu' + end + end + +end