Merge "Add preliminary support for downloading objects"
This commit is contained in:
commit
0ad4c94b6c
@ -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,
|
||||
|
@ -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"""
|
||||
|
||||
|
@ -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 =
|
||||
|
Loading…
x
Reference in New Issue
Block a user