Adds support force delete VNFFG

This patch adds '--force' parameter to vnffg delete command,
to force delete VNFFG.

e.g: openstack vnf graph delete --force VNFFG1

blueprint force-delete-resources

Change-Id: I642ddcdb7a1167f25553ef26df6102bb2be22c3f
This commit is contained in:
Nguyen Hai 2019-02-14 19:12:48 +09:00 committed by Yasufumi Ogawa
parent 124be387dc
commit 785c6dbfda
4 changed files with 39 additions and 4 deletions

View File

@ -190,18 +190,32 @@ class DeleteVNFFG(command.Command):
nargs="+",
help=_("VNFFG(s) to delete (name or ID)")
)
parser.add_argument(
'--force',
default=False,
action='store_true',
help=_('Force delete VNFFG'))
return parser
def args2body(self, parsed_args):
body = dict()
if parsed_args.force:
body[_VNFFG] = dict()
body[_VNFFG]['attributes'] = dict()
body[_VNFFG]['attributes']['force'] = True
return body
def take_action(self, parsed_args):
client = self.app.client_manager.tackerclient
failure = False
deleted_ids = []
failed_items = {}
body = self.args2body(parsed_args)
for resource_id in parsed_args.vnffg:
try:
obj = tackerV10.find_resourceid_by_name_or_id(
client, _VNFFG, resource_id)
client.delete_vnffg(obj)
client.delete_vnffg(obj, body)
deleted_ids.append(resource_id)
except Exception as e:
failure = True

View File

@ -232,3 +232,18 @@ class DeleteVNFFG(tackerV10.DeleteCommand):
"""Delete a given VNFFG."""
resource = _VNFFG
remove_output_fields = ["attributes"]
def add_known_arguments(self, parser):
parser.add_argument(
'--force',
default=False,
action='store_true',
help=_('Force delete VNFFG'))
def args2body(self, parsed_args):
body = dict()
if parsed_args.force:
body[self.resource] = dict()
body[self.resource]['attributes'] = {'force': True}
return body

View File

@ -113,8 +113,14 @@ class CLITestV10VmVNFFGJSON(test_cli10.CLITestV10Base):
args, extra_fields,
get_client_called_count=2)
def test_delete_vnffg(self):
def test_delete_vnffg_without_force(self):
cmd = vnffg.DeleteVNFFG(test_cli10.MyApp(sys.stdout), None)
my_id = 'my-id'
args = [my_id]
self._test_delete_resource(self._RESOURCE, cmd, my_id, args)
def test_delete_vnffg_with_force(self):
cmd = vnffg.DeleteVNFFG(test_cli10.MyApp(sys.stdout), None)
my_id = 'my-id'
args = [my_id, '--force']
self._test_delete_resource(self._RESOURCE, cmd, my_id, args)

View File

@ -626,8 +626,8 @@ class LegacyClient(ClientBase):
return self.post(self.vnffgs_path, body=body)
@APIParamsCall
def delete_vnffg(self, vnffg):
return self.delete(self.vnffg_path % vnffg)
def delete_vnffg(self, vnffg, body=None):
return self.delete(self.vnffg_path % vnffg, body=body)
@APIParamsCall
def update_vnffg(self, vnffg, body):