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, CONFIGS,
neutron_plugin_joined, neutron_plugin_joined,
nova_ceilometer_joined, nova_ceilometer_joined,
nova_vgpu_joined,
) )
@@ -62,6 +63,8 @@ def openstack_upgrade():
neutron_plugin_joined(rid, remote_restart=True) neutron_plugin_joined(rid, remote_restart=True)
for rid in relation_ids('nova-ceilometer'): for rid in relation_ids('nova-ceilometer'):
nova_ceilometer_joined(rid, remote_restart=True) 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 # NOTE(ajkavanagh) - if unit is paused (usually true for managed
# upgrade) then the config_changed() function is a no-op # upgrade) then the config_changed() function is a no-op
config_changed() 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'): for rid in relation_ids('nova-ceilometer'):
nova_ceilometer_joined(rid, remote_restart=send_remote_restart) 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"): if is_relation_made("nrpe-external-master"):
update_nrpe_config() update_nrpe_config()
@@ -688,6 +691,20 @@ def nova_ceilometer_relation_changed():
update_all_configs() 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', @hooks.hook('nrpe-external-master-relation-joined',
'nrpe-external-master-relation-changed') 'nrpe-external-master-relation-changed')
def update_nrpe_config(): def update_nrpe_config():

View File

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

View File

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

View File

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

View File

@@ -487,6 +487,10 @@ class NovaComputeRelationsTests(CharmTestCase):
hooks.nova_ceilometer_relation_changed() hooks.nova_ceilometer_relation_changed()
self.update_all_configs.assert_called() 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): def test_ceph_joined(self):
self.libvirt_daemon.return_value = 'libvirt-bin' self.libvirt_daemon.return_value = 'libvirt-bin'
hooks.ceph_joined() hooks.ceph_joined()