Add preliminary support for downloading objects

Added command and library to download a single object from swift

Change-Id: I3dc47b414ff37b526e6f633aa83ac3aa4b5be0ae
implements: bp swift-client
This commit is contained in:
Steve Martinelli 2014-09-05 01:45:13 -04:00
parent ae957b176e
commit e47787e12f
3 changed files with 63 additions and 0 deletions

View File

@ -150,6 +150,32 @@ def list_objects(
return session.get(requrl, params=params).json()
def save_object(
session,
url,
container,
obj,
file=None
):
"""Save an object stored in a container
:param session: an authenticated keystoneclient.session.Session object
:param url: endpoint
:param container: name of container that stores object
:param object: name of object to save
:param file: local name of object
"""
if not file:
file = obj
response = session.get("%s/%s/%s" % (url, container, obj), stream=True)
if response.status_code == 200:
with open(file, 'wb') as f:
for chunk in response.iter_content():
f.write(chunk)
def show_object(
session,
url,

View File

@ -183,6 +183,42 @@ class ListObject(lister.Lister):
) for s in data))
class SaveObject(command.Command):
"""Save an object locally"""
log = logging.getLogger(__name__ + ".SaveObject")
def get_parser(self, prog_name):
parser = super(SaveObject, self).get_parser(prog_name)
parser.add_argument(
"--file",
metavar="<filename>",
help="Downloaded object filename [defaults to object name]",
)
parser.add_argument(
'container',
metavar='<container>',
help='Container name that has the object',
)
parser.add_argument(
"object",
metavar="<object>",
help="Name of the object to save",
)
return parser
def take_action(self, parsed_args):
self.log.debug("take_action(%s)", parsed_args)
lib_object.save_object(
self.app.client_manager.session,
self.app.client_manager.object_store.endpoint,
parsed_args.container,
parsed_args.object,
parsed_args.file,
)
class ShowObject(show.ShowOne):
"""Show object information"""

View File

@ -277,6 +277,7 @@ openstack.object_store.v1 =
object_create = openstackclient.object.v1.object:CreateObject
object_delete = openstackclient.object.v1.object:DeleteObject
object_list = openstackclient.object.v1.object:ListObject
object_save = openstackclient.object.v1.object:SaveObject
object_show = openstackclient.object.v1.object:ShowObject
openstack.volume.v1 =