From 34f0c8c7223695a0ee80e183b6387702b375390a Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Fri, 5 Apr 2024 23:25:13 +0900 Subject: [PATCH] Avoid deprecated live_migration_uri if possible The live_migration_uri option was deprecated in favor of the new live_migration_(scheme|inbound_addr) options. Note that the new options does not allow customizing some parameters for ssh, which were possible by the deprecated _uri option, so the legacy option is still used if a user requests any of the options currently not configurable by the new options. Related-Bug: #1680729 Change-Id: I88c9777999cb091b8570c642e75b0332fb103294 --- manifests/migration/libvirt.pp | 26 +++++++-------- spec/classes/nova_migration_libvirt_spec.rb | 35 ++++++++++++++------- 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/manifests/migration/libvirt.pp b/manifests/migration/libvirt.pp index b450fa3eb..c3240f5e8 100644 --- a/manifests/migration/libvirt.pp +++ b/manifests/migration/libvirt.pp @@ -217,26 +217,25 @@ class nova::migration::libvirt( } if $configure_nova { - if $transport == 'ssh' { + if $transport == 'ssh' and ($client_user or $client_port or !empty($client_extraparams)) { if $client_user { - $prefix = "${client_user}@" + $prefix = "${client_user}@" } else { $prefix = '' } + if $client_port { + $suffix = ":${client_port}" + } else { + $suffix = '' + } + $extra_params = encode_url_queries_for_python($client_extraparams) + $live_migration_uri = "qemu+${transport}://${prefix}%s${suffix}/system${extra_params}" + $live_migration_scheme = $facts['os_service_default'] } else { - $prefix = '' + $live_migration_uri = $facts['os_service_default'] + $live_migration_scheme = $transport } - if $client_port { - $postfix = ":${client_port}" - } else { - $postfix = '' - } - - $extra_params = encode_url_queries_for_python($client_extraparams) - - $live_migration_uri = "qemu+${transport}://${prefix}%s${postfix}/system${extra_params}" - nova_config { 'libvirt/migration_inbound_addr': value => $migration_inbound_addr; 'libvirt/live_migration_uri': value => $live_migration_uri; @@ -249,6 +248,7 @@ class nova::migration::libvirt( 'libvirt/live_migration_completion_timeout': value => $live_migration_completion_timeout; 'libvirt/live_migration_timeout_action': value => $live_migration_timeout_action; 'libvirt/live_migration_inbound_addr': value => $live_migration_inbound_addr; + 'libvirt/live_migration_scheme': value => $live_migration_scheme; 'libvirt/live_migration_permit_post_copy': value => $live_migration_permit_post_copy; 'libvirt/live_migration_permit_auto_converge': value => $live_migration_permit_auto_converge; } diff --git a/spec/classes/nova_migration_libvirt_spec.rb b/spec/classes/nova_migration_libvirt_spec.rb index 5ed92ca6e..f79a64ef1 100644 --- a/spec/classes/nova_migration_libvirt_spec.rb +++ b/spec/classes/nova_migration_libvirt_spec.rb @@ -48,8 +48,9 @@ describe 'nova::migration::libvirt' do it { is_expected.to contain_nova_config('libvirt/live_migration_downtime_delay').with_value('') } it { is_expected.to contain_nova_config('libvirt/live_migration_completion_timeout').with_value('') } it { is_expected.to contain_nova_config('libvirt/live_migration_timeout_action').with_value('') } - it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('qemu+tcp://%s/system') } + it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('') } it { is_expected.to contain_nova_config('libvirt/live_migration_inbound_addr').with_value('')} + it { is_expected.to contain_nova_config('libvirt/live_migration_scheme').with_value('tcp') } it { is_expected.to contain_nova_config('libvirt/live_migration_permit_post_copy').with_value('')} it { is_expected.to contain_nova_config('libvirt/live_migration_permit_auto_converge').with_value('')} end @@ -95,7 +96,8 @@ describe 'nova::migration::libvirt' do it { is_expected.to contain_libvirtd_config('cert_file').with_value('').with_quote(true) } it { is_expected.to contain_libvirtd_config('ca_file').with_value('').with_quote(true) } it { is_expected.to contain_libvirtd_config('crl_file').with_value('').with_quote(true) } - it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('qemu+tls://%s/system')} + it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('') } + it { is_expected.to contain_nova_config('libvirt/live_migration_scheme').with_value('tls') } end context 'with tls enabled and inbound addr set' do @@ -111,8 +113,9 @@ describe 'nova::migration::libvirt' do it { is_expected.to contain_libvirtd_config('ca_file').with_value('').with_quote(true) } it { is_expected.to contain_libvirtd_config('crl_file').with_value('').with_quote(true) } it { is_expected.to contain_nova_config('libvirt/migration_inbound_addr').with_value('host2.example.com')} - it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('qemu+tls://%s/system')} + it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('') } it { is_expected.to contain_nova_config('libvirt/live_migration_inbound_addr').with_value('host1.example.com')} + it { is_expected.to contain_nova_config('libvirt/live_migration_scheme').with_value('tls') } end context 'with live_migration_with_native_tls flags set' do @@ -232,7 +235,9 @@ describe 'nova::migration::libvirt' do :transport => 'tls', } end - it { is_expected.not_to contain_nova_config('libvirt/live_migration_uri').with_value('qemu+tls://%s/system') } + it { is_expected.not_to contain_nova_config('libvirt/live_migration_uri') } + it { is_expected.not_to contain_nova_config('libvirt/live_migration_inbound_addr') } + it { is_expected.not_to contain_nova_config('libvirt/live_migration_scheme') } end context 'with ssh transport' do @@ -241,37 +246,41 @@ describe 'nova::migration::libvirt' do :transport => 'ssh', } end - it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('qemu+ssh://%s/system')} + it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('') } + it { is_expected.to contain_nova_config('libvirt/live_migration_scheme').with_value('ssh') } end context 'with ssh transport with user' do let :params do { - :transport => 'ssh', + :transport => 'ssh', :client_user => 'foobar' } end it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('qemu+ssh://foobar@%s/system')} + it { is_expected.to contain_nova_config('libvirt/live_migration_scheme').with_value('') } end context 'with ssh transport with port' do let :params do { - :transport => 'ssh', + :transport => 'ssh', :client_port => 1234 } end it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('qemu+ssh://%s:1234/system')} + it { is_expected.to contain_nova_config('libvirt/live_migration_scheme').with_value('') } end context 'with ssh transport with extraparams' do let :params do { - :transport => 'ssh', + :transport => 'ssh', :client_extraparams => {'foo' => '%', 'bar' => 'baz'} } end it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('qemu+ssh://%s/system?foo=%%25&bar=baz')} + it { is_expected.to contain_nova_config('libvirt/live_migration_scheme').with_value('') } end context 'with tls transport' do @@ -322,8 +331,9 @@ describe 'nova::migration::libvirt' do it { is_expected.to contain_nova_config('libvirt/live_migration_with_native_tls').with_value('') } it { is_expected.to contain_nova_config('libvirt/live_migration_completion_timeout').with_value('') } it { is_expected.to contain_nova_config('libvirt/live_migration_timeout_action').with_value('') } - it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('qemu+tcp://%s/system') } + it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('') } it { is_expected.to contain_nova_config('libvirt/live_migration_inbound_addr').with_value('')} + it { is_expected.to contain_nova_config('libvirt/live_migration_scheme').with_value('tcp') } it { is_expected.to contain_nova_config('libvirt/live_migration_permit_post_copy').with_value('')} it { is_expected.to contain_nova_config('libvirt/live_migration_permit_auto_converge').with_value('')} end @@ -339,7 +349,8 @@ describe 'nova::migration::libvirt' do it { is_expected.to contain_virtproxyd_config('auth_tcp').with_value('').with_quote(true) } it { is_expected.to contain_virtproxyd_config('ca_file').with_value('').with_quote(true) } it { is_expected.to contain_virtproxyd_config('crl_file').with_value('').with_quote(true) } - it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('qemu+tls://%s/system')} + it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('') } + it { is_expected.to contain_nova_config('libvirt/live_migration_scheme').with_value('tls') } end context 'with auth set to sasl' do @@ -391,7 +402,8 @@ describe 'nova::migration::libvirt' do :modular_libvirt => true, } end - it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('qemu+ssh://%s/system')} + it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('') } + it { is_expected.to contain_nova_config('libvirt/live_migration_scheme').with_value('ssh') } end context 'with ssh transport with user' do @@ -403,6 +415,7 @@ describe 'nova::migration::libvirt' do } end it { is_expected.to contain_nova_config('libvirt/live_migration_uri').with_value('qemu+ssh://foobar@%s/system')} + it { is_expected.to contain_nova_config('libvirt/live_migration_scheme').with_value('') } end context 'with ssh transport with port' do