Run nova manage cell_v2 discover_host after ironic nodes are registered
Once cell_v2 is enabled by default in Ocata we will need to run this command to update the host mappings whenever a new host is added. Change-Id: I0bb98bfcf0c271ae3b577ca126dd3dfdaece179e Depends-On: I591b451197dc3bd0783978f5e3d2b1c830afe54e Related-Bug: #1649341
This commit is contained in:
parent
5d977af0ac
commit
185546cfa5
5
releasenotes/notes/discover_hosts-f1733234ba32a909.yaml
Normal file
5
releasenotes/notes/discover_hosts-f1733234ba32a909.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Run ``nova-manage cell_v2 discover_hosts`` when any baremetal nodes are
|
||||||
|
registered with the undercloud.
|
1
sudoers
1
sudoers
@ -4,4 +4,5 @@ Defaults:mistral !requiretty
|
|||||||
mistral ALL = (validations) NOPASSWD:SETENV: /usr/bin/run-validation
|
mistral ALL = (validations) NOPASSWD:SETENV: /usr/bin/run-validation
|
||||||
mistral ALL = NOPASSWD: /usr/bin/chown validations\: /tmp/validations_identity_*
|
mistral ALL = NOPASSWD: /usr/bin/chown validations\: /tmp/validations_identity_*
|
||||||
mistral ALL = NOPASSWD: /usr/bin/rm -f /tmp/validations_identity_*
|
mistral ALL = NOPASSWD: /usr/bin/rm -f /tmp/validations_identity_*
|
||||||
|
mistral ALL = NOPASSWD: /bin/nova-manage cell_v2 discover_hosts
|
||||||
validations ALL = NOPASSWD: ALL
|
validations ALL = NOPASSWD: ALL
|
||||||
|
@ -190,7 +190,8 @@ class NodesTest(base.TestCase):
|
|||||||
'pm_password': 'random', 'pm_type': 'pxe_ssh', 'name': 'node1',
|
'pm_password': 'random', 'pm_type': 'pxe_ssh', 'name': 'node1',
|
||||||
'capabilities': 'num_nics:6'}
|
'capabilities': 'num_nics:6'}
|
||||||
|
|
||||||
def test_register_all_nodes_ironic_no_hw_stats(self):
|
@mock.patch('tripleo_common.utils.nodes.run_nova_cell_v2_discovery')
|
||||||
|
def test_register_all_nodes_ironic_no_hw_stats(self, mock_discovery):
|
||||||
node_list = [self._get_node()]
|
node_list = [self._get_node()]
|
||||||
|
|
||||||
# Remove the hardware stats from the node dictionary
|
# Remove the hardware stats from the node dictionary
|
||||||
@ -218,8 +219,10 @@ class NodesTest(base.TestCase):
|
|||||||
address='aaa')
|
address='aaa')
|
||||||
ironic.node.create.assert_has_calls([pxe_node, mock.ANY])
|
ironic.node.create.assert_has_calls([pxe_node, mock.ANY])
|
||||||
ironic.port.create.assert_has_calls([port_call])
|
ironic.port.create.assert_has_calls([port_call])
|
||||||
|
mock_discovery.assert_called_once()
|
||||||
|
|
||||||
def test_register_all_nodes(self):
|
@mock.patch('tripleo_common.utils.nodes.run_nova_cell_v2_discovery')
|
||||||
|
def test_register_all_nodes(self, mock_discovery):
|
||||||
node_list = [self._get_node()]
|
node_list = [self._get_node()]
|
||||||
node_properties = {"cpus": "1",
|
node_properties = {"cpus": "1",
|
||||||
"memory_mb": "2048",
|
"memory_mb": "2048",
|
||||||
@ -240,8 +243,10 @@ class NodesTest(base.TestCase):
|
|||||||
address='aaa')
|
address='aaa')
|
||||||
ironic.node.create.assert_has_calls([pxe_node, mock.ANY])
|
ironic.node.create.assert_has_calls([pxe_node, mock.ANY])
|
||||||
ironic.port.create.assert_has_calls([port_call])
|
ironic.port.create.assert_has_calls([port_call])
|
||||||
|
mock_discovery.assert_called_once()
|
||||||
|
|
||||||
def test_register_all_nodes_kernel_ramdisk(self):
|
@mock.patch('tripleo_common.utils.nodes.run_nova_cell_v2_discovery')
|
||||||
|
def test_register_all_nodes_kernel_ramdisk(self, mock_discovery):
|
||||||
node_list = [self._get_node()]
|
node_list = [self._get_node()]
|
||||||
node_properties = {"cpus": "1",
|
node_properties = {"cpus": "1",
|
||||||
"memory_mb": "2048",
|
"memory_mb": "2048",
|
||||||
@ -270,8 +275,10 @@ class NodesTest(base.TestCase):
|
|||||||
address='aaa')
|
address='aaa')
|
||||||
ironic.node.create.assert_has_calls([pxe_node, mock.ANY])
|
ironic.node.create.assert_has_calls([pxe_node, mock.ANY])
|
||||||
ironic.port.create.assert_has_calls([port_call])
|
ironic.port.create.assert_has_calls([port_call])
|
||||||
|
mock_discovery.assert_called_once()
|
||||||
|
|
||||||
def test_register_all_nodes_uuid(self):
|
@mock.patch('tripleo_common.utils.nodes.run_nova_cell_v2_discovery')
|
||||||
|
def test_register_all_nodes_uuid(self, mock_discovery):
|
||||||
node_list = [self._get_node()]
|
node_list = [self._get_node()]
|
||||||
node_list[0]['uuid'] = 'abcdef'
|
node_list[0]['uuid'] = 'abcdef'
|
||||||
node_properties = {"cpus": "1",
|
node_properties = {"cpus": "1",
|
||||||
@ -294,8 +301,10 @@ class NodesTest(base.TestCase):
|
|||||||
address='aaa')
|
address='aaa')
|
||||||
ironic.node.create.assert_has_calls([pxe_node, mock.ANY])
|
ironic.node.create.assert_has_calls([pxe_node, mock.ANY])
|
||||||
ironic.port.create.assert_has_calls([port_call])
|
ironic.port.create.assert_has_calls([port_call])
|
||||||
|
mock_discovery.assert_called_once()
|
||||||
|
|
||||||
def test_register_all_nodes_caps_dict(self):
|
@mock.patch('tripleo_common.utils.nodes.run_nova_cell_v2_discovery')
|
||||||
|
def test_register_all_nodes_caps_dict(self, mock_discovery):
|
||||||
node_list = [self._get_node()]
|
node_list = [self._get_node()]
|
||||||
node_list[0]['capabilities'] = {
|
node_list[0]['capabilities'] = {
|
||||||
'num_nics': 7
|
'num_nics': 7
|
||||||
@ -319,6 +328,7 @@ class NodesTest(base.TestCase):
|
|||||||
address='aaa')
|
address='aaa')
|
||||||
ironic.node.create.assert_has_calls([pxe_node, mock.ANY])
|
ironic.node.create.assert_has_calls([pxe_node, mock.ANY])
|
||||||
ironic.port.create.assert_has_calls([port_call])
|
ironic.port.create.assert_has_calls([port_call])
|
||||||
|
mock_discovery.assert_called_once()
|
||||||
|
|
||||||
def test_register_update(self):
|
def test_register_update(self):
|
||||||
node = self._get_node()
|
node = self._get_node()
|
||||||
|
@ -18,6 +18,7 @@ import re
|
|||||||
|
|
||||||
import six
|
import six
|
||||||
|
|
||||||
|
from oslo_concurrency import processutils
|
||||||
from tripleo_common import exception
|
from tripleo_common import exception
|
||||||
from tripleo_common.utils import glance
|
from tripleo_common.utils import glance
|
||||||
|
|
||||||
@ -381,6 +382,7 @@ def register_all_nodes(nodes_list, client, remove=False, glance_client=None,
|
|||||||
seen.append(node)
|
seen.append(node)
|
||||||
|
|
||||||
_clean_up_extra_nodes(seen, client, remove=remove)
|
_clean_up_extra_nodes(seen, client, remove=remove)
|
||||||
|
run_nova_cell_v2_discovery()
|
||||||
|
|
||||||
return seen
|
return seen
|
||||||
|
|
||||||
@ -443,3 +445,12 @@ def generate_hostmap(baremetal_client, compute_client):
|
|||||||
hostmap[port.address] = {"compute_name": node.name,
|
hostmap[port.address] = {"compute_name": node.name,
|
||||||
"baremetal_name": bm_node.name}
|
"baremetal_name": bm_node.name}
|
||||||
return hostmap
|
return hostmap
|
||||||
|
|
||||||
|
|
||||||
|
def run_nova_cell_v2_discovery():
|
||||||
|
return processutils.execute(
|
||||||
|
'/usr/bin/sudo',
|
||||||
|
'/bin/nova-manage',
|
||||||
|
'cell_v2',
|
||||||
|
'discover_hosts'
|
||||||
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user