Merge "[openstack-hypervisor] Add support for sev" into main
This commit is contained in:
commit
97e82b6cec
@ -42,6 +42,13 @@ config:
|
|||||||
use-data-binding:
|
use-data-binding:
|
||||||
default: false
|
default: false
|
||||||
type: boolean
|
type: boolean
|
||||||
|
reserved-host-memory-mb-for-sev:
|
||||||
|
type: string
|
||||||
|
description: |
|
||||||
|
Memory to be reserved for host for SEV enabled compute
|
||||||
|
hosts. This memory will be used for instances. The compute
|
||||||
|
usage report deducts this memory from the available
|
||||||
|
memory sent to the placement service.
|
||||||
|
|
||||||
actions:
|
actions:
|
||||||
set-hypervisor-local-settings:
|
set-hypervisor-local-settings:
|
||||||
@ -81,6 +88,9 @@ actions:
|
|||||||
|
|
||||||
Only lists guests created by the OpenStack cloud.
|
Only lists guests created by the OpenStack cloud.
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
list-flavors:
|
||||||
|
description: |
|
||||||
|
List the flavors or compute host capabilities.
|
||||||
|
|
||||||
requires:
|
requires:
|
||||||
amqp:
|
amqp:
|
||||||
|
@ -191,6 +191,10 @@ class HypervisorOperatorCharm(sunbeam_charm.OSBaseOperatorCharm):
|
|||||||
self.on.running_guests_action,
|
self.on.running_guests_action,
|
||||||
self._running_guests_action,
|
self._running_guests_action,
|
||||||
)
|
)
|
||||||
|
self.framework.observe(
|
||||||
|
self.on.list_flavors_action,
|
||||||
|
self._list_flavors_action,
|
||||||
|
)
|
||||||
self.framework.observe(
|
self.framework.observe(
|
||||||
self.on.install,
|
self.on.install,
|
||||||
self._on_install,
|
self._on_install,
|
||||||
@ -422,6 +426,18 @@ class HypervisorOperatorCharm(sunbeam_charm.OSBaseOperatorCharm):
|
|||||||
# cli returns a json list
|
# cli returns a json list
|
||||||
event.set_results({"result": stdout})
|
event.set_results({"result": stdout})
|
||||||
|
|
||||||
|
def _list_flavors_action(self, event: ActionEvent):
|
||||||
|
"""List compute host capabilities."""
|
||||||
|
cache = self.get_snap_cache()
|
||||||
|
hypervisor = cache["openstack-hypervisor"]
|
||||||
|
try:
|
||||||
|
flavors = hypervisor.get("compute.flavors", typed=True)
|
||||||
|
except snap.SnapError as e:
|
||||||
|
logger.debug(e)
|
||||||
|
flavors = ""
|
||||||
|
|
||||||
|
event.set_results({"result": flavors})
|
||||||
|
|
||||||
def ensure_services_running(self):
|
def ensure_services_running(self):
|
||||||
"""Ensure systemd services running."""
|
"""Ensure systemd services running."""
|
||||||
# This should taken care of by the snap
|
# This should taken care of by the snap
|
||||||
@ -575,6 +591,9 @@ class HypervisorOperatorCharm(sunbeam_charm.OSBaseOperatorCharm):
|
|||||||
"node.ip-address": config("ip-address") or local_ip,
|
"node.ip-address": config("ip-address") or local_ip,
|
||||||
"rabbitmq.url": contexts.amqp.transport_url,
|
"rabbitmq.url": contexts.amqp.transport_url,
|
||||||
"monitoring.enable": self.enable_monitoring,
|
"monitoring.enable": self.enable_monitoring,
|
||||||
|
"sev.reserved-host-memory-mb": config(
|
||||||
|
"reserved-host-memory-mb-for-sev"
|
||||||
|
),
|
||||||
}
|
}
|
||||||
except AttributeError as e:
|
except AttributeError as e:
|
||||||
raise sunbeam_guard.WaitingExceptionError(
|
raise sunbeam_guard.WaitingExceptionError(
|
||||||
|
@ -174,6 +174,7 @@ class TestCharm(test_utils.CharmTestCase):
|
|||||||
"telemetry.enable": False,
|
"telemetry.enable": False,
|
||||||
"ca.bundle": None,
|
"ca.bundle": None,
|
||||||
"masakari.enable": False,
|
"masakari.enable": False,
|
||||||
|
"sev.reserved-host-memory-mb": None,
|
||||||
}
|
}
|
||||||
hypervisor_snap_mock.set.assert_any_call(expect_settings, typed=True)
|
hypervisor_snap_mock.set.assert_any_call(expect_settings, typed=True)
|
||||||
|
|
||||||
@ -287,6 +288,7 @@ class TestCharm(test_utils.CharmTestCase):
|
|||||||
"telemetry.publisher-secret": "FAKE_SECRET",
|
"telemetry.publisher-secret": "FAKE_SECRET",
|
||||||
"ca.bundle": None,
|
"ca.bundle": None,
|
||||||
"masakari.enable": True,
|
"masakari.enable": True,
|
||||||
|
"sev.reserved-host-memory-mb": None,
|
||||||
}
|
}
|
||||||
hypervisor_snap_mock.set.assert_any_call(expect_settings, typed=True)
|
hypervisor_snap_mock.set.assert_any_call(expect_settings, typed=True)
|
||||||
|
|
||||||
@ -346,3 +348,16 @@ class TestCharm(test_utils.CharmTestCase):
|
|||||||
self.subprocess.run = subprocess_run_mock
|
self.subprocess.run = subprocess_run_mock
|
||||||
with self.assertRaises(ops.testing.ActionFailed):
|
with self.assertRaises(ops.testing.ActionFailed):
|
||||||
self.harness.run_action("list-nics")
|
self.harness.run_action("list-nics")
|
||||||
|
|
||||||
|
def test_list_flavors(self):
|
||||||
|
"""Check action return flavors."""
|
||||||
|
flavors = "flavor1,flavor2"
|
||||||
|
self.harness.begin()
|
||||||
|
hypervisor_snap_mock = MagicMock()
|
||||||
|
hypervisor_snap_mock.present = True
|
||||||
|
self.snap.SnapCache.return_value = {
|
||||||
|
"openstack-hypervisor": hypervisor_snap_mock
|
||||||
|
}
|
||||||
|
hypervisor_snap_mock.get.return_value = flavors
|
||||||
|
action_output = self.harness.run_action("list-flavors")
|
||||||
|
assert action_output.results["result"] == flavors
|
||||||
|
Loading…
x
Reference in New Issue
Block a user