From 8aa0aad36bf57cab614cf64ab788cfa7c4362897 Mon Sep 17 00:00:00 2001 From: "Brad P. Crochet" Date: Tue, 24 Apr 2018 10:03:09 -0400 Subject: [PATCH] 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 --- .../overcloud_deploy/test_overcloud_deploy.py | 109 ------------------ tripleoclient/v1/overcloud_deploy.py | 62 ++-------- tripleoclient/workflows/validations.py | 43 ------- 3 files changed, 8 insertions(+), 206 deletions(-) delete mode 100644 tripleoclient/workflows/validations.py diff --git a/tripleoclient/tests/v1/overcloud_deploy/test_overcloud_deploy.py b/tripleoclient/tests/v1/overcloud_deploy/test_overcloud_deploy.py index 132cb9978..65a44160b 100644 --- a/tripleoclient/tests/v1/overcloud_deploy/test_overcloud_deploy.py +++ b/tripleoclient/tests/v1/overcloud_deploy/test_overcloud_deploy.py @@ -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) diff --git a/tripleoclient/v1/overcloud_deploy.py b/tripleoclient/v1/overcloud_deploy.py index 470b7daed..d3168fe4a 100644 --- a/tripleoclient/v1/overcloud_deploy.py +++ b/tripleoclient/v1/overcloud_deploy.py @@ -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: diff --git a/tripleoclient/workflows/validations.py b/tripleoclient/workflows/validations.py deleted file mode 100644 index 5c5cca474..000000000 --- a/tripleoclient/workflows/validations.py +++ /dev/null @@ -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)