Output format is corrected for wf-validate and wb-validate

Output of workflow-validate and workbook-validate was not
correct. Now output will be displayed in tabular format
by default. Output can be customized by user by giving
format option as described in doc.

Change-Id: Ic159f188236a99acbba2d3728a74da438b90e9b2
Closes-Bug: #1499626
This commit is contained in:
hardik
2015-09-24 11:30:05 +05:30
parent 33f5aeb320
commit 19fd616b90
5 changed files with 80 additions and 26 deletions

View File

@@ -21,7 +21,6 @@ from cliff import show
from mistralclient.api.v2 import workbooks from mistralclient.api.v2 import workbooks
from mistralclient.commands.v2 import base from mistralclient.commands.v2 import base
from mistralclient import exceptions as exc
from mistralclient import utils from mistralclient import utils
@@ -166,6 +165,20 @@ class GetDefinition(command.Command):
class Validate(show.ShowOne): class Validate(show.ShowOne):
"""Validate workbook.""" """Validate workbook."""
def _format(self, result=None):
columns = ('Valid', 'Error')
if result:
data = (result.get('valid'),)
if not result.get('error'):
data += (None,)
else:
data += (result.get('error'),)
else:
data = (tuple('<none>' for _ in range(len(columns))),)
return columns, data
def get_parser(self, prog_name): def get_parser(self, prog_name):
parser = super(Validate, self).get_parser(prog_name) parser = super(Validate, self).get_parser(prog_name)
@@ -181,8 +194,4 @@ class Validate(show.ShowOne):
result = workbooks.WorkbookManager(self.app.client).validate( result = workbooks.WorkbookManager(self.app.client).validate(
parsed_args.definition.read()) parsed_args.definition.read())
if not result.get('valid', None): return self._format(result)
raise exc.MistralClientException(
result.get('error', 'Unknown exception.'))
return tuple(), tuple()

View File

@@ -21,7 +21,6 @@ from cliff import show
from mistralclient.api.v2 import workflows from mistralclient.api.v2 import workflows
from mistralclient.commands.v2 import base from mistralclient.commands.v2 import base
from mistralclient import exceptions as exc
from mistralclient import utils from mistralclient import utils
@@ -194,6 +193,20 @@ class GetDefinition(command.Command):
class Validate(show.ShowOne): class Validate(show.ShowOne):
"""Validate workflow.""" """Validate workflow."""
def _format(self, result=None):
columns = ('Valid', 'Error')
if result:
data = (result.get('valid'),)
if not result.get('error'):
data += (None,)
else:
data += (result.get('error'),)
else:
data = (tuple('<none>' for _ in range(len(columns))),)
return columns, data
def get_parser(self, prog_name): def get_parser(self, prog_name):
parser = super(Validate, self).get_parser(prog_name) parser = super(Validate, self).get_parser(prog_name)
@@ -209,8 +222,4 @@ class Validate(show.ShowOne):
result = workflows.WorkflowManager(self.app.client).validate( result = workflows.WorkflowManager(self.app.client).validate(
parsed_args.definition.read()) parsed_args.definition.read())
if not result.get('valid', None): return self._format(result)
raise exc.MistralClientException(
result.get('error', 'Unknown exception.'))
return tuple(), tuple()

View File

@@ -183,6 +183,27 @@ class WorkbookCLITests(base_v2.MistralClientTestBase):
'workbook-get-definition', params=wb_name) 'workbook-get-definition', params=wb_name)
self.assertNotIn('404 Not Found', definition) self.assertNotIn('404 Not Found', definition)
def test_workbook_validate_with_valid_def(self):
wb = self.mistral_admin(
'workbook-validate', params=self.wb_def)
wb_valid = self.get_value_of_field(wb, 'Valid')
wb_error = self.get_value_of_field(wb, 'Error')
self.assertEqual('True', wb_valid)
self.assertEqual('None', wb_error)
def test_workbook_validate_with_invalid_def(self):
self.create_file('wb.yaml',
'name: wb\n')
wb = self.mistral_admin(
'workbook-validate', params='wb.yaml')
wb_valid = self.get_value_of_field(wb, 'Valid')
wb_error = self.get_value_of_field(wb, 'Error')
self.assertEqual('False', wb_valid)
self.assertNotEqual('None', wb_error)
class WorkflowCLITests(base_v2.MistralClientTestBase): class WorkflowCLITests(base_v2.MistralClientTestBase):
"""Test suite checks commands to work with workflows.""" """Test suite checks commands to work with workflows."""
@@ -269,6 +290,27 @@ class WorkflowCLITests(base_v2.MistralClientTestBase):
'workflow-get-definition', params=wf_name) 'workflow-get-definition', params=wf_name)
self.assertNotIn('404 Not Found', definition) self.assertNotIn('404 Not Found', definition)
def test_workflow_validate_with_valid_def(self):
wf = self.mistral_admin(
'workflow-validate', params=self.wf_def)
wf_valid = self.get_value_of_field(wf, 'Valid')
wf_error = self.get_value_of_field(wf, 'Error')
self.assertEqual('True', wf_valid)
self.assertEqual('None', wf_error)
def test_workflow_validate_with_invalid_def(self):
self.create_file('wf.yaml',
'name: wf\n')
wf = self.mistral_admin(
'workflow-validate', params='wf.yaml')
wf_valid = self.get_value_of_field(wf, 'Valid')
wf_error = self.get_value_of_field(wf, 'Error')
self.assertEqual('False', wf_valid)
self.assertNotEqual('None', wf_error)
class ExecutionCLITests(base_v2.MistralClientTestBase): class ExecutionCLITests(base_v2.MistralClientTestBase):
"""Test suite checks commands to work with executions.""" """Test suite checks commands to work with executions."""

