Commit ff55e946 authored by Sofia Papagiannaki's avatar Sofia Papagiannaki
Browse files

pithos: Introduce file-show command

parent 6e435450
...@@ -185,6 +185,10 @@ Cyclades ...@@ -185,6 +185,10 @@ Cyclades
Pithos Pithos
------ ------
* Management commands:
* Introduced new command:
* file-show
* Refactor metadata schema (table attributes) in Pithos DB to speedup current * Refactor metadata schema (table attributes) in Pithos DB to speedup current
objects by domain attribute. This is used by Plankton for listing VM images. objects by domain attribute. This is used by Plankton for listing VM images.
......
...@@ -1407,6 +1407,7 @@ Name Description ...@@ -1407,6 +1407,7 @@ Name Description
reconcile-commissions-pithos Display unresolved commissions and trigger their recovery reconcile-commissions-pithos Display unresolved commissions and trigger their recovery
service-export-pithos Export Pithos services and resources in JSON format service-export-pithos Export Pithos services and resources in JSON format
reconcile-resources-pithos Detect unsynchronized usage between Astakos and Pithos DB resources and synchronize them if specified so. reconcile-resources-pithos Detect unsynchronized usage between Astakos and Pithos DB resources and synchronize them if specified so.
file-show Display object information
============================ =========================== ============================ ===========================
Cyclades snf-manage commands Cyclades snf-manage commands
......
# Copyright 2011-2012 GRNET S.A. All rights reserved. # Copyright 2011-2013 GRNET S.A. All rights reserved.
# #
# Redistribution and use in source and binary forms, with or # Redistribution and use in source and binary forms, with or
# without modification, are permitted provided that the following # without modification, are permitted provided that the following
......
# Copyright 2013 GRNET S.A. All rights reserved.
#
# Redistribution and use in source and binary forms, with or
# without modification, are permitted provided that the following
# conditions are met:
#
# 1. Redistributions of source code must retain the above
# copyright notice, this list of conditions and the following
# disclaimer.
#
# 2. Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials
# provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# The views and conclusions contained in the software and
# documentation are those of the authors and should not be
# interpreted as representing official policies, either expressed
# or implied, of GRNET S.A.
from django.core.management.base import CommandError
from optparse import make_option
from snf_django.management.commands import SynnefoCommand
from snf_django.management import utils
from pithos.api.util import get_backend, update_public_meta
class Command(SynnefoCommand):
args = "<account> <container> <object>"
help = """Show file information"""
option_list = SynnefoCommand.option_list + (
make_option("--obj-version", dest="obj_version",
default=None,
help="Show information for a specific file version"),
make_option("--domain", dest="domain",
default='pithos',
help="Show file attributes from the specific domain."),
)
def handle(self, *args, **options):
if len(args) != 3:
raise CommandError("Invalid number of arguments")
success_status = False
try:
b = get_backend()
b.pre_exec()
account, container, name = args
kv = b.get_object_meta(account, account, container, name,
options['domain'], options['obj_version'])
if options['obj_version'] is None:
_, path, permissions = b.get_object_permissions(account,
account,
container,
name)
if path is not None:
kv['permissions'] = path, dict(permissions)
public = b.get_object_public(account, account, container, name)
if public is not None:
update_public_meta(public, kv)
kv['hashmap'] = b.get_object_hashmap(account, account, container,
name,
options['obj_version'])[-1]
utils.pprint_table(self.stdout, [kv.values()], kv.keys(),
options["output_format"], vertical=True)
success_status = True
except Exception, e:
raise CommandError(e)
finally:
b.post_exec(success_status)
b.close()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment