Add task delete command to fuel2

In order to be able to deprecate the old task command
it's necessary to implement task deletion in fuel2.

Change-Id: I958ab15f0e91f18af82ad3054c2a1e29d1698526
Partial-bug: #1592452
This commit is contained in:
Roman Prykhodchenko
2016-06-14 18:04:25 +02:00
parent 5b2b85d93d
commit 67df6897d6
5 changed files with 85 additions and 12 deletions

View File

@@ -143,6 +143,28 @@ class TaskShow(TaskMixIn, base.BaseShowCommand):
'message')
class TaskDelete(TaskMixIn, base.BaseDeleteCommand):
"""Delete task with given id."""
def get_parser(self, prog_name):
parser = super(TaskDelete, self).get_parser(prog_name)
parser.add_argument('-f',
'--force',
action='store_true',
default=False,
help='Force deletion of a task without '
'considering its state.')
return parser
def take_action(self, parsed_args):
self.client.delete_by_id(parsed_args.id, parsed_args.force)
msg = 'Task with id {ent_id} was deleted\n'
self.app.stdout.write(msg.format(ent_id=parsed_args.id))
class TaskHistoryShow(TaskMixIn, base.BaseListCommand):
"""Show deployment history about task with given ID."""

View File

@@ -49,6 +49,24 @@ class TestTaskCommand(test_engine.BaseCLITest):
self.m_get_client.assert_called_once_with('task', mock.ANY)
self.m_client.get_by_id.assert_called_once_with(task_id)
def test_task_delete(self):
task_id = 42
args = 'task delete {task_id}'.format(task_id=task_id)
self.exec_command(args)
self.m_get_client.assert_called_once_with('task', mock.ANY)
self.m_client.delete_by_id.assert_called_once_with(task_id, False)
def test_task_delete_force(self):
task_id = 42
args = 'task delete --force {task_id}'.format(task_id=task_id)
self.exec_command(args)
self.m_get_client.assert_called_once_with('task', mock.ANY)
self.m_client.delete_by_id.assert_called_once_with(task_id, True)
def test_task_history_show(self):
task_id = 42
args = 'task history show {task_id} '.format(task_id=task_id)

View File

@@ -50,3 +50,23 @@ class TestTaskFacade(test_api.BaseLibTest):
self.client.get_by_id(task_id)
self.assertTrue(matcher.called)
def test_task_delete(self):
task_id = 42
expected_uri = self.get_object_uri(self.res_uri, task_id)
matcher = self.m_request.delete(expected_uri, json=self.fake_tasks)
self.client.delete_by_id(task_id, force=False)
self.assertTrue(matcher.called)
self.assertEqual(['0'], matcher.last_request.qs.get('force'))
def test_task_delete_force(self):
task_id = 42
expected_uri = self.get_object_uri(self.res_uri, task_id)
matcher = self.m_request.delete(expected_uri, json=self.fake_tasks)
self.client.delete_by_id(task_id, force=True)
self.assertTrue(matcher.called)
self.assertEqual(['1'], matcher.last_request.qs.get('force'))

View File

@@ -20,6 +20,18 @@ class TaskClient(base_v1.BaseV1Client):
_entity_wrapper = objects.Task
def delete_by_id(self, task_id, force=False):
"""Delete a given task by its id
:param task_id: Id of a task to delete.
:type task_id: int
:param force: Force deletion of a task without
concidering its state
"""
env_obj = self._entity_wrapper(obj_id=task_id)
env_obj.delete(force=force)
def get_client(connection):
return TaskClient(connection)

View File

@@ -52,6 +52,7 @@ fuelclient =
network-template_delete=fuelclient.commands.network_template:NetworkTemplateDelete
network-template_download=fuelclient.commands.network_template:NetworkTemplateDownload
network-template_upload=fuelclient.commands.network_template:NetworkTemplateUpload
node_ansible-inventory=fuelclient.commands.node:NodeAnsibleInventory
node_attributes-download=fuelclient.commands.node:NodeAttributesDownload
node_attributes-upload=fuelclient.commands.node:NodeAttributesUpload
node_create-vms-conf=fuelclient.commands.node:NodeCreateVMsConf
@@ -62,23 +63,23 @@ fuelclient =
node_list=fuelclient.commands.node:NodeList
node_show=fuelclient.commands.node:NodeShow
node_update=fuelclient.commands.node:NodeUpdate
node_ansible-inventory=fuelclient.commands.node:NodeAnsibleInventory
plugins_list=fuelclient.commands.plugins:PluginsList
plugins_sync=fuelclient.commands.plugins:PluginsSync
release_list=fuelclient.commands.release:ReleaseList
release_repos_list=fuelclient.commands.release:ReleaseReposList
release_repos_update=fuelclient.commands.release:ReleaseReposUpdate
task_list=fuelclient.commands.task:TaskList
task_show=fuelclient.commands.task:TaskShow
task_history_show=fuelclient.commands.task:TaskHistoryShow
task_settings_download=fuelclient.commands.task:TaskClusterSettingsDownload
task_deployment-info_download=fuelclient.commands.task:TaskDeploymentInfoDownload
task_network-configuration_download=fuelclient.commands.task:TaskNetworkConfigurationDownload
openstack-config_delete=fuelclient.commands.openstack_config:OpenstackConfigDelete
openstack-config_download=fuelclient.commands.openstack_config:OpenstackConfigDownload
openstack-config_execute=fuelclient.commands.openstack_config:OpenstackConfigExecute
openstack-config_list=fuelclient.commands.openstack_config:OpenstackConfigList
openstack-config_upload=fuelclient.commands.openstack_config:OpenstackConfigUpload
plugins_list=fuelclient.commands.plugins:PluginsList
plugins_sync=fuelclient.commands.plugins:PluginsSync
release_list=fuelclient.commands.release:ReleaseList
release_repos_list=fuelclient.commands.release:ReleaseReposList
release_repos_update=fuelclient.commands.release:ReleaseReposUpdate
task_delete=fuelclient.commands.task:TaskDelete
task_deployment-info_download=fuelclient.commands.task:TaskDeploymentInfoDownload
task_history_show=fuelclient.commands.task:TaskHistoryShow
task_list=fuelclient.commands.task:TaskList
task_network-configuration_download=fuelclient.commands.task:TaskNetworkConfigurationDownload
task_settings_download=fuelclient.commands.task:TaskClusterSettingsDownload
task_show=fuelclient.commands.task:TaskShow
vip_create=fuelclient.commands.vip:VipCreate
vip_download=fuelclient.commands.vip:VipDownload
vip_upload=fuelclient.commands.vip:VipUpload