Remove validation workflow calls
These validations have moved to the tripleo-validations repo and are now implemented in Ansible. Remove these calls from the client. Change-Id: Id5c0692e3a1d3f551dcd55822de968ca8753a4eb Implements: blueprint workflow-move-validations
This commit is contained in:
committed by
Dougal Matthews
parent
7236b35c79
commit
8aa0aad36b
@@ -42,13 +42,6 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||
app_args.verbose_level = 1
|
||||
self.cmd = overcloud_deploy.DeployOvercloud(self.app, app_args)
|
||||
|
||||
# mock validations for all deploy tests
|
||||
# for validator tests, see test_overcloud_deploy_validators.py
|
||||
validator_mock = mock.Mock(return_value=(0, 0))
|
||||
self.real_predeploy_verify_capabilities = \
|
||||
self.cmd._predeploy_verify_capabilities
|
||||
self.cmd._predeploy_verify_capabilities = validator_mock
|
||||
|
||||
self.parameter_defaults_env_file = (
|
||||
tempfile.NamedTemporaryFile(mode='w', delete=False).name)
|
||||
self.tmp_dir = self.useFixture(fixtures.TempDir())
|
||||
@@ -1663,105 +1656,6 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||
self.assertRaises(exceptions.StackInProgress,
|
||||
self.cmd.take_action, parsed_args)
|
||||
|
||||
@mock.patch('tripleoclient.workflows.deployment.get_overcloud_hosts')
|
||||
@mock.patch('tripleoclient.workflows.deployment.enable_ssh_admin')
|
||||
@mock.patch('tripleoclient.workflows.deployment.config_download')
|
||||
@mock.patch('tripleoclient.workflows.deployment.get_horizon_url',
|
||||
autospec=True)
|
||||
@mock.patch('tripleoclient.utils.create_tempest_deployer_input',
|
||||
autospec=True)
|
||||
@mock.patch('tripleoclient.utils.get_overcloud_endpoint', autospec=True)
|
||||
@mock.patch('tripleoclient.utils.write_overcloudrc', autospec=True)
|
||||
@mock.patch('tripleoclient.workflows.deployment.overcloudrc',
|
||||
autospec=True)
|
||||
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
||||
'_deploy_tripleo_heat_templates_tmpdir', autospec=True)
|
||||
def test_disable_validations_true(
|
||||
self, mock_deploy_tmpdir,
|
||||
mock_overcloudrc, mock_write_overcloudrc,
|
||||
mock_overcloud_endpoint,
|
||||
mock_create_tempest_deployer_input,
|
||||
mock_get_horizon_url,
|
||||
mock_config_download,
|
||||
mock_enable_ssh_admin,
|
||||
mock_get_overcloud_hosts):
|
||||
clients = self.app.client_manager
|
||||
orchestration_client = clients.orchestration
|
||||
orchestration_client.stacks.get.return_value = mock.Mock()
|
||||
|
||||
arglist = ['--templates', '--disable-validations']
|
||||
verifylist = [
|
||||
('templates', '/usr/share/openstack-tripleo-heat-templates/'),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
|
||||
self.cmd.take_action(parsed_args)
|
||||
self.assertNotCalled(self.cmd._predeploy_verify_capabilities)
|
||||
mock_create_tempest_deployer_input.assert_called_with()
|
||||
|
||||
@mock.patch('tripleoclient.workflows.deployment.get_overcloud_hosts')
|
||||
@mock.patch('tripleoclient.workflows.deployment.enable_ssh_admin')
|
||||
@mock.patch('tripleoclient.workflows.deployment.config_download')
|
||||
@mock.patch('tripleoclient.workflows.deployment.get_horizon_url',
|
||||
autospec=True)
|
||||
@mock.patch('tripleoclient.utils.create_tempest_deployer_input',
|
||||
autospec=True)
|
||||
@mock.patch('tripleoclient.utils.get_overcloud_endpoint', autospec=True)
|
||||
@mock.patch('tripleoclient.utils.write_overcloudrc', autospec=True)
|
||||
@mock.patch('tripleoclient.workflows.deployment.overcloudrc',
|
||||
autospec=True)
|
||||
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
||||
'_deploy_tripleo_heat_templates_tmpdir', autospec=True)
|
||||
def test_disable_validations_false(
|
||||
self, mock_deploy_tmpdir,
|
||||
mock_overcloudrc, mock_write_overcloudrc,
|
||||
mock_overcloud_endpoint,
|
||||
mock_create_tempest_deployer_input,
|
||||
mock_get_horizon_url,
|
||||
mock_config_download,
|
||||
mock_enable_ssh_admin,
|
||||
mock_get_overcloud_hosts):
|
||||
clients = self.app.client_manager
|
||||
orchestration_client = clients.orchestration
|
||||
orchestration_client.stacks.get.return_value = mock.Mock()
|
||||
|
||||
arglist = ['--templates']
|
||||
verifylist = [
|
||||
('templates', '/usr/share/openstack-tripleo-heat-templates/'),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
|
||||
self.cmd.take_action(parsed_args)
|
||||
self.assertTrue(self.cmd._predeploy_verify_capabilities.called)
|
||||
mock_create_tempest_deployer_input.assert_called_with()
|
||||
|
||||
@mock.patch('tripleoclient.workflows.deployment.get_horizon_url',
|
||||
autospec=True)
|
||||
@mock.patch('tripleoclient.utils.get_overcloud_endpoint', autospec=True)
|
||||
@mock.patch('tripleoclient.utils.write_overcloudrc', autospec=True)
|
||||
@mock.patch('tripleoclient.workflows.deployment.overcloudrc',
|
||||
autospec=True)
|
||||
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
||||
'_deploy_tripleo_heat_templates_tmpdir', autospec=True)
|
||||
def test_validations_failure_raises_exception(
|
||||
self, mock_deploy_tmpdir,
|
||||
mock_overcloudrc, mock_write_overcloudrc,
|
||||
mock_overcloud_endpoint, mock_get_horizon_url):
|
||||
clients = self.app.client_manager
|
||||
orchestration_client = clients.orchestration
|
||||
orchestration_client.stacks.get.return_value = mock.Mock()
|
||||
self.cmd._predeploy_verify_capabilities = mock.Mock(
|
||||
return_value=(1, 0))
|
||||
|
||||
arglist = ['--templates']
|
||||
verifylist = [
|
||||
('templates', '/usr/share/openstack-tripleo-heat-templates/'),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
|
||||
self.assertRaises(exceptions.InvalidConfiguration,
|
||||
self.cmd.take_action, parsed_args)
|
||||
|
||||
@mock.patch('tripleoclient.workflows.deployment.get_overcloud_hosts')
|
||||
@mock.patch('tripleoclient.workflows.deployment.enable_ssh_admin')
|
||||
@mock.patch('tripleoclient.workflows.deployment.config_download')
|
||||
@@ -1799,9 +1693,6 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
self.cmd.take_action(parsed_args)
|
||||
self.assertTrue(mock_deploy_tmpdir.called)
|
||||
# FIXME(bogdando) this checks nothing and passes w/o --deployed-server
|
||||
# Verify these mocks and clients aren't invoked with --deployed-server
|
||||
self.assertNotCalled(self.cmd._predeploy_verify_capabilities)
|
||||
self.assertNotCalled(mock_provision)
|
||||
self.assertNotCalled(clients.baremetal)
|
||||
self.assertNotCalled(clients.compute)
|
||||
|
||||
@@ -39,7 +39,6 @@ from tripleoclient import utils
|
||||
from tripleoclient.workflows import deployment
|
||||
from tripleoclient.workflows import parameters as workflow_params
|
||||
from tripleoclient.workflows import plan_management
|
||||
from tripleoclient.workflows import validations
|
||||
|
||||
|
||||
class DeployOvercloud(command.Command):
|
||||
@@ -571,31 +570,6 @@ class DeployOvercloud(command.Command):
|
||||
|
||||
return default_role_counts
|
||||
|
||||
def _predeploy_verify_capabilities(self, stack, parameters, parsed_args):
|
||||
self.predeploy_errors = 0
|
||||
self.predeploy_warnings = 0
|
||||
self.log.debug("Starting _pre_verify_capabilities")
|
||||
|
||||
validation_params = {
|
||||
'deploy_kernel_name': 'bm-deploy-kernel',
|
||||
'deploy_ramdisk_name': 'bm-deploy-ramdisk',
|
||||
'roles_info': utils.get_roles_info(parsed_args),
|
||||
'stack_id': parsed_args.stack,
|
||||
'parameters': parameters,
|
||||
'default_role_counts': self._get_default_role_counts(parsed_args),
|
||||
'run_validations': True,
|
||||
}
|
||||
|
||||
errors, warnings = validations.check_predeployment_validations(
|
||||
self.app.client_manager,
|
||||
**validation_params
|
||||
)
|
||||
|
||||
self.predeploy_errors += errors
|
||||
self.predeploy_warnings += warnings
|
||||
|
||||
return self.predeploy_errors, self.predeploy_warnings
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
# add_help doesn't work properly, set it to False:
|
||||
parser = argparse.ArgumentParser(
|
||||
@@ -703,10 +677,13 @@ class DeployOvercloud(command.Command):
|
||||
'--disable-validations',
|
||||
action='store_true',
|
||||
default=False,
|
||||
help=_('Disable the pre-deployment validations entirely. These '
|
||||
'validations are the built-in pre-deployment validations. '
|
||||
'To enable external validations from tripleo-validations, '
|
||||
'use the --run-validations flag.'))
|
||||
help=_('DEPRECATED. Disable the pre-deployment validations '
|
||||
'entirely. These validations are the built-in '
|
||||
'pre-deployment validations. To enable external '
|
||||
'validations from tripleo-validations, '
|
||||
'use the --run-validations flag. These validations are '
|
||||
'now run via the external validations in '
|
||||
'tripleo-validations.'))
|
||||
parser.add_argument(
|
||||
'--dry-run',
|
||||
action='store_true',
|
||||
@@ -853,30 +830,7 @@ class DeployOvercloud(command.Command):
|
||||
"Unable to deploy as the stack '{}' status is '{}'".format(
|
||||
stack.stack_name, stack.stack_status))
|
||||
|
||||
parameters = self._update_parameters(parsed_args, stack)
|
||||
|
||||
if not parsed_args.disable_validations:
|
||||
errors, warnings = self._predeploy_verify_capabilities(
|
||||
stack, parameters, parsed_args)
|
||||
if errors > 0:
|
||||
self.log.error(
|
||||
"Configuration has %d errors, fix them before "
|
||||
"proceeding. Ignoring these errors is likely to lead to "
|
||||
"a failed deploy.",
|
||||
errors)
|
||||
if parsed_args.validation_warnings_fatal or \
|
||||
parsed_args.validation_errors_fatal:
|
||||
raise exceptions.InvalidConfiguration()
|
||||
if warnings > 0:
|
||||
self.log.error(
|
||||
"Configuration has %d warnings, fix them before "
|
||||
"proceeding.",
|
||||
warnings)
|
||||
if parsed_args.validation_warnings_fatal:
|
||||
raise exceptions.InvalidConfiguration()
|
||||
else:
|
||||
self.log.info("SUCCESS: No warnings or errors in deploy "
|
||||
"configuration, proceeding.")
|
||||
self._update_parameters(parsed_args, stack)
|
||||
|
||||
stack_create = stack is None
|
||||
if stack_create:
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
from tripleoclient.workflows import base
|
||||
|
||||
|
||||
def check_predeployment_validations(clients, **workflow_input):
|
||||
workflow_client = clients.workflow_engine
|
||||
tripleoclients = clients.tripleoclient
|
||||
|
||||
execution = base.start_workflow(
|
||||
workflow_client,
|
||||
'tripleo.validations.v1.check_pre_deployment_validations',
|
||||
workflow_input=workflow_input
|
||||
)
|
||||
|
||||
errors = []
|
||||
warnings = []
|
||||
with tripleoclients.messaging_websocket() as ws:
|
||||
for payload in base.wait_for_messages(workflow_client, ws, execution):
|
||||
if payload.get('message'):
|
||||
print(payload['message'])
|
||||
if 'errors' in payload:
|
||||
errors += payload['errors']
|
||||
if 'warnings' in payload:
|
||||
warnings += payload['warnings']
|
||||
|
||||
if errors:
|
||||
print('ERRORS')
|
||||
print(errors)
|
||||
if warnings:
|
||||
print('WARNINGS')
|
||||
print(warnings)
|
||||
|
||||
return len(errors), len(warnings)
|
||||
Reference in New Issue
Block a user