Merge "Allow update host API to add new extra capabilities"
This commit is contained in:
commit
a47dfb107f
blazar
releasenotes/notes
@ -302,8 +302,6 @@ class PhysicalHostPlugin(base.BasePlugin, nova.NovaClientWrapper):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def update_computehost(self, host_id, values):
|
def update_computehost(self, host_id, values):
|
||||||
# NOTE (sbauza): Only update existing extra capabilites, don't create
|
|
||||||
# other ones
|
|
||||||
if values:
|
if values:
|
||||||
cant_update_extra_capability = []
|
cant_update_extra_capability = []
|
||||||
for value in values:
|
for value in values:
|
||||||
@ -311,17 +309,29 @@ class PhysicalHostPlugin(base.BasePlugin, nova.NovaClientWrapper):
|
|||||||
host_id,
|
host_id,
|
||||||
value,
|
value,
|
||||||
)
|
)
|
||||||
for raw_capability in capabilities:
|
if capabilities:
|
||||||
capability = {
|
for raw_capability in capabilities:
|
||||||
|
capability = {
|
||||||
|
'capability_name': value,
|
||||||
|
'capability_value': values[value],
|
||||||
|
}
|
||||||
|
try:
|
||||||
|
db_api.host_extra_capability_update(
|
||||||
|
raw_capability['id'], capability)
|
||||||
|
except (db_ex.BlazarDBException, RuntimeError):
|
||||||
|
cant_update_extra_capability.append(
|
||||||
|
raw_capability['capability_name'])
|
||||||
|
else:
|
||||||
|
new_capability = {
|
||||||
|
'computehost_id': host_id,
|
||||||
'capability_name': value,
|
'capability_name': value,
|
||||||
'capability_value': values[value],
|
'capability_value': values[value],
|
||||||
}
|
}
|
||||||
try:
|
try:
|
||||||
db_api.host_extra_capability_update(
|
db_api.host_extra_capability_create(new_capability)
|
||||||
raw_capability['id'], capability)
|
except (db_ex.BlazarDBException, RuntimeError):
|
||||||
except RuntimeError:
|
|
||||||
cant_update_extra_capability.append(
|
cant_update_extra_capability.append(
|
||||||
raw_capability['capability_name'])
|
new_capability['capability_name'])
|
||||||
if cant_update_extra_capability:
|
if cant_update_extra_capability:
|
||||||
raise manager_ex.CantAddExtraCapability(
|
raise manager_ex.CantAddExtraCapability(
|
||||||
host=host_id,
|
host=host_id,
|
||||||
|
@ -267,6 +267,18 @@ class PhysicalHostPluginTestCase(tests.TestCase):
|
|||||||
self.fake_phys_plugin.update_computehost,
|
self.fake_phys_plugin.update_computehost,
|
||||||
self.fake_host_id, host_values)
|
self.fake_host_id, host_values)
|
||||||
|
|
||||||
|
def test_update_host_with_new_extra_capability(self):
|
||||||
|
host_values = {'buzz': 'word'}
|
||||||
|
|
||||||
|
self.db_host_extra_capability_get_all_per_name.return_value = []
|
||||||
|
self.fake_phys_plugin.update_computehost(self.fake_host_id,
|
||||||
|
host_values)
|
||||||
|
self.db_host_extra_capability_create.assert_called_once_with({
|
||||||
|
'computehost_id': '1',
|
||||||
|
'capability_name': 'buzz',
|
||||||
|
'capability_value': 'word'
|
||||||
|
})
|
||||||
|
|
||||||
def test_delete_host(self):
|
def test_delete_host(self):
|
||||||
self.fake_phys_plugin.delete_computehost(self.fake_host_id)
|
self.fake_phys_plugin.delete_computehost(self.fake_host_id)
|
||||||
|
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
The update host API now allows new extra capabilities to be created on
|
||||||
|
existing hosts, in addition to allowing values of existing keys to be
|
||||||
|
modified. However, extra capabilities cannot yet be removed due to lack of
|
||||||
|
API support. As a workaround, operators can delete hosts and recreate them.
|
Loading…
x
Reference in New Issue
Block a user