Merge "Get deployment status to check if plan and stack exists on the env" into stable/train

This commit is contained in:
Zuul 2021-02-10 11:46:41 +00:00 committed by Gerrit Code Review
commit 587b95511b
7 changed files with 126 additions and 76 deletions

View File

@ -1258,9 +1258,17 @@ class GetTripleoAnsibleInventory(TestCase):
self.ssh_user = 'heat_admin'
self.stack = 'foo-overcloud'
@mock.patch('tripleoclient.utils.run_command_and_log')
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
autospec=True)
def test_get_tripleo_ansible_inventory(self, mock_inventory):
def test_get_tripleo_ansible_inventory(self,
mock_inventory,
mock_run_cmd):
mock_run_cmd.command = ['/usr/bin/tripleo-ansible-inventory',
'--os-cloud', 'undercloud',
'--stack', self.stack,
'--ansible_ssh_user', self.ssh_user]
with mock.patch('os.path.exists') as mock_exists:
mock_exists.return_value = True

View File

@ -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_tripleo_ansible_inventory',
return_value='/home/fake/inventory.yaml')
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
return_value=True)
@mock.patch('tripleoclient.workflows.package_update.update_ansible',
@ -42,7 +44,7 @@ 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_confirm, mock_inventory):
mock_expanduser.return_value = '/home/fake/'
argslist = ['--ssh-user', 'tripleo-admin',
'--tags', 'ceph']
@ -52,15 +54,14 @@ class TestOvercloudExternalUpdateRun(fakes.TestOvercloudExternalUpdateRun):
]
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
with mock.patch('os.path.exists') as mock_exists, \
mock.patch('six.moves.builtins.open') as mock_open:
with mock.patch('os.path.exists') as mock_exists:
mock_exists.return_value = True
self.cmd.take_action(parsed_args)
update_ansible.assert_called_once_with(
self.app.client_manager,
container='overcloud',
nodes=None,
inventory_file=mock_open().__enter__().read(),
inventory_file=mock_inventory.return_value,
playbook='external_update_steps_playbook.yaml',
node_user='tripleo-admin',
tags='ceph',
@ -69,6 +70,8 @@ class TestOvercloudExternalUpdateRun(fakes.TestOvercloudExternalUpdateRun):
extra_vars={}
)
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
return_value='/home/stack/inventory.yaml')
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
return_value=True)
@mock.patch('tripleoclient.workflows.package_update.update_ansible',
@ -77,7 +80,7 @@ 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_confirm, mock_inventory):
mock_expanduser.return_value = '/home/fake/'
argslist = ['--ssh-user', 'tripleo-admin',
'--extra-vars', 'key1=val1',
@ -88,15 +91,14 @@ class TestOvercloudExternalUpdateRun(fakes.TestOvercloudExternalUpdateRun):
]
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
with mock.patch('os.path.exists') as mock_exists, \
mock.patch('six.moves.builtins.open') as mock_open:
with mock.patch('os.path.exists') as mock_exists:
mock_exists.return_value = True
self.cmd.take_action(parsed_args)
update_ansible.assert_called_once_with(
self.app.client_manager,
container='overcloud',
nodes=None,
inventory_file=mock_open().__enter__().read(),
inventory_file=mock_inventory.return_value,
playbook='external_update_steps_playbook.yaml',
node_user='tripleo-admin',
tags='',

View File

@ -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_tripleo_ansible_inventory',
return_value='/home/fake/inventory.yaml')
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
return_value=True)
@mock.patch('tripleoclient.workflows.package_update.update_ansible',
@ -42,7 +44,7 @@ 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_confirm, mock_inventory):
mock_expanduser.return_value = '/home/fake/'
argslist = ['--ssh-user', 'tripleo-admin',
'--tags', 'ceph']
@ -52,15 +54,14 @@ class TestOvercloudExternalUpgradeRun(fakes.TestOvercloudExternalUpgradeRun):
]
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
with mock.patch('os.path.exists') as mock_exists, \
mock.patch('six.moves.builtins.open') as mock_open:
with mock.patch('os.path.exists') as mock_exists:
mock_exists.return_value = True
self.cmd.take_action(parsed_args)
update_ansible.assert_called_once_with(
self.app.client_manager,
container='overcloud',
nodes=None,
inventory_file=mock_open().__enter__().read(),
inventory_file=mock_inventory.return_value,
playbook='external_upgrade_steps_playbook.yaml',
node_user='tripleo-admin',
tags='ceph',
@ -69,6 +70,8 @@ class TestOvercloudExternalUpgradeRun(fakes.TestOvercloudExternalUpgradeRun):
extra_vars={}
)
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
return_value='/home/fake/inventory.yaml')
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
return_value=True)
@mock.patch('tripleoclient.workflows.package_update.update_ansible',
@ -77,7 +80,7 @@ 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_confirm, mock_inventory):
mock_expanduser.return_value = '/home/fake/'
argslist = ['--ssh-user', 'tripleo-admin',
'--extra-vars', 'key1=val1',
@ -88,15 +91,14 @@ class TestOvercloudExternalUpgradeRun(fakes.TestOvercloudExternalUpgradeRun):
]
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
with mock.patch('os.path.exists') as mock_exists, \
mock.patch('six.moves.builtins.open') as mock_open:
with mock.patch('os.path.exists') as mock_exists:
mock_exists.return_value = True
self.cmd.take_action(parsed_args)
update_ansible.assert_called_once_with(
self.app.client_manager,
container='overcloud',
nodes=None,
inventory_file=mock_open().__enter__().read(),
inventory_file=mock_inventory.return_value,
playbook='external_upgrade_steps_playbook.yaml',
node_user='tripleo-admin',
tags='',

View File

@ -134,6 +134,8 @@ class TestOvercloudUpdateRun(fakes.TestOvercloudUpdateRun):
self.mock_uuid4 = uuid4_patcher.start()
self.addCleanup(self.mock_uuid4.stop)
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
return_value='/home/fake/inventory.yaml')
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
return_value=True)
@mock.patch('tripleoclient.workflows.package_update.update_ansible',
@ -142,7 +144,7 @@ class TestOvercloudUpdateRun(fakes.TestOvercloudUpdateRun):
@mock.patch('oslo_concurrency.processutils.execute')
def test_update_with_playbook_and_user(self, mock_execute,
mock_expanduser, update_ansible,
mock_confirm):
mock_confirm, mock_inventory):
mock_expanduser.return_value = '/home/fake/'
argslist = ['--limit', 'Compute',
'--playbook', 'fake-playbook.yaml',
@ -155,15 +157,14 @@ class TestOvercloudUpdateRun(fakes.TestOvercloudUpdateRun):
]
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
with mock.patch('os.path.exists') as mock_exists, \
mock.patch('six.moves.builtins.open') as mock_open:
with mock.patch('os.path.exists') as mock_exists:
mock_exists.return_value = True
self.cmd.take_action(parsed_args)
update_ansible.assert_called_once_with(
self.app.client_manager,
container='overcloud',
nodes='Compute',
inventory_file=mock_open().__enter__().read(),
inventory_file=mock_inventory.return_value,
playbook='fake-playbook.yaml',
node_user='tripleo-admin',
tags=None,
@ -172,6 +173,8 @@ class TestOvercloudUpdateRun(fakes.TestOvercloudUpdateRun):
extra_vars=None
)
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
return_value='/home/fake/inventory.yaml')
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
return_value=True)
@mock.patch('tripleoclient.workflows.package_update.update_ansible',
@ -180,7 +183,7 @@ class TestOvercloudUpdateRun(fakes.TestOvercloudUpdateRun):
@mock.patch('oslo_concurrency.processutils.execute')
def test_update_limit_with_all_playbooks(self, mock_execute,
mock_expanduser, update_ansible,
mock_confirm):
mock_confirm, mock_inventory):
mock_expanduser.return_value = '/home/fake/'
argslist = ['--limit', 'Compute', '--playbook', 'all']
verifylist = [
@ -190,8 +193,7 @@ class TestOvercloudUpdateRun(fakes.TestOvercloudUpdateRun):
]
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
with mock.patch('os.path.exists') as mock_exists, \
mock.patch('six.moves.builtins.open') as mock_open:
with mock.patch('os.path.exists') as mock_exists:
mock_exists.return_value = True
self.cmd.take_action(parsed_args)
for book in constants.MINOR_UPDATE_PLAYBOOKS:
@ -199,7 +201,7 @@ class TestOvercloudUpdateRun(fakes.TestOvercloudUpdateRun):
self.app.client_manager,
container='overcloud',
nodes='Compute',
inventory_file=mock_open().__enter__().read(),
inventory_file=mock_inventory.return_value,
playbook=book,
node_user='tripleo-admin',
tags=None,