View File

@@ -17,7 +17,6 @@ import mock
from mistralclient.api.v2 import workbooks from mistralclient.api.v2 import workbooks
from mistralclient.commands.v2 import workbooks as workbook_cmd from mistralclient.commands.v2 import workbooks as workbook_cmd
from mistralclient import exceptions as exc
from mistralclient.tests.unit import base from mistralclient.tests.unit import base
@@ -117,8 +116,7 @@ class TestCLIWorkbooksV2(base.BaseCommandTest):
result = self.call(workbook_cmd.Validate, app_args=['wb.yaml']) result = self.call(workbook_cmd.Validate, app_args=['wb.yaml'])
self.assertEqual(result[0], tuple()) self.assertEqual(result[1], (True, None))
self.assertEqual(result[1], tuple())
@mock.patch('argparse.open', create=True) @mock.patch('argparse.open', create=True)
@mock.patch('mistralclient.api.v2.workbooks.WorkbookManager.validate') @mock.patch('mistralclient.api.v2.workbooks.WorkbookManager.validate')
@@ -126,7 +124,6 @@ class TestCLIWorkbooksV2(base.BaseCommandTest):
mock.return_value = {'valid': False, 'error': 'Invalid DSL...'} mock.return_value = {'valid': False, 'error': 'Invalid DSL...'}
mock_open.return_value = mock.MagicMock(spec=open) mock_open.return_value = mock.MagicMock(spec=open)
self.assertRaises(exc.MistralClientException, result = self.call(workbook_cmd.Validate, app_args=['wb.yaml'])
self.call,
workbook_cmd.Validate, self.assertEqual(result[1], (False, 'Invalid DSL...'))
app_args=['wb.yaml'])

View File

@@ -19,7 +19,6 @@ import six
from mistralclient.api.v2 import workflows from mistralclient.api.v2 import workflows
from mistralclient.commands.v2 import base as cmd_base from mistralclient.commands.v2 import base as cmd_base
from mistralclient.commands.v2 import workflows as workflow_cmd from mistralclient.commands.v2 import workflows as workflow_cmd
from mistralclient import exceptions as exc
from mistralclient.tests.unit import base from mistralclient.tests.unit import base
@@ -160,8 +159,7 @@ class TestCLIWorkflowsV2(base.BaseCommandTest):
result = self.call(workflow_cmd.Validate, app_args=['wf.yaml']) result = self.call(workflow_cmd.Validate, app_args=['wf.yaml'])
self.assertEqual(result[0], tuple()) self.assertEqual(result[1], (True, None))
self.assertEqual(result[1], tuple())
@mock.patch('argparse.open', create=True) @mock.patch('argparse.open', create=True)
@mock.patch('mistralclient.api.v2.workflows.WorkflowManager.validate') @mock.patch('mistralclient.api.v2.workflows.WorkflowManager.validate')
@@ -169,7 +167,6 @@ class TestCLIWorkflowsV2(base.BaseCommandTest):
mock.return_value = {'valid': False, 'error': 'Invalid DSL...'} mock.return_value = {'valid': False, 'error': 'Invalid DSL...'}
mock_open.return_value = mock.MagicMock(spec=open) mock_open.return_value = mock.MagicMock(spec=open)
self.assertRaises(exc.MistralClientException, result = self.call(workflow_cmd.Validate, app_args=['wf.yaml'])
self.call,
workflow_cmd.Validate, self.assertEqual(result[1], (False, 'Invalid DSL...'))
app_args=['wf.yaml'])