Merge "Add to execution tasks that are provided by user"

This commit is contained in:
Jenkins
2015-08-13 16:06:59 +00:00
committed by Gerrit Code Review
5 changed files with 52 additions and 18 deletions

View File

@@ -85,11 +85,12 @@ class GraphAction(base.Action):
used_params += "# - {0}: {1}\n".format(param,
getattr(params, param))
if params.tasks:
tasks = params.tasks
else:
tasks = params.tasks
if not tasks or (params.skip or params.end or params.start):
tasks = env.get_tasks(
skip=params.skip, end=params.end, start=params.start)
skip=params.skip, end=params.end,
start=params.start, include=params.tasks)
dotraph = env.get_deployment_tasks_graph(tasks,
parents_for=parents_for,

View File

@@ -261,11 +261,18 @@ class NodeAction(Action):
env = Environment(env_id_to_start)
if params.tasks:
tasks = params.tasks
else:
tasks = params.tasks or None
if params.skip or params.end or params.start:
tasks = env.get_tasks(
skip=params.skip, end=params.end, start=params.start)
skip=params.skip,
end=params.end,
start=params.start,
include=tasks)
if not tasks:
self.serializer.print_to_output({}, "Nothing to run.")
return
task = env.execute_tasks(node_collection.collection, tasks=tasks)

View File

@@ -459,24 +459,28 @@ class Environment(BaseObject):
)
)
def get_tasks(self, skip=None, end=None, start=None):
def get_tasks(self, skip=None, end=None, start=None, include=None):
"""Stores logic to filter tasks by known parameters.
:param skip: list of tasks or None
:param end: string or None
:param start: string or None
:param include: list or None
"""
tasks = [t['id'] for t
in self.get_deployment_tasks(end=end, start=start)]
tasks = [t['id'] for t in self.get_deployment_tasks(
end=end, start=start, include=include)]
if skip:
tasks_to_execute = set(tasks) - set(skip)
return list(tasks_to_execute)
return tasks
def get_deployment_tasks(self, end=None, start=None):
def get_deployment_tasks(self, end=None, start=None, include=None):
url = self.deployment_tasks_path.format(self.id)
return self.connection.get_request(
url, params={'end': end, 'start': start})
url, params={
'end': end,
'start': start,
'include': include})
def update_deployment_tasks(self, data):
url = self.deployment_tasks_path.format(self.id)

View File

@@ -162,4 +162,6 @@ class TestEnvironmentOstf(base.UnitTestCase):
end = 'task1'
self.env.get_deployment_tasks(end=end)
kwargs = mrequests.get.call_args[1]
self.assertEqual(kwargs['params'], {'start': None, 'end': 'task1'})
self.assertEqual(
kwargs['params'],
{'start': None, 'end': 'task1', 'include': None})

View File

@@ -43,6 +43,23 @@ class TestNodeExecuteTasksAction(base.UnitTestCase):
kwargs = mrequests.put.call_args_list[0][1]
self.assertEqual(json.loads(kwargs['data']), self.tasks[2:])
@patch('fuelclient.objects.environment.Environment.get_deployment_tasks')
def test_included_tasks(self, get_tasks, mrequests):
get_tasks.return_value = [{'id': t} for t in self.tasks]
self.execute(
['fuel', 'node', '--node', '1', '--start', 'netconfig',
'--tasks', 'hiera'])
kwargs = mrequests.put.call_args_list[0][1]
self.assertEqual(json.loads(kwargs['data']), self.tasks)
get_tasks.assert_called_once_with(
start='netconfig', end=None, include=['hiera'])
@patch('fuelclient.objects.environment.Environment.get_deployment_tasks')
def test_dont_fail_on_empty_tasks(self, get_tasks, mrequests):
get_tasks.return_value = []
self.execute(
['fuel', 'node', '--node', '1', '--start', 'netconfig'])
@patch('fuelclient.objects.environment.Environment.get_deployment_tasks')
def test_end_param(self, get_tasks, mrequests):
get_tasks.return_value = [{'id': t} for t in self.tasks[:2]]
@@ -50,7 +67,8 @@ class TestNodeExecuteTasksAction(base.UnitTestCase):
['fuel', 'node', '--node', '1,2', '--end', self.tasks[-2]])
kwargs = mrequests.put.call_args_list[0][1]
self.assertEqual(json.loads(kwargs['data']), self.tasks[:2])
get_tasks.assert_called_once_with(end=self.tasks[-2], start=None)
get_tasks.assert_called_once_with(
end=self.tasks[-2], start=None, include=None)
@patch('fuelclient.objects.environment.Environment.get_deployment_tasks')
def test_skip_with_end_param(self, get_tasks, mrequests):
@@ -61,7 +79,8 @@ class TestNodeExecuteTasksAction(base.UnitTestCase):
kwargs = mrequests.put.call_args_list[0][1]
self.assertEqual(json.loads(kwargs['data']), self.tasks[2:])
get_tasks.assert_called_once_with(end=self.tasks[-1], start=None)
get_tasks.assert_called_once_with(
end=self.tasks[-1], start=None, include=None)
@patch('fuelclient.objects.environment.Environment.get_deployment_tasks')
def test_start_with_end_param(self, get_tasks, mrequests):
@@ -76,7 +95,7 @@ class TestNodeExecuteTasksAction(base.UnitTestCase):
kwargs = mrequests.put.call_args_list[0][1]
self.assertEqual(json.loads(kwargs['data']), self.tasks[start:end + 1])
get_tasks.assert_called_once_with(
end=self.tasks[2], start=self.tasks[1])
end=self.tasks[2], start=self.tasks[1], include=None)
@patch('fuelclient.objects.environment.Environment.get_deployment_tasks')
def test_start_param(self, get_tasks, mrequests):
@@ -86,4 +105,5 @@ class TestNodeExecuteTasksAction(base.UnitTestCase):
kwargs = mrequests.put.call_args_list[0][1]
self.assertEqual(json.loads(kwargs['data']), self.tasks[1:])
get_tasks.assert_called_once_with(start=self.tasks[1], end=None)
get_tasks.assert_called_once_with(
start=self.tasks[1], end=None, include=None)