diff --git a/rsdclient/osc/v2/root.py b/rsdclient/osc/v2/root.py index 2702411..89b1b2d 100644 --- a/rsdclient/osc/v2/root.py +++ b/rsdclient/osc/v2/root.py @@ -36,3 +36,27 @@ class GetResource(command.Command): rsd_client = self.app.client_manager.rsd resource_detail = rsd_client.root.get(parsed_args.resource) print("{0}".format(json.dumps(resource_detail, indent=2))) + + +class DeleteResource(command.Command): + """Delete a RSD resource.""" + + _description = "Delete a RSD resource" + + def get_parser(self, prog_name): + parser = super(DeleteResource, self).get_parser(prog_name) + parser.add_argument( + "resource", + nargs="+", + metavar="", + help="ID of the RSD resource(s) to delete.", + ) + + return parser + + def take_action(self, parsed_args): + self.log.debug("take_action(%s)", parsed_args) + rsd_client = self.app.client_manager.rsd + for resource in parsed_args.resource: + rsd_client.root.delete(resource) + print("Resource {0} has been deleted.".format(resource)) diff --git a/rsdclient/v2/root.py b/rsdclient/v2/root.py index f2c44eb..22939fb 100644 --- a/rsdclient/v2/root.py +++ b/rsdclient/v2/root.py @@ -23,8 +23,11 @@ class RootManager(base.Manager): def __init__(self, *args, **kwargs): super(RootManager, self).__init__(*args, **kwargs) - def show(self, resource_uri): + def get(self, resource_uri): resource = self.client.get_resource(resource_uri) resource_dict = utils.extract_attr(resource) return resource_dict + + def delete(self, resource_uri): + self.client._conn.delete(resource_uri) diff --git a/setup.cfg b/setup.cfg index fec07b9..69d9c50 100644 --- a/setup.cfg +++ b/setup.cfg @@ -29,6 +29,7 @@ openstack.cli.extension = openstack.rsd.v2 = rsd_get = rsdclient.osc.v2.root:GetResource + rsd_delete = rsdclient.osc.v2.root:DeleteResource rsd_node_compose = rsdclient.osc.v2.node:ComposeNode rsd_node_delete = rsdclient.osc.v2.node:DeleteNode