View File

@ -149,6 +149,8 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
self.mock_uuid4 = uuid4_patcher.start()
self.addCleanup(self.mock_uuid4.stop)
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
return_value='/home/fake/inventory.yaml')
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
return_value=True)
@mock.patch('tripleoclient.workflows.package_update.update_ansible',
@ -157,7 +159,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
@mock.patch('oslo_concurrency.processutils.execute')
def test_upgrade_limit_with_playbook_and_user(
self, mock_execute, mock_expanduser, upgrade_ansible,
mock_confirm):
mock_confirm, mock_inventory):
mock_expanduser.return_value = '/home/fake/'
argslist = ['--limit', 'Compute, Controller',
'--playbook', 'fake-playbook.yaml',
@ -170,15 +172,14 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
with mock.patch('os.path.exists') as mock_exists, \
mock.patch('six.moves.builtins.open') as mock_open:
with mock.patch('os.path.exists') as mock_exists:
mock_exists.return_value = True
self.cmd.take_action(parsed_args)
upgrade_ansible.assert_called_once_with(
self.app.client_manager,
container='overcloud',
nodes='Compute:Controller',
inventory_file=mock_open().__enter__().read(),
inventory_file=mock_inventory.return_value,
playbook='fake-playbook.yaml',
node_user='tripleo-admin',
tags='',
@ -187,6 +188,8 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
extra_vars=None
)
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
return_value='/home/fake/inventory.yaml')
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
return_value=True)
@mock.patch('tripleoclient.workflows.package_update.update_ansible',
@ -195,7 +198,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
@mock.patch('oslo_concurrency.processutils.execute')
def test_upgrade_limit_all_playbooks_skip_validation(
self, mock_execute, mock_expanduser, upgrade_ansible,
mock_confirm):
mock_confirm, mock_inventory):
mock_expanduser.return_value = '/home/fake/'
argslist = ['--limit', 'Compute', '--playbook', 'all',
'--skip-tags', 'validation']
@ -207,8 +210,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
]
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
with mock.patch('os.path.exists') as mock_exists, \
mock.patch('six.moves.builtins.open') as mock_open:
with mock.patch('os.path.exists') as mock_exists:
mock_exists.return_value = True
self.cmd.take_action(parsed_args)
for book in constants.MAJOR_UPGRADE_PLAYBOOKS:
@ -216,7 +218,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
self.app.client_manager,
container='overcloud',
nodes='Compute',
inventory_file=mock_open().__enter__().read(),
inventory_file=mock_inventory.return_value,
playbook=book,
node_user='tripleo-admin',
tags='',
@ -225,6 +227,8 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
extra_vars=None
)
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
return_value='/home/fake/inventory.yaml')
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
return_value=True)
@mock.patch('tripleoclient.workflows.package_update.update_ansible',
@ -233,7 +237,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
@mock.patch('oslo_concurrency.processutils.execute')
def test_upgrade_limit_all_playbooks_only_validation(
self, mock_execute, mock_expanduser, upgrade_ansible,
mock_confirm):
mock_confirm, mock_inventory):
mock_expanduser.return_value = '/home/fake/'
argslist = ['--limit', 'Compute', '--playbook', 'all',
'--tags', 'validation']
@ -245,8 +249,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
]
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
with mock.patch('os.path.exists') as mock_exists, \
mock.patch('six.moves.builtins.open') as mock_open:
with mock.patch('os.path.exists') as mock_exists:
mock_exists.return_value = True
self.cmd.take_action(parsed_args)
for book in constants.MAJOR_UPGRADE_PLAYBOOKS:
@ -254,7 +257,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
self.app.client_manager,
container='overcloud',
nodes='Compute',
inventory_file=mock_open().__enter__().read(),
inventory_file=mock_inventory.return_value,
playbook=book,
node_user='tripleo-admin',
tags='validation',
@ -263,6 +266,8 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
extra_vars=None
)
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
return_value='/home/fake/inventory.yaml')
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
return_value=True)
@mock.patch('tripleoclient.workflows.package_update.update_ansible',
@ -271,7 +276,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
@mock.patch('oslo_concurrency.processutils.execute')
def test_upgrade_nodes_with_playbook_no_skip_tags(
self, mock_execute, mock_expanduser, upgrade_ansible,
mock_confirm):
mock_confirm, mock_inventory):
mock_expanduser.return_value = '/home/fake/'
argslist = ['--limit', 'compute-0,compute-1',
'--playbook', 'fake-playbook.yaml', ]
@ -282,15 +287,14 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
]
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
with mock.patch('os.path.exists') as mock_exists, \
mock.patch('six.moves.builtins.open') as mock_open:
with mock.patch('os.path.exists') as mock_exists:
mock_exists.return_value = True
self.cmd.take_action(parsed_args)
upgrade_ansible.assert_called_once_with(
self.app.client_manager,
container='overcloud',
nodes='compute-0:compute-1',
inventory_file=mock_open().__enter__().read(),
inventory_file=mock_inventory.return_value,
playbook='fake-playbook.yaml',
node_user='tripleo-admin',
tags='',
@ -299,6 +303,8 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
extra_vars=None
)
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
return_value='/home/fake/inventory.yaml')
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
return_value=True)
@mock.patch('tripleoclient.workflows.package_update.update_ansible',
@ -307,7 +313,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
@mock.patch('oslo_concurrency.processutils.execute')
def test_upgrade_node_all_playbooks_skip_tags_default(
self, mock_execute, mock_expanduser, upgrade_ansible,
mock_confirm):
mock_confirm, mock_inventory):
mock_expanduser.return_value = '/home/fake/'
argslist = ['--limit', 'swift-1', '--playbook', 'all']
verifylist = [
@ -317,8 +323,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
]
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
with mock.patch('os.path.exists') as mock_exists, \
mock.patch('six.moves.builtins.open') as mock_open:
with mock.patch('os.path.exists') as mock_exists:
mock_exists.return_value = True
self.cmd.take_action(parsed_args)
for book in constants.MAJOR_UPGRADE_PLAYBOOKS:
@ -326,7 +331,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
self.app.client_manager,
container='overcloud',
nodes='swift-1',
inventory_file=mock_open().__enter__().read(),
inventory_file=mock_inventory.return_value,
playbook=book,
node_user='tripleo-admin',
tags='',
@ -335,6 +340,8 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
extra_vars=None
)
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
return_value='/home/fake/inventory.yaml')
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
return_value=True)
@mock.patch('tripleoclient.workflows.package_update.update_ansible',
@ -343,7 +350,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
@mock.patch('oslo_concurrency.processutils.execute')
def test_upgrade_node_all_playbooks_skip_tags_all_supported(
self, mock_execute, mock_expanduser, upgrade_ansible,
mock_confirm):
mock_confirm, mock_inventory):
mock_expanduser.return_value = '/home/fake/'
argslist = ['--limit', 'swift-1', '--playbook', 'all',
'--skip-tags', 'pre-upgrade,validation']
@ -355,8 +362,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
]
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
with mock.patch('os.path.exists') as mock_exists, \
mock.patch('six.moves.builtins.open') as mock_open:
with mock.patch('os.path.exists') as mock_exists:
mock_exists.return_value = True
self.cmd.take_action(parsed_args)
for book in constants.MAJOR_UPGRADE_PLAYBOOKS:
@ -364,7 +370,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
self.app.client_manager,
container='overcloud',
nodes='swift-1',
inventory_file=mock_open().__enter__().read(),
inventory_file=mock_inventory.return_value,
playbook=book,
node_user='tripleo-admin',
tags='',
@ -385,6 +391,8 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
self.assertRaises(ParserException, lambda: self.check_parser(
self.cmd, argslist, verifylist))
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
return_value='/home/fake/inventory.yaml')
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
return_value=True)
@mock.patch('tripleoclient.workflows.package_update.update_ansible',
@ -394,7 +402,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
# it is 'validation' not 'validations'
def test_upgrade_skip_tags_validations(self, mock_execute,
mock_expanduser, upgrade_ansible,
mock_confirm):
mock_confirm, mock_inventory):
mock_expanduser.return_value = '/home/fake/'
argslist = ['--limit', 'overcloud-compute-1',
'--skip-tags', 'validations']
@ -411,6 +419,8 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
self.assertRaises(exceptions.InvalidConfiguration,
lambda: self.cmd.take_action(parsed_args))
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
return_value='/home/fake/inventory.yaml')
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
return_value=True)
@mock.patch('tripleoclient.workflows.package_update.update_ansible',
@ -420,7 +430,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
# should only support the constants.MAJOR_UPGRADE_SKIP_TAGS
def test_upgrade_skip_tags_unsupported_validation_anything_else(
self, mock_execute, mock_expanduser, upgrade_ansible,
mock_confirm):
mock_confirm, mock_inventory):
mock_expanduser.return_value = '/home/fake/'
argslist = ['--limit', 'overcloud-compute-1',
'--skip-tags', 'validation,anything-else']
@ -437,6 +447,8 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
self.assertRaises(exceptions.InvalidConfiguration,
lambda: self.cmd.take_action(parsed_args))
@mock.patch('tripleoclient.utils.get_tripleo_ansible_inventory',
return_value='/home/fake/inventory.yaml')
@mock.patch('tripleoclient.utils.prompt_user_for_confirmation',
return_value=True)
@mock.patch('tripleoclient.workflows.package_update.update_ansible',
@ -446,7 +458,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
# should only support the constants.MAJOR_UPGRADE_SKIP_TAGS
def test_upgrade_skip_tags_unsupported_pre_upgrade_anything_else(
self, mock_execute, mock_expanduser, upgrade_ansible,
mock_confirm):
mock_confirm, mock_inventory):
mock_expanduser.return_value = '/home/fake/'
argslist = ['--limit', 'overcloud-compute-1',
'--skip-tags', 'pre-upgrade,anything-else']

