summaryrefslogtreecommitdiff
path: root/openstackclient/object
diff options
context:
space:
mode:
authorTerry Howe <terrylhowe@gmail.com>2014-08-14 20:56:36 -0600
committerTerry Howe <terrylhowe@gmail.com>2014-09-06 16:23:55 -0600
commitb725b5017ad2bb6a1e52bb0c32e4c864e18d124b (patch)
treecbb3bc425f20e824bc4a9eba62daeb6a8adf7994 /openstackclient/object
parentdc9ce6d6081867137c91cee235bceaf35906bc87 (diff)
downloadpython-openstackclient-b725b5017ad2bb6a1e52bb0c32e4c864e18d124b.tar.gz
Multiple args for object and container commands
Have object and container create and delete handle multiple arguments. Change-Id: I389358c13ac2d99655ca26e784e3d299286c0af3
Diffstat (limited to 'openstackclient/object')
-rw-r--r--openstackclient/object/v1/container.py43
-rw-r--r--openstackclient/object/v1/object.py48
2 files changed, 57 insertions, 34 deletions
diff --git a/openstackclient/object/v1/container.py b/openstackclient/object/v1/container.py
index 1ca07f3a..b3184e88 100644
--- a/openstackclient/object/v1/container.py
+++ b/openstackclient/object/v1/container.py
@@ -27,7 +27,7 @@ from openstackclient.common import utils
from openstackclient.object.v1.lib import container as lib_container
-class CreateContainer(show.ShowOne):
+class CreateContainer(lister.Lister):
"""Create a container"""
log = logging.getLogger(__name__ + '.CreateContainer')
@@ -35,22 +35,31 @@ class CreateContainer(show.ShowOne):
def get_parser(self, prog_name):
parser = super(CreateContainer, self).get_parser(prog_name)
parser.add_argument(
- 'container',
+ 'containers',
metavar='<container>',
- help='New container name',
+ nargs="+",
+ help='Container name(s) to create',
)
return parser
def take_action(self, parsed_args):
self.log.debug('take_action(%s)', parsed_args)
- data = lib_container.create_container(
- self.app.client_manager.session,
- self.app.client_manager.object_store.endpoint,
- parsed_args.container,
- )
+ results = []
+ for container in parsed_args.containers:
+ data = lib_container.create_container(
+ self.app.client_manager.session,
+ self.app.client_manager.object_store.endpoint,
+ container,
+ )
+ results.append(data)
- return zip(*sorted(six.iteritems(data)))
+ columns = ("account", "container", "x-trans-id")
+ return (columns,
+ (utils.get_dict_properties(
+ s, columns,
+ formatters={},
+ ) for s in results))
class DeleteContainer(command.Command):
@@ -61,20 +70,22 @@ class DeleteContainer(command.Command):
def get_parser(self, prog_name):
parser = super(DeleteContainer, self).get_parser(prog_name)
parser.add_argument(
- 'container',
+ 'containers',
metavar='<container>',
- help='Container name to delete',
+ nargs="+",
+ help='Container name(s) to delete',
)
return parser
def take_action(self, parsed_args):
self.log.debug('take_action(%s)', parsed_args)
- lib_container.delete_container(
- self.app.client_manager.session,
- self.app.client_manager.object_store.endpoint,
- parsed_args.container,
- )
+ for container in parsed_args.containers:
+ lib_container.delete_container(
+ self.app.client_manager.session,
+ self.app.client_manager.object_store.endpoint,
+ container,
+ )
class ListContainer(lister.Lister):
diff --git a/openstackclient/object/v1/object.py b/openstackclient/object/v1/object.py
index 812ad6e1..f1da6be4 100644
--- a/openstackclient/object/v1/object.py
+++ b/openstackclient/object/v1/object.py
@@ -27,7 +27,7 @@ from openstackclient.common import utils
from openstackclient.object.v1.lib import object as lib_object
-class CreateObject(show.ShowOne):
+class CreateObject(lister.Lister):
"""Upload an object to a container"""
log = logging.getLogger(__name__ + '.CreateObject')
@@ -40,23 +40,32 @@ class CreateObject(show.ShowOne):
help='Container to store new object',
)
parser.add_argument(
- 'object',
+ 'objects',
metavar='<object-name>',
- help='Local path of object to upload',
+ nargs="+",
+ help='Local path of object(s) to upload',
)
return parser
def take_action(self, parsed_args):
self.log.debug('take_action(%s)', parsed_args)
- data = lib_object.create_object(
- self.app.client_manager.session,
- self.app.client_manager.object_store.endpoint,
- parsed_args.container,
- parsed_args.object,
- )
+ results = []
+ for obj in parsed_args.objects:
+ data = lib_object.create_object(
+ self.app.client_manager.session,
+ self.app.client_manager.object_store.endpoint,
+ parsed_args.container,
+ obj,
+ )
+ results.append(data)
- return zip(*sorted(six.iteritems(data)))
+ columns = ("object", "container", "etag")
+ return (columns,
+ (utils.get_dict_properties(
+ s, columns,
+ formatters={},
+ ) for s in results))
class DeleteObject(command.Command):
@@ -72,21 +81,24 @@ class DeleteObject(command.Command):
help='Container that stores the object to delete',
)
parser.add_argument(
- 'object',
+ 'objects',
metavar='<object-name>',
- help='Object to delete',
+ nargs="+",
+ help='Object(s) to delete',
)
return parser
def take_action(self, parsed_args):
self.log.debug('take_action(%s)', parsed_args)
- lib_object.delete_object(
- self.app.client_manager.session,
- self.app.client_manager.object_store.endpoint,
- parsed_args.container,
- parsed_args.object,
- )
+ for obj in parsed_args.objects:
+ lib_object.delete_object(
+ self.app.restapi,
+ self.app.client_manager.session,
+ self.app.client_manager.object_store.endpoint,
+ parsed_args.container,
+ obj,
+ )
class ListObject(lister.Lister):