Merge "Enable support for auto-converge and post-copy"

This commit is contained in:
Zuul 2019-01-09 12:01:26 +00:00 committed by Gerrit Code Review
commit 1e1c42a151
6 changed files with 80 additions and 0 deletions

View File

@ -108,6 +108,18 @@ options:
description: |
TCP authentication scheme for libvirt live migration. Available options
include ssh.
live-migration-permit-post-copy:
type: boolean
default: False
description: |
If live-migration is enabled, this option allows Nova to switch an on-
going live migration to post-copy mode.
live-migration-permit-auto-converge:
type: boolean
default: False
description: |
If live-migration is enabled, this option allows Nova to throttle down
CPU when an on-going live migration is slow.
authorized-keys-path:
type: string
default: '{homedir}/.ssh/authorized_keys'

View File

@ -198,6 +198,12 @@ class NovaComputeLibvirtContext(context.OSContextGenerator):
# nova.conf
ctxt['live_migration_uri'] = 'qemu+ssh://%s/system'
if config('enable-live-migration'):
ctxt['live_migration_permit_post_copy'] = \
config('live-migration-permit-post-copy')
ctxt['live_migration_permit_auto_converge'] = \
config('live-migration-permit-auto-converge')
if config('instances-path') is not None:
ctxt['instances_path'] = config('instances-path')

View File

@ -205,6 +205,12 @@ rbd_secret_uuid = {{ rbd_secret_uuid }}
{% if live_migration_uri -%}
live_migration_uri = {{ live_migration_uri }}
{% endif -%}
{% if live_migration_permit_post_copy -%}
live_migration_permit_post_copy = {{ live_migration_permit_post_copy }}
{% endif -%}
{% if live_migration_permit_auto_converge -%}
live_migration_permit_auto_converge = {{ live_migration_permit_auto_converge }}
{% endif -%}
{% if disk_cachemodes -%}
disk_cachemodes = {{ disk_cachemodes }}
{% endif %}

View File

@ -209,6 +209,12 @@ rbd_secret_uuid = {{ rbd_secret_uuid }}
{% if live_migration_uri -%}
live_migration_uri = {{ live_migration_uri }}
{% endif -%}
{% if live_migration_permit_post_copy -%}
live_migration_permit_post_copy = {{ live_migration_permit_post_copy }}
{% endif -%}
{% if live_migration_permit_auto_converge -%}
live_migration_permit_auto_converge = {{ live_migration_permit_auto_converge }}
{% endif -%}
{% if disk_cachemodes -%}
disk_cachemodes = {{ disk_cachemodes }}
{% endif %}

View File

@ -217,6 +217,12 @@ rbd_secret_uuid = {{ rbd_secret_uuid }}
{% if live_migration_uri -%}
live_migration_uri = {{ live_migration_uri }}
{% endif -%}
{% if live_migration_permit_post_copy -%}
live_migration_permit_post_copy = {{ live_migration_permit_post_copy }}
{% endif -%}
{% if live_migration_permit_auto_converge -%}
live_migration_permit_auto_converge = {{ live_migration_permit_auto_converge }}
{% endif -%}
{% if disk_cachemodes -%}
disk_cachemodes = {{ disk_cachemodes }}
{% endif %}

View File

@ -291,6 +291,50 @@ class NovaComputeContextTests(CharmTestCase):
'listen_tls': 0,
'host_uuid': self.host_uuid,
'live_migration_uri': 'qemu+ssh://%s/system',
'live_migration_permit_auto_converge': False,
'live_migration_permit_post_copy': False,
'force_raw_images': True,
'reserved_host_memory': 512}, libvirt())
def test_libvirt_bin_context_migration_tcp_listen_with_auto_converge(self):
self.kv.return_value = FakeUnitdata(**{'host_uuid': self.host_uuid})
self.lsb_release.return_value = {'DISTRIB_CODENAME': 'lucid'}
self.test_config.set('enable-live-migration', True)
self.test_config.set('live-migration-permit-auto-converge', True)
libvirt = context.NovaComputeLibvirtContext()
self.assertEqual(
{'libvirtd_opts': '-d -l',
'libvirt_user': 'libvirtd',
'arch': platform.machine(),
'ksm': 'AUTO',
'kvm_hugepages': 0,
'listen_tls': 0,
'host_uuid': self.host_uuid,
'live_migration_uri': 'qemu+ssh://%s/system',
'live_migration_permit_auto_converge': True,
'live_migration_permit_post_copy': False,
'force_raw_images': True,
'reserved_host_memory': 512}, libvirt())
def test_libvirt_bin_context_migration_tcp_listen_with_post_copy(self):
self.kv.return_value = FakeUnitdata(**{'host_uuid': self.host_uuid})
self.lsb_release.return_value = {'DISTRIB_CODENAME': 'lucid'}
self.test_config.set('enable-live-migration', True)
self.test_config.set('live-migration-permit-post-copy', True)
libvirt = context.NovaComputeLibvirtContext()
self.assertEqual(
{'libvirtd_opts': '-d -l',
'libvirt_user': 'libvirtd',
'arch': platform.machine(),
'ksm': 'AUTO',
'kvm_hugepages': 0,
'listen_tls': 0,
'host_uuid': self.host_uuid,
'live_migration_uri': 'qemu+ssh://%s/system',
'live_migration_permit_auto_converge': False,
'live_migration_permit_post_copy': True,
'force_raw_images': True,
'reserved_host_memory': 512}, libvirt())