add set/unset support for objects in object store
add docs and command support to set and unset metadata of objects that are stored in an object store (swift). Closes-Bug: #1501945 Change-Id: If838a4b3343b6ddb97cd4bd1cb63f0ba1c1a00a1
This commit is contained in:
parent
abaf711e24
commit
e48c7afee4
@ -119,6 +119,31 @@ Save object locally
|
||||
|
||||
Object to save
|
||||
|
||||
object set
|
||||
----------
|
||||
|
||||
Set object properties
|
||||
|
||||
.. program:: object set
|
||||
.. code:: bash
|
||||
|
||||
os object set
|
||||
<container>
|
||||
[<object>]
|
||||
[--property <key=value> [...] ]
|
||||
|
||||
.. describe:: <container>
|
||||
|
||||
Modify <object> from <container>
|
||||
|
||||
.. describe:: <object>
|
||||
|
||||
Object to modify
|
||||
|
||||
.. option:: --property <key=value>
|
||||
|
||||
Set a property on this object (repeat option to set multiple properties)
|
||||
|
||||
object show
|
||||
-----------
|
||||
|
||||
@ -138,3 +163,28 @@ Display object details
|
||||
.. describe:: <object>
|
||||
|
||||
Object to display
|
||||
|
||||
object unset
|
||||
------------
|
||||
|
||||
Unset object properties
|
||||
|
||||
.. program:: object unset
|
||||
.. code:: bash
|
||||
|
||||
os object unset
|
||||
<container>
|
||||
[<object>]
|
||||
[--property <key>]
|
||||
|
||||
.. describe:: <container>
|
||||
|
||||
Modify <object> from <container>
|
||||
|
||||
.. describe:: <object>
|
||||
|
||||
Object to modify
|
||||
|
||||
.. option:: --property <key>
|
||||
|
||||
Property to remove from object (repeat option to remove multiple properties)
|
||||
|
@ -366,6 +366,46 @@ class APIv1(api.BaseAPI):
|
||||
for chunk in response.iter_content():
|
||||
f.write(chunk)
|
||||
|
||||
def object_set(
|
||||
self,
|
||||
container,
|
||||
object,
|
||||
properties,
|
||||
):
|
||||
"""Set object properties
|
||||
|
||||
:param string container:
|
||||
container name for object to modify
|
||||
:param string object:
|
||||
name of object to modify
|
||||
:param dict properties:
|
||||
properties to add or update for the container
|
||||
"""
|
||||
|
||||
headers = self._set_properties(properties, 'X-Object-Meta-%s')
|
||||
if headers:
|
||||
self.create("%s/%s" % (container, object), headers=headers)
|
||||
|
||||
def object_unset(
|
||||
self,
|
||||
container,
|
||||
object,
|
||||
properties,
|
||||
):
|
||||
"""Unset object properties
|
||||
|
||||
:param string container:
|
||||
container name for object to modify
|
||||
:param string object:
|
||||
name of object to modify
|
||||
:param dict properties:
|
||||
properties to remove from the object
|
||||
"""
|
||||
|
||||
headers = self._unset_properties(properties, 'X-Remove-Object-Meta-%s')
|
||||
if headers:
|
||||
self.create("%s/%s" % (container, object), headers=headers)
|
||||
|
||||
def object_show(
|
||||
self,
|
||||
container=None,
|
||||
|
@ -23,6 +23,7 @@ from cliff import command
|
||||
from cliff import lister
|
||||
from cliff import show
|
||||
|
||||
from openstackclient.common import parseractions
|
||||
from openstackclient.common import utils
|
||||
|
||||
|
||||
@ -221,6 +222,42 @@ class SaveObject(command.Command):
|
||||
)
|
||||
|
||||
|
||||
class SetObject(command.Command):
|
||||
"""Set object properties"""
|
||||
|
||||
log = logging.getLogger(__name__ + '.SetObject')
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(SetObject, self).get_parser(prog_name)
|
||||
parser.add_argument(
|
||||
'container',
|
||||
metavar='<container>',
|
||||
help='Modify <object> from <container>',
|
||||
)
|
||||
parser.add_argument(
|
||||
'object',
|
||||
metavar='<object>',
|
||||
help='Object to modify',
|
||||
)
|
||||
parser.add_argument(
|
||||
"--property",
|
||||
metavar="<key=value>",
|
||||
required=True,
|
||||
action=parseractions.KeyValueAction,
|
||||
help="Set a property on this object "
|
||||
"(repeat option to set multiple properties)"
|
||||
)
|
||||
return parser
|
||||
|
||||
@utils.log_method(log)
|
||||
def take_action(self, parsed_args):
|
||||
self.app.client_manager.object_store.object_set(
|
||||
parsed_args.container,
|
||||
parsed_args.object,
|
||||
properties=parsed_args.property,
|
||||
)
|
||||
|
||||
|
||||
class ShowObject(show.ShowOne):
|
||||
"""Display object details"""
|
||||
|
||||
@ -249,3 +286,40 @@ class ShowObject(show.ShowOne):
|
||||
)
|
||||
|
||||
return zip(*sorted(six.iteritems(data)))
|
||||
|
||||
|
||||
class UnsetObject(command.Command):
|
||||
"""Unset object properties"""
|
||||
|
||||
log = logging.getLogger(__name__ + '.UnsetObject')
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(UnsetObject, self).get_parser(prog_name)
|
||||
parser.add_argument(
|
||||
'container',
|
||||
metavar='<container>',
|
||||
help='Modify <object> from <container>',
|
||||
)
|
||||
parser.add_argument(
|
||||
'object',
|
||||
metavar='<object>',
|
||||
help='Object to modify',
|
||||
)
|
||||
parser.add_argument(
|
||||
'--property',
|
||||
metavar='<key>',
|
||||
required=True,
|
||||
action='append',
|
||||
default=[],
|
||||
help='Property to remove from object '
|
||||
'(repeat option to remove multiple properties)',
|
||||
)
|
||||
return parser
|
||||
|
||||
@utils.log_method(log)
|
||||
def take_action(self, parsed_args):
|
||||
self.app.client_manager.object_store.object_unset(
|
||||
parsed_args.container,
|
||||
parsed_args.object,
|
||||
properties=parsed_args.property,
|
||||
)
|
||||
|
@ -346,7 +346,9 @@ openstack.object_store.v1 =
|
||||
object_delete = openstackclient.object.v1.object:DeleteObject
|
||||
object_list = openstackclient.object.v1.object:ListObject
|
||||
object_save = openstackclient.object.v1.object:SaveObject
|
||||
object_set = openstackclient.object.v1.object:SetObject
|
||||
object_show = openstackclient.object.v1.object:ShowObject
|
||||
object_unset = openstackclient.object.v1.object:UnsetObject
|
||||
|
||||
openstack.volume.v1 =
|
||||
backup_create = openstackclient.volume.v1.backup:CreateBackup
|
||||
|
Loading…
Reference in New Issue
Block a user