Merge "Add start parameter for tasks execution"
This commit is contained in:
@@ -69,7 +69,8 @@ class NodeAction(Action):
|
||||
Args.get_skip_tasks(),
|
||||
Args.get_tasks()
|
||||
),
|
||||
Args.get_graph_endpoint()
|
||||
Args.get_graph_endpoint(),
|
||||
Args.get_graph_startpoint(),
|
||||
]
|
||||
|
||||
self.flag_func_map = (
|
||||
@@ -83,6 +84,7 @@ class NodeAction(Action):
|
||||
("tasks", self.execute_tasks),
|
||||
("skip", self.execute_tasks),
|
||||
("end", self.execute_tasks),
|
||||
("start", self.execute_tasks),
|
||||
(None, self.list)
|
||||
)
|
||||
|
||||
@@ -246,6 +248,8 @@ class NodeAction(Action):
|
||||
fuel node --node 2 --skip hiera netconfig
|
||||
fuel node --node 2 --skip rsync --end pre_deployment
|
||||
fuel node --node 2 --end netconfig
|
||||
fuel node --node 2 --start hiera --end neutron
|
||||
fuel node --node 2 --start post_deployment
|
||||
"""
|
||||
node_collection = NodeCollection.init_with_ids(params.node)
|
||||
env_id_to_start = self.get_env_id(node_collection)
|
||||
@@ -255,7 +259,8 @@ class NodeAction(Action):
|
||||
if params.tasks:
|
||||
tasks = params.tasks
|
||||
else:
|
||||
tasks = env.get_tasks(skip=params.skip, end=params.end)
|
||||
tasks = env.get_tasks(
|
||||
skip=params.skip, end=params.end, start=params.start)
|
||||
|
||||
task = env.execute_tasks(node_collection.collection, tasks=tasks)
|
||||
|
||||
|
||||
@@ -305,7 +305,16 @@ def get_graph_endpoint():
|
||||
flags=('--end',),
|
||||
action="store",
|
||||
default=None,
|
||||
help="Specify endpoint for the graph of tasks.")
|
||||
help="Specify endpoint for the graph traversal.")
|
||||
|
||||
|
||||
def get_graph_startpoint():
|
||||
return get_arg(
|
||||
'start',
|
||||
flags=('--start',),
|
||||
action="store",
|
||||
default=None,
|
||||
help="Specify start point for the graph traversal.")
|
||||
|
||||
|
||||
def get_skip_tasks():
|
||||
|
||||
@@ -378,21 +378,24 @@ class Environment(BaseObject):
|
||||
)
|
||||
)
|
||||
|
||||
def get_tasks(self, skip=None, end=None):
|
||||
def get_tasks(self, skip=None, end=None, start=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
|
||||
"""
|
||||
tasks = [t['id'] for t in self.get_deployment_tasks(end=end)]
|
||||
tasks = [t['id'] for t
|
||||
in self.get_deployment_tasks(end=end, start=start)]
|
||||
if skip:
|
||||
tasks_to_execute = set(tasks) - set(skip)
|
||||
return list(tasks_to_execute)
|
||||
return tasks
|
||||
|
||||
def get_deployment_tasks(self, end=None):
|
||||
def get_deployment_tasks(self, end=None, start=None):
|
||||
url = self.deployment_tasks_path.format(self.id)
|
||||
return self.connection.get_request(url, params={'end': end})
|
||||
return self.connection.get_request(
|
||||
url, params={'end': end, 'start': start})
|
||||
|
||||
def update_deployment_tasks(self, data):
|
||||
url = self.deployment_tasks_path.format(self.id)
|
||||
|
||||
@@ -60,4 +60,4 @@ class TestEnvironmentOstf(base.UnitTestCase):
|
||||
end = 'task1'
|
||||
self.env.get_deployment_tasks(end=end)
|
||||
kwargs = mrequests.get.call_args[1]
|
||||
self.assertEqual(kwargs['params'], {'end': end})
|
||||
self.assertEqual(kwargs['params'], {'start': None, 'end': 'task1'})
|
||||
|
||||
@@ -50,7 +50,7 @@ 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])
|
||||
get_tasks.assert_called_once_with(end=self.tasks[-2], start=None)
|
||||
|
||||
@patch('fuelclient.objects.environment.Environment.get_deployment_tasks')
|
||||
def test_skip_with_end_param(self, get_tasks, mrequests):
|
||||
@@ -61,4 +61,29 @@ 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])
|
||||
get_tasks.assert_called_once_with(end=self.tasks[-1], start=None)
|
||||
|
||||
@patch('fuelclient.objects.environment.Environment.get_deployment_tasks')
|
||||
def test_start_with_end_param(self, get_tasks, mrequests):
|
||||
"""end will be included."""
|
||||
start = 1
|
||||
end = 2
|
||||
get_tasks.return_value = [{'id': t} for t in self.tasks[start:end + 1]]
|
||||
self.execute(
|
||||
['fuel', 'node', '--node', '1,2', '--start', self.tasks[start],
|
||||
'--end', self.tasks[end]])
|
||||
|
||||
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])
|
||||
|
||||
@patch('fuelclient.objects.environment.Environment.get_deployment_tasks')
|
||||
def test_start_param(self, get_tasks, mrequests):
|
||||
get_tasks.return_value = [{'id': t} for t in self.tasks[1:]]
|
||||
self.execute(
|
||||
['fuel', 'node', '--node', '1,2', '--start', self.tasks[1]])
|
||||
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user