summaryrefslogtreecommitdiff
path: root/openstackclient/object
diff options
context:
space:
mode:
authorSteve Martinelli <stevemar@ca.ibm.com>2014-08-03 02:19:29 -0400
committerSteve Martinelli <stevemar@ca.ibm.com>2014-08-03 03:52:04 -0400
commitbe83ae763ffbcd3208ba1df9fe8b22cfe3fa6fa2 (patch)
tree460e8addbf416eee8ff4b9c7d946c0eb251abe4f /openstackclient/object
parent75e8490e54bf442b36534ea9c8b53c203b6a9938 (diff)
downloadpython-openstackclient-be83ae763ffbcd3208ba1df9fe8b22cfe3fa6fa2.tar.gz
Add container create and delete support
Add basic container create and delete support to OSC. Change-Id: Ia104db9d7e580d33097ea33a5690998f817995d1 implements: bp swift-client
Diffstat (limited to 'openstackclient/object')
-rw-r--r--openstackclient/object/v1/container.py51
-rw-r--r--openstackclient/object/v1/lib/container.py39
2 files changed, 90 insertions, 0 deletions
diff --git a/openstackclient/object/v1/container.py b/openstackclient/object/v1/container.py
index 1e252aaf..ae4013fc 100644
--- a/openstackclient/object/v1/container.py
+++ b/openstackclient/object/v1/container.py
@@ -19,6 +19,7 @@
import logging
import six
+from cliff import command
from cliff import lister
from cliff import show
@@ -26,6 +27,56 @@ from openstackclient.common import utils
from openstackclient.object.v1.lib import container as lib_container
+class CreateContainer(show.ShowOne):
+ """Create a container"""
+
+ log = logging.getLogger(__name__ + '.CreateContainer')
+
+ def get_parser(self, prog_name):
+ parser = super(CreateContainer, self).get_parser(prog_name)
+ parser.add_argument(
+ 'container',
+ metavar='<container>',
+ help='New container name',
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ self.log.debug('take_action(%s)', parsed_args)
+
+ data = lib_container.create_container(
+ self.app.restapi,
+ self.app.client_manager.object_store.endpoint,
+ parsed_args.container,
+ )
+
+ return zip(*sorted(six.iteritems(data)))
+
+
+class DeleteContainer(command.Command):
+ """Delete a container"""
+
+ log = logging.getLogger(__name__ + '.DeleteContainer')
+
+ def get_parser(self, prog_name):
+ parser = super(DeleteContainer, self).get_parser(prog_name)
+ parser.add_argument(
+ 'container',
+ metavar='<container>',
+ help='Container name to delete',
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ self.log.debug('take_action(%s)', parsed_args)
+
+ lib_container.delete_container(
+ self.app.restapi,
+ self.app.client_manager.object_store.endpoint,
+ parsed_args.container,
+ )
+
+
class ListContainer(lister.Lister):
"""List containers"""
diff --git a/openstackclient/object/v1/lib/container.py b/openstackclient/object/v1/lib/container.py
index 72e97d4e..bd509555 100644
--- a/openstackclient/object/v1/lib/container.py
+++ b/openstackclient/object/v1/lib/container.py
@@ -22,6 +22,45 @@ except ImportError:
from urlparse import urlparse # noqa
+def create_container(
+ api,
+ url,
+ container,
+):
+ """Create a container
+
+ :param api: a restapi object
+ :param url: endpoint
+ :param container: name of container to create
+ :returns: dict of returned headers
+ """
+
+ response = api.put("%s/%s" % (url, container))
+ url_parts = urlparse(url)
+ data = {
+ 'account': url_parts.path.split('/')[-1],
+ 'container': container,
+ }
+ data['x-trans-id'] = response.headers.get('x-trans-id', None)
+
+ return data
+
+
+def delete_container(
+ api,
+ url,
+ container,
+):
+ """Delete a container
+
+ :param api: a restapi object
+ :param url: endpoint
+ :param container: name of container to delete
+ """
+
+ api.delete("%s/%s" % (url, container))
+
+
def list_containers(
api,
url,