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.commands.v2 import base
from mistralclient import exceptions as exc
from mistralclient import utils
@@ -166,6 +165,20 @@ class GetDefinition(command.Command):
class Validate(show.ShowOne):
"""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):
parser = super(Validate, self).get_parser(prog_name)
@@ -181,8 +194,4 @@ class Validate(show.ShowOne):
result = workbooks.WorkbookManager(self.app.client).validate(
parsed_args.definition.read())
if not result.get('valid', None):
raise exc.MistralClientException(
result.get('error', 'Unknown exception.'))
return tuple(), tuple()
return self._format(result)

View File

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

View File

@@ -183,6 +183,27 @@ class WorkbookCLITests(base_v2.MistralClientTestBase):
'workbook-get-definition', params=wb_name)
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):
"""Test suite checks commands to work with workflows."""
@@ -269,6 +290,27 @@ class WorkflowCLITests(base_v2.MistralClientTestBase):
'workflow-get-definition', params=wf_name)
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):
"""Test suite checks commands to work with executions."""

View File

@@ -17,7 +17,6 @@ import mock
from mistralclient.api.v2 import workbooks
from mistralclient.commands.v2 import workbooks as workbook_cmd
from mistralclient import exceptions as exc
from mistralclient.tests.unit import base
@@ -117,8 +116,7 @@ class TestCLIWorkbooksV2(base.BaseCommandTest):
result = self.call(workbook_cmd.Validate, app_args=['wb.yaml'])
self.assertEqual(result[0], tuple())
self.assertEqual(result[1], tuple())
self.assertEqual(result[1], (True, None))
@mock.patch('argparse.open', create=True)
@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_open.return_value = mock.MagicMock(spec=open)
self.assertRaises(exc.MistralClientException,
self.call,
workbook_cmd.Validate,
app_args=['wb.yaml'])
result = self.call(workbook_cmd.Validate, app_args=['wb.yaml'])
self.assertEqual(result[1], (False, 'Invalid DSL...'))

View File

@@ -19,7 +19,6 @@ import six
from mistralclient.api.v2 import workflows
from mistralclient.commands.v2 import base as cmd_base
from mistralclient.commands.v2 import workflows as workflow_cmd
from mistralclient import exceptions as exc
from mistralclient.tests.unit import base
@@ -160,8 +159,7 @@ class TestCLIWorkflowsV2(base.BaseCommandTest):
result = self.call(workflow_cmd.Validate, app_args=['wf.yaml'])
self.assertEqual(result[0], tuple())
self.assertEqual(result[1], tuple())
self.assertEqual(result[1], (True, None))
@mock.patch('argparse.open', create=True)
@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_open.return_value = mock.MagicMock(spec=open)
self.assertRaises(exc.MistralClientException,
self.call,
workflow_cmd.Validate,
app_args=['wf.yaml'])
result = self.call(workflow_cmd.Validate, app_args=['wf.yaml'])
self.assertEqual(result[1], (False, 'Invalid DSL...'))