View File

@ -1269,20 +1269,27 @@ def get_tripleo_ansible_inventory(inventory_file=None,
undercloud_connection='ssh',
return_inventory_file_path=False):
if not inventory_file:
inventory_file = '%s/%s' % (os.path.expanduser('~'),
'tripleo-ansible-inventory.yaml')
try:
processutils.execute(
'/usr/bin/tripleo-ansible-inventory',
'--stack', stack,
'--ansible_ssh_user', ssh_user,
'--undercloud-connection', undercloud_connection,
'--undercloud-key-file',
'/var/lib/mistral/.ssh/tripleo-admin-rsa',
'--os-cloud', 'undercloud',
'--static-yaml-inventory', inventory_file)
except processutils.ProcessExecutionError as e:
message = _("Failed to generate inventory: %s") % str(e)
inventory_file = os.path.join(
constants.CLOUD_HOME_DIR,
'tripleo-ansible-inventory.yaml'
)
command = ['/usr/bin/tripleo-ansible-inventory',
'--os-cloud', 'undercloud']
if stack:
command.extend(['--stack', stack])
command.extend(['--undercloud-key-file',
'/var/lib/mistral/.ssh/tripleo-admin-rsa'])
if ssh_user:
command.extend(['--ansible_ssh_user', ssh_user])
if undercloud_connection:
command.extend(['--undercloud-connection',
undercloud_connection])
if inventory_file:
command.extend(['--static-yaml-inventory', inventory_file])
rc = run_command_and_log(LOG, command)
if rc != 0:
message = "Failed to generate inventory"
raise exceptions.InvalidConfiguration(message)
if os.path.exists(inventory_file):
if return_inventory_file_path:

View File

@ -27,7 +27,7 @@ from prettytable import PrettyTable
from tripleoclient import command
from tripleoclient import constants
from tripleoclient import utils as oooutils
from tripleoclient.workflows import plan_management
from tripleoclient.workflows import deployment
from validations_libs import constants as v_consts
from validations_libs import utils as v_utils
@ -39,6 +39,7 @@ LOG = logging.getLogger(__name__ + ".TripleoValidator")
RED = "\033[1;31m"
GREEN = "\033[0;32m"
CYAN = "\033[36m"
YELLOW = "\033[0;33m"
RESET = "\033[0;0m"
FAILED_VALIDATION = "{}FAILED{}".format(RED, RESET)
@ -46,6 +47,8 @@ PASSED_VALIDATION = "{}PASSED{}".format(GREEN, RESET)
GROUP_FILE = constants.VALIDATION_GROUPS_INFO
NO_VALIDATION_STATE = ['DEPLOY_FAILED', 'DEPLOYING']
class _CommaListGroupAction(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
@ -233,10 +236,17 @@ class TripleOValidatorRun(command.Command):
parser.add_argument(
'--plan', '--stack',
dest='plan',
default='overcloud',
default=None,
help=_("Execute the validations using a custom plan name")
)
parser.add_argument(
'--ssh-user',
dest='ssh_user',
default='heat-admin',
help=_("Ssh User name for the Overcloud ssh connection.")
)
parser.add_argument(
'--limit', action='store', required=False, help=_(
"A string that identifies a single node or comma-separated"
@ -328,6 +338,8 @@ class TripleOValidatorRun(command.Command):
def _run_validator_run(self, parsed_args):
LOG = logging.getLogger(__name__ + ".ValidationsRunAnsible")
plan = parsed_args.plan
# Try to perform OpenStack authentication, if no authentication
# and static inventory provided continue, else raise error.
try:
@ -335,18 +347,23 @@ class TripleOValidatorRun(command.Command):
clients._auth_required = True
clients.setup_auth()
except os_exceptions.ConfigException:
LOG.warning("Running Validations without authentication.")
msg = "Running Validations without authentication."
LOG.warning("{}{}{}".format(YELLOW, msg, RESET))
if not parsed_args.static_inventory:
raise exceptions.CommandError(
"No static inventory provided, please provide a valid"
"inventory or use authentication.")
else:
plans = plan_management.list_deployment_plans(clients)
if parsed_args.plan and parsed_args.plan not in plans:
raise exceptions.CommandError(
"The plan '{}' doesn't exist. "
"Please use one of those {}".format(parsed_args,
plans))
if plan:
status = deployment.get_deployment_status(clients, plan)
if not status or status in NO_VALIDATION_STATE:
raise exceptions.CommandError(
"The plan and the stack '{}' doesn't exist OR are "
"in 'failed' or 'deploying' state."
"Please use a valid plan".format(plan))
else:
msg = "Running Validations without Overcloud settings."
LOG.warning("{}{}{}".format(YELLOW, msg, RESET))
limit = parsed_args.limit
extra_vars = parsed_args.extra_vars
if parsed_args.extra_vars_file:
@ -366,7 +383,7 @@ class TripleOValidatorRun(command.Command):
static_inventory = parsed_args.static_inventory
else:
static_inventory = oooutils.get_tripleo_ansible_inventory(
ssh_user='heat-admin',
ssh_user=parsed_args.ssh_user,
stack=parsed_args.plan,
undercloud_connection='local',
return_inventory_file_path=True)