Skip to content

Commit 505c784

Browse files
author
Steve Martinelli
committed
Add preliminary save container support
Save all objects from a container implements bp: swift-client Change-Id: I7f2437236574e212033e63d768929d813289ed05
1 parent e47787e commit 505c784

3 files changed

Lines changed: 44 additions & 0 deletions

File tree

openstackclient/object/v1/container.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,30 @@ def take_action(self, parsed_args):
152152
) for s in data))
153153

154154

155+
class SaveContainer(command.Command):
156+
"""Save the contents of a container locally"""
157+
158+
log = logging.getLogger(__name__ + ".SaveContainer")
159+
160+
def get_parser(self, prog_name):
161+
parser = super(SaveContainer, self).get_parser(prog_name)
162+
parser.add_argument(
163+
'container',
164+
metavar='<container>',
165+
help='Container name to save',
166+
)
167+
return parser
168+
169+
def take_action(self, parsed_args):
170+
self.log.debug("take_action(%s)", parsed_args)
171+
172+
lib_container.save_container(
173+
self.app.client_manager.session,
174+
self.app.client_manager.object_store.endpoint,
175+
parsed_args.container
176+
)
177+
178+
155179
class ShowContainer(show.ShowOne):
156180
"""Show container information"""
157181

openstackclient/object/v1/lib/container.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
except ImportError:
2222
from urlparse import urlparse # noqa
2323

24+
from openstackclient.object.v1.lib import object as object_lib
25+
2426

2527
def create_container(
2628
session,
@@ -120,6 +122,23 @@ def list_containers(
120122
return session.get(url, params=params).json()
121123

122124

125+
def save_container(
126+
session,
127+
url,
128+
container
129+
):
130+
"""Save all the content from a container
131+
132+
:param session: an authenticated keystoneclient.session.Session object
133+
:param url: endpoint
134+
:param container: name of container to save
135+
"""
136+
137+
objects = object_lib.list_objects(session, url, container)
138+
for object in objects:
139+
object_lib.save_object(session, url, container, object['name'])
140+
141+
123142
def show_container(
124143
session,
125144
url,

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,7 @@ openstack.object_store.v1 =
273273
container_create = openstackclient.object.v1.container:CreateContainer
274274
container_delete = openstackclient.object.v1.container:DeleteContainer
275275
container_list = openstackclient.object.v1.container:ListContainer
276+
container_save = openstackclient.object.v1.container:SaveContainer
276277
container_show = openstackclient.object.v1.container:ShowContainer
277278
object_create = openstackclient.object.v1.object:CreateObject
278279
object_delete = openstackclient.object.v1.object:DeleteObject

0 commit comments

Comments
 (0)