Add nova-vgpu relation

Change-Id: Ie034a263c85c2909ce87ada632196772dbd265d2
This commit is contained in:
Aurelien Lourot 2022-02-15 11:51:42 +01:00
parent 2283f12edd
commit f723109911
8 changed files with 39 additions and 2 deletions

View File

@ -42,6 +42,7 @@ from nova_compute_hooks import (
CONFIGS,
neutron_plugin_joined,
nova_ceilometer_joined,
nova_vgpu_joined,
)
@ -62,6 +63,8 @@ def openstack_upgrade():
neutron_plugin_joined(rid, remote_restart=True)
for rid in relation_ids('nova-ceilometer'):
nova_ceilometer_joined(rid, remote_restart=True)
for rid in relation_ids('nova-vgpu'):
nova_vgpu_joined(rid, remote_restart=True)
# NOTE(ajkavanagh) - if unit is paused (usually true for managed
# upgrade) then the config_changed() function is a no-op
config_changed()

View File

@ -0,0 +1 @@
nova_compute_hooks.py

View File

@ -0,0 +1 @@
nova_compute_hooks.py

View File

@ -248,6 +248,9 @@ def config_changed():
for rid in relation_ids('nova-ceilometer'):
nova_ceilometer_joined(rid, remote_restart=send_remote_restart)
for rid in relation_ids('nova-vgpu'):
nova_vgpu_joined(rid, remote_restart=send_remote_restart)
if is_relation_made("nrpe-external-master"):
update_nrpe_config()
@ -688,6 +691,20 @@ def nova_ceilometer_relation_changed():
update_all_configs()
@hooks.hook('nova-vgpu-relation-joined')
def nova_vgpu_joined(relid=None, remote_restart=False):
if remote_restart:
rel_settings = {
'restart-trigger': str(uuid.uuid4())}
relation_set(relation_id=relid, relation_settings=rel_settings)
@hooks.hook('nova-vgpu-relation-changed')
@restart_on_change(restart_map())
def nova_vgpu_relation_changed():
update_all_configs()
@hooks.hook('nrpe-external-master-relation-joined',
'nrpe-external-master-relation-changed')
def update_nrpe_config():

View File

@ -232,6 +232,10 @@ BASE_RESOURCE_MAP = {
'ephemeral-backend'],
service=['nova-compute', 'nova'],
config_file=NOVA_CONF),
context.SubordinateConfigContext(
interface=['nova-vgpu'],
service=['nova-compute', 'nova'],
config_file=NOVA_CONF),
InstanceConsoleContext(),
context.ZeroMQContext(),
context.NotificationDriverContext(),

View File

@ -37,6 +37,9 @@ requires:
nova-ceilometer:
interface: nova-ceilometer
scope: container
nova-vgpu:
interface: nova-vgpu
scope: container
neutron-plugin:
interface: neutron-plugin
scope: container

View File

@ -42,6 +42,7 @@ class TestNovaComputeUpgradeActions(CharmTestCase):
super(TestNovaComputeUpgradeActions, self).setUp(openstack_upgrade,
TO_PATCH)
@patch.object(openstack_upgrade, 'nova_vgpu_joined')
@patch.object(openstack_upgrade, 'nova_ceilometer_joined')
@patch.object(openstack_upgrade, 'neutron_plugin_joined')
@patch.object(openstack_upgrade, 'relation_ids')
@ -52,14 +53,15 @@ class TestNovaComputeUpgradeActions(CharmTestCase):
def test_openstack_upgrade_true(self, log, upgrade_avail,
action_set, config, relation_ids,
neutron_plugin_joined,
nova_ceilometer_joined):
nova_ceilometer_joined, nova_vgpu_joined):
upgrade_avail.return_value = True
config.return_value = True
def fake_relation_ids(thing):
return {'neutron-plugin': ['1'],
'nova-ceilometer': ['2']}[thing]
'nova-ceilometer': ['2'],
'nova-vgpu': ['3']}[thing]
relation_ids.side_effect = fake_relation_ids
@ -70,6 +72,8 @@ class TestNovaComputeUpgradeActions(CharmTestCase):
neutron_plugin_joined.assert_called_once_with("1", remote_restart=True)
nova_ceilometer_joined.assert_called_once_with(
"2", remote_restart=True)
nova_vgpu_joined.assert_called_once_with(
"3", remote_restart=True)
@patch('charmhelpers.contrib.openstack.utils.config')
@patch('charmhelpers.contrib.openstack.utils.action_set')

View File

@ -487,6 +487,10 @@ class NovaComputeRelationsTests(CharmTestCase):
hooks.nova_ceilometer_relation_changed()
self.update_all_configs.assert_called()
def test_nova_vgpu_relation_changed(self):
hooks.nova_ceilometer_relation_changed()
self.update_all_configs.assert_called()
def test_ceph_joined(self):
self.libvirt_daemon.return_value = 'libvirt-bin'
hooks.ceph_joined()