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:
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -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."""
|
||||
|
@@ -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...'))
|
||||
|
@@ -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...'))
|
||||
|
Reference in New Issue
Block a user