[train-only] Honour DeploymentServerBlacklist
With external-update/upgrade run, --limit is not mandatory, as it can be run on all nodes. However, we don't seem to honor blacklisted hosts. This is fine from ussuri onwards after we dropped mistral[1] and used deployment.config_download() for all these. [1] https://review.opendev.org/c/openstack/python-tripleoclient/+/707894 Change-Id: I7072617770d258b2ba790fa274d2153c01bfe650
This commit is contained in:
parent
4203d1792e
commit
935c6592cd
|
@ -34,6 +34,8 @@ class TestOvercloudExternalUpdateRun(fakes.TestOvercloudExternalUpdateRun):
|
|||
self.mock_uuid4 = uuid4_patcher.start()
|
||||
self.addCleanup(self.mock_uuid4.stop)
|
||||
|
||||
@mock.patch('tripleoclient.utils.get_stack_output_item',
|
||||
autospec=True)
|
||||
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
|
||||
return_value='/home/fake/inventory.yaml')
|
||||
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
|
||||
|
@ -44,7 +46,8 @@ class TestOvercloudExternalUpdateRun(fakes.TestOvercloudExternalUpdateRun):
|
|||
@mock.patch('oslo_concurrency.processutils.execute')
|
||||
def test_update_with_user_and_tags(self, mock_execute,
|
||||
mock_expanduser, update_ansible,
|
||||
mock_confirm, mock_inventory):
|
||||
mock_confirm, mock_inventory,
|
||||
mock_stack_output):
|
||||
mock_expanduser.return_value = '/home/fake/'
|
||||
argslist = ['--ssh-user', 'tripleo-admin',
|
||||
'--tags', 'ceph']
|
||||
|
@ -52,7 +55,7 @@ class TestOvercloudExternalUpdateRun(fakes.TestOvercloudExternalUpdateRun):
|
|||
('ssh_user', 'tripleo-admin'),
|
||||
('tags', 'ceph'),
|
||||
]
|
||||
|
||||
mock_stack_output.return_value = []
|
||||
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
|
||||
with mock.patch('os.path.exists') as mock_exists:
|
||||
mock_exists.return_value = True
|
||||
|
@ -70,6 +73,8 @@ class TestOvercloudExternalUpdateRun(fakes.TestOvercloudExternalUpdateRun):
|
|||
extra_vars={}
|
||||
)
|
||||
|
||||
@mock.patch('tripleoclient.utils.get_stack_output_item',
|
||||
autospec=True)
|
||||
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
|
||||
return_value='/home/stack/inventory.yaml')
|
||||
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
|
||||
|
@ -80,7 +85,8 @@ class TestOvercloudExternalUpdateRun(fakes.TestOvercloudExternalUpdateRun):
|
|||
@mock.patch('oslo_concurrency.processutils.execute')
|
||||
def test_update_with_user_and_extra_vars(self, mock_execute,
|
||||
mock_expanduser, update_ansible,
|
||||
mock_confirm, mock_inventory):
|
||||
mock_confirm, mock_inventory,
|
||||
mock_stack_output):
|
||||
mock_expanduser.return_value = '/home/fake/'
|
||||
argslist = ['--ssh-user', 'tripleo-admin',
|
||||
'--extra-vars', 'key1=val1',
|
||||
|
@ -89,7 +95,7 @@ class TestOvercloudExternalUpdateRun(fakes.TestOvercloudExternalUpdateRun):
|
|||
('ssh_user', 'tripleo-admin'),
|
||||
('extra_vars', ['key1=val1', 'key2=val2'])
|
||||
]
|
||||
|
||||
mock_stack_output.return_value = ['compute1']
|
||||
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
|
||||
with mock.patch('os.path.exists') as mock_exists:
|
||||
mock_exists.return_value = True
|
||||
|
@ -97,7 +103,7 @@ class TestOvercloudExternalUpdateRun(fakes.TestOvercloudExternalUpdateRun):
|
|||
update_ansible.assert_called_once_with(
|
||||
self.app.client_manager,
|
||||
container='overcloud',
|
||||
nodes=None,
|
||||
nodes='!compute1',
|
||||
inventory_file=mock_inventory.return_value,
|
||||
playbook='external_update_steps_playbook.yaml',
|
||||
node_user='tripleo-admin',
|
||||
|
|
|
@ -34,6 +34,8 @@ class TestOvercloudExternalUpgradeRun(fakes.TestOvercloudExternalUpgradeRun):
|
|||
self.mock_uuid4 = uuid4_patcher.start()
|
||||
self.addCleanup(self.mock_uuid4.stop)
|
||||
|
||||
@mock.patch('tripleoclient.utils.get_stack_output_item',
|
||||
autospec=True)
|
||||
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
|
||||
return_value='/home/fake/inventory.yaml')
|
||||
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
|
||||
|
@ -44,7 +46,8 @@ class TestOvercloudExternalUpgradeRun(fakes.TestOvercloudExternalUpgradeRun):
|
|||
@mock.patch('oslo_concurrency.processutils.execute')
|
||||
def test_upgrade_with_user_and_tags(self, mock_execute,
|
||||
mock_expanduser, update_ansible,
|
||||
mock_confirm, mock_inventory):
|
||||
mock_confirm, mock_inventory,
|
||||
mock_stack_output):
|
||||
mock_expanduser.return_value = '/home/fake/'
|
||||
argslist = ['--ssh-user', 'tripleo-admin',
|
||||
'--tags', 'ceph']
|
||||
|
@ -52,7 +55,7 @@ class TestOvercloudExternalUpgradeRun(fakes.TestOvercloudExternalUpgradeRun):
|
|||
('ssh_user', 'tripleo-admin'),
|
||||
('tags', 'ceph'),
|
||||
]
|
||||
|
||||
mock_stack_output.return_value = []
|
||||
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
|
||||
with mock.patch('os.path.exists') as mock_exists:
|
||||
mock_exists.return_value = True
|
||||
|
@ -70,6 +73,8 @@ class TestOvercloudExternalUpgradeRun(fakes.TestOvercloudExternalUpgradeRun):
|
|||
extra_vars={}
|
||||
)
|
||||
|
||||
@mock.patch('tripleoclient.utils.get_stack_output_item',
|
||||
autospec=True)
|
||||
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
|
||||
return_value='/home/fake/inventory.yaml')
|
||||
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
|
||||
|
@ -80,7 +85,8 @@ class TestOvercloudExternalUpgradeRun(fakes.TestOvercloudExternalUpgradeRun):
|
|||
@mock.patch('oslo_concurrency.processutils.execute')
|
||||
def test_upgrade_with_user_and_extra_vars(self, mock_execute,
|
||||
mock_expanduser, update_ansible,
|
||||
mock_confirm, mock_inventory):
|
||||
mock_confirm, mock_inventory,
|
||||
mock_stack_output):
|
||||
mock_expanduser.return_value = '/home/fake/'
|
||||
argslist = ['--ssh-user', 'tripleo-admin',
|
||||
'--extra-vars', 'key1=val1',
|
||||
|
@ -89,7 +95,7 @@ class TestOvercloudExternalUpgradeRun(fakes.TestOvercloudExternalUpgradeRun):
|
|||
('ssh_user', 'tripleo-admin'),
|
||||
('extra_vars', ['key1=val1', 'key2=val2'])
|
||||
]
|
||||
|
||||
mock_stack_output.return_value = ['compute1', 'compute2']
|
||||
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
|
||||
with mock.patch('os.path.exists') as mock_exists:
|
||||
mock_exists.return_value = True
|
||||
|
@ -97,7 +103,7 @@ class TestOvercloudExternalUpgradeRun(fakes.TestOvercloudExternalUpgradeRun):
|
|||
update_ansible.assert_called_once_with(
|
||||
self.app.client_manager,
|
||||
container='overcloud',
|
||||
nodes=None,
|
||||
nodes='!compute1:!compute2',
|
||||
inventory_file=mock_inventory.return_value,
|
||||
playbook='external_upgrade_steps_playbook.yaml',
|
||||
node_user='tripleo-admin',
|
||||
|
|
|
@ -1402,6 +1402,12 @@ def run_update_ansible_action(log, clients, stack, nodes, inventory,
|
|||
verbosity='1', extra_vars=None,
|
||||
workdir='', priv_key='', forks=None):
|
||||
|
||||
if not nodes:
|
||||
stack_obj = get_stack(clients.orchestration, stack)
|
||||
blacklist = get_stack_output_item(stack_obj, 'BlacklistedHostnames')
|
||||
if blacklist:
|
||||
nodes = ':'.join(['!%s' % host for host in blacklist if host])
|
||||
|
||||
playbooks = [playbook]
|
||||
if playbook == "all":
|
||||
playbooks = all_playbooks
|
||||
|
|
Loading…
Reference in New Issue