Add files verification for 'fuel2 graph upload' command

Now Nailgun reports about successful upload of deployment graph
from directory that can even not contain any 'tasks.yaml' files.
This patch fixes:
  * check if at least one 'tasks.yaml' file exists in specified
    directory path
  * check if at least one 'tasks.yaml' file in specified
    directory path is not empty

Change-Id: I5de2474b8fbb46780450ee3873af6189a6cf17cc
Closes-Bug: 1619586
This commit is contained in:
tivaliy 2016-09-04 07:30:50 +03:00 committed by Vitalii Kulanov
parent 3a02b1039a
commit 9dfb28e33c
2 changed files with 22 additions and 1 deletions

View File

@ -80,10 +80,18 @@ class GraphUpload(base.BaseCommand, FileMethodsMixin):
tasks = []
for file_name in iterfiles(dir_path, 'tasks.yaml'):
tasks.extend(serializer.read_from_full_path(file_name))
task_data = serializer.read_from_full_path(file_name)
if task_data:
tasks.extend(task_data)
if tasks:
data['tasks'] = tasks
if not data:
msg = ("Nothing to upload. Check if at least one 'tasks.yaml' "
"file is not empty and exists in '{path}' directory "
"path".format(path=dir_path))
raise error.ActionException(msg)
return data
def get_parser(self, prog_name):

View File

@ -18,6 +18,7 @@ import mock
import six
import yaml
from fuelclient.cli import error
from fuelclient.tests.unit.v2.cli import test_engine
TASKS_YAML = '''- id: custom-task-1
@ -146,6 +147,18 @@ class TestGraphActions(test_engine.BaseCLITest):
graph_type='provision'
)
@mock.patch('fuelclient.commands.graph.os')
@mock.patch('fuelclient.commands.graph.iterfiles')
def test_graph_upload_from_dir_fail(self, iterfiles_m, os_m):
os_m.path.isdir.return_value = True
os_m.path.exists.side_effect = [True, False]
iterfiles_m.return_value = []
args = 'graph upload --release 1 --dir /graph/provision -t provision'
self.assertRaisesRegexp(error.ActionException,
"Nothing to upload",
self.exec_command, args)
@mock.patch('sys.stderr')
def test_upload_fail(self, mocked_stderr):
cmd = 'graph upload --file new_graph.yaml -t test'