summaryrefslogtreecommitdiff
path: root/openstackclient/object
diff options
context:
space:
mode:
authorSteve Martinelli <stevemar@ca.ibm.com>2014-09-05 12:56:21 -0400
committerSteve Martinelli <stevemar@ca.ibm.com>2014-09-15 01:57:54 +0000
commit505c784bad14d806dd5911c953eb95fe964d188b (patch)
tree7b75a483c213b244856f96c2678a2d192520b875 /openstackclient/object
parente47787e12f4ed6f1568527bbc1218fe3edb412e0 (diff)
downloadpython-openstackclient-505c784bad14d806dd5911c953eb95fe964d188b.tar.gz
Add preliminary save container support
Save all objects from a container implements bp: swift-client Change-Id: I7f2437236574e212033e63d768929d813289ed05
Diffstat (limited to 'openstackclient/object')
-rw-r--r--openstackclient/object/v1/container.py24
-rw-r--r--openstackclient/object/v1/lib/container.py19
2 files changed, 43 insertions, 0 deletions
diff --git a/openstackclient/object/v1/container.py b/openstackclient/object/v1/container.py
index 1ca07f3a..5a60a3e8 100644
--- a/openstackclient/object/v1/container.py
+++ b/openstackclient/object/v1/container.py
@@ -152,6 +152,30 @@ class ListContainer(lister.Lister):
) for s in data))
+class SaveContainer(command.Command):
+ """Save the contents of a container locally"""
+
+ log = logging.getLogger(__name__ + ".SaveContainer")
+
+ def get_parser(self, prog_name):
+ parser = super(SaveContainer, self).get_parser(prog_name)
+ parser.add_argument(
+ 'container',
+ metavar='<container>',
+ help='Container name to save',
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ self.log.debug("take_action(%s)", parsed_args)
+
+ lib_container.save_container(
+ self.app.client_manager.session,
+ self.app.client_manager.object_store.endpoint,
+ parsed_args.container
+ )
+
+
class ShowContainer(show.ShowOne):
"""Show container information"""
diff --git a/openstackclient/object/v1/lib/container.py b/openstackclient/object/v1/lib/container.py
index 63711838..4293ff4a 100644
--- a/openstackclient/object/v1/lib/container.py
+++ b/openstackclient/object/v1/lib/container.py
@@ -21,6 +21,8 @@ try:
except ImportError:
from urlparse import urlparse # noqa
+from openstackclient.object.v1.lib import object as object_lib
+
def create_container(
session,
@@ -120,6 +122,23 @@ def list_containers(
return session.get(url, params=params).json()
+def save_container(
+ session,
+ url,
+ container
+):
+ """Save all the content from a container
+
+ :param session: an authenticated keystoneclient.session.Session object
+ :param url: endpoint
+ :param container: name of container to save
+ """
+
+ objects = object_lib.list_objects(session, url, container)
+ for object in objects:
+ object_lib.save_object(session, url, container, object['name'])
+
+
def show_container(
session,
url,