Pull swift-*-info scripts into swift.cli.info

Related-Change: Ifcc8138e7b55d5b82bea0d411ec6bfcca2c77c83
Change-Id: I2718d8b96193d13f913824fc1091d72737d755ea
This commit is contained in:
Tim Burke 2024-06-26 12:15:07 -07:00
parent da12a55bc5
commit 2c5dc64d25
5 changed files with 109 additions and 128 deletions

View File

@ -11,42 +11,7 @@
# License for the specific language governing permissions and limitations
# under the License.
import sqlite3
import sys
from optparse import OptionParser
from swift.cli.info import print_info, InfoSystemExit
from swift.common.exceptions import LockTimeout
def run_print_info(args, opts):
try:
print_info('account', *args, **opts)
except InfoSystemExit:
sys.exit(1)
except (sqlite3.OperationalError, LockTimeout) as e:
if not opts.get('stale_reads_ok'):
opts['stale_reads_ok'] = True
print('Warning: Possibly Stale Data')
run_print_info(args, opts)
sys.exit(2)
else:
print('Account info failed: %s' % e)
sys.exit(1)
from swift.cli import info
if __name__ == '__main__':
parser = OptionParser('%prog [options] ACCOUNT_DB_FILE')
parser.add_option(
'-d', '--swift-dir', default='/etc/swift',
help="Pass location of swift directory")
parser.add_option(
'--drop-prefixes', default=False, action="store_true",
help="When outputting metadata, drop the per-section common prefixes")
options, args = parser.parse_args()
if len(args) != 1:
sys.exit(parser.print_help())
run_print_info(args, vars(options))
info.account_main()

View File

@ -11,49 +11,7 @@
# License for the specific language governing permissions and limitations
# under the License.
import sqlite3
import sys
from optparse import OptionParser
from swift.cli.info import print_info, InfoSystemExit
from swift.common.exceptions import LockTimeout
def run_print_info(args, opts):
try:
print_info('container', *args, **opts)
except InfoSystemExit:
sys.exit(1)
except (sqlite3.OperationalError, LockTimeout) as e:
if not opts.get('stale_reads_ok'):
opts['stale_reads_ok'] = True
print('Warning: Possibly Stale Data')
run_print_info(args, opts)
sys.exit(2)
else:
print('Container info failed: %s' % e)
sys.exit(1)
from swift.cli import info
if __name__ == '__main__':
parser = OptionParser('%prog [options] CONTAINER_DB_FILE')
parser.add_option(
'-d', '--swift-dir', default='/etc/swift',
help="Pass location of swift directory")
parser.add_option(
'--drop-prefixes', default=False, action="store_true",
help="When outputting metadata, drop the per-section common prefixes")
parser.add_option(
'-v', '--verbose', default=False, action="store_true",
help="Show all shard ranges. By default, only the number of shard "
"ranges is displayed if there are many shards.")
parser.add_option(
'--sync', '-s', default=False, action="store_true",
help="Output the contents of the incoming/outging sync tables")
options, args = parser.parse_args()
if len(args) != 1:
sys.exit(parser.print_help())
run_print_info(args, vars(options))
info.container_main()

View File

@ -14,47 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import codecs
import sys
from optparse import OptionParser
import six
from swift.common.storage_policy import reload_storage_policies
from swift.common.utils import set_swift_dir
from swift.cli.info import print_obj, InfoSystemExit
from swift.cli import info
if __name__ == '__main__':
if not six.PY2:
# Make stdout able to write escaped bytes
sys.stdout = codecs.getwriter("utf-8")(
sys.stdout.detach(), errors='surrogateescape')
parser = OptionParser('%prog [options] OBJECT_FILE')
parser.add_option(
'-n', '--no-check-etag', default=True,
action="store_false", dest="check_etag",
help="Don't verify file contents against stored etag")
parser.add_option(
'-d', '--swift-dir', default='/etc/swift', dest='swift_dir',
help="Pass location of swift directory")
parser.add_option(
'--drop-prefixes', default=False, action="store_true",
help="When outputting metadata, drop the per-section common prefixes")
parser.add_option(
'-P', '--policy-name', dest='policy_name',
help="Specify storage policy name")
options, args = parser.parse_args()
if len(args) != 1:
sys.exit(parser.print_help())
if set_swift_dir(options.swift_dir):
reload_storage_policies()
try:
print_obj(*args, **vars(options))
except InfoSystemExit:
sys.exit(1)
info.obj_main()

View File

@ -43,13 +43,10 @@ packages =
[files]
scripts =
bin/swift-account-audit
bin/swift-account-info
bin/swift-config
bin/swift-container-info
bin/swift-reconciler-enqueue
bin/swift-drive-audit
bin/swift-get-nodes
bin/swift-object-info
bin/swift-oldies
bin/swift-orphans
@ -67,11 +64,13 @@ keystone =
[entry_points]
console_scripts =
swift-account-auditor = swift.account.auditor:main
swift-account-info = swift.cli.info:account_main
swift-account-reaper = swift.account.reaper:main
swift-account-replicator = swift.account.replicator:main
swift-account-server = swift.account.server:main
swift-container-auditor = swift.container.auditor:main
swift-container-deleter = swift.cli.container_deleter:main
swift-container-info = swift.cli.info:container_main
swift-container-replicator = swift.container.replicator:main
swift-container-reconciler = swift.container.reconciler:main
swift-container-server = swift.container.server:main
@ -85,6 +84,7 @@ console_scripts =
swift-manage-shard-ranges = swift.cli.manage_shard_ranges:main
swift-object-auditor = swift.obj.auditor:main
swift-object-expirer = swift.obj.expirer:main
swift-object-info = swift.cli.info:obj_main
swift-object-reconstructor = swift.obj.reconstructor:main
swift-object-relinker = swift.cli.relinker:main
swift-object-replicator = swift.obj.replicator:main

View File

@ -10,15 +10,21 @@
# License for the specific language governing permissions and limitations
# under the License.
from __future__ import print_function
import codecs
import itertools
import json
from optparse import OptionParser
import os
import sqlite3
import sys
from collections import defaultdict
import six
from six.moves import urllib
from swift.common.exceptions import LockTimeout
from swift.common.utils import hash_path, storage_directory, \
Timestamp, is_valid_ipv6
from swift.common.ring import Ring
@ -29,10 +35,10 @@ from swift.account.backend import AccountBroker, DATADIR as ABDATADIR
from swift.container.backend import ContainerBroker, DATADIR as CBDATADIR
from swift.obj.diskfile import get_data_dir, read_metadata, DATADIR_BASE, \
extract_policy
from swift.common.storage_policy import POLICIES
from swift.common.storage_policy import POLICIES, reload_storage_policies
from swift.common.swob import wsgi_to_str
from swift.common.middleware.crypto.crypto_utils import load_crypto_meta
from swift.common.utils import md5
from swift.common.utils import md5, set_swift_dir
class InfoSystemExit(Exception):
@ -713,3 +719,95 @@ def print_item_locations(ring, ring_name=None, account=None, container=None,
print('Object \t%s\n\n' % urllib.parse.quote(obj))
print_ring_locations(ring, loc, account, container, obj, part, all_nodes,
policy_index=policy_index)
def obj_main():
if not six.PY2:
# Make stdout able to write escaped bytes
sys.stdout = codecs.getwriter("utf-8")(
sys.stdout.detach(), errors='surrogateescape')
parser = OptionParser('%prog [options] OBJECT_FILE')
parser.add_option(
'-n', '--no-check-etag', default=True,
action="store_false", dest="check_etag",
help="Don't verify file contents against stored etag")
parser.add_option(
'-d', '--swift-dir', default='/etc/swift', dest='swift_dir',
help="Pass location of swift directory")
parser.add_option(
'--drop-prefixes', default=False, action="store_true",
help="When outputting metadata, drop the per-section common prefixes")
parser.add_option(
'-P', '--policy-name', dest='policy_name',
help="Specify storage policy name")
options, args = parser.parse_args()
if len(args) != 1:
sys.exit(parser.print_help())
if set_swift_dir(options.swift_dir):
reload_storage_policies()
try:
print_obj(*args, **vars(options))
except InfoSystemExit:
sys.exit(1)
def run_print_info(db_type, args, opts):
try:
print_info(db_type, *args, **opts)
except InfoSystemExit:
sys.exit(1)
except (sqlite3.OperationalError, LockTimeout) as e:
if not opts.get('stale_reads_ok'):
opts['stale_reads_ok'] = True
print('Warning: Possibly Stale Data')
run_print_info(db_type, args, opts)
sys.exit(2)
else:
print('%s info failed: %s' % (db_type.title(), e))
sys.exit(1)
def container_main():
parser = OptionParser('%prog [options] CONTAINER_DB_FILE')
parser.add_option(
'-d', '--swift-dir', default='/etc/swift',
help="Pass location of swift directory")
parser.add_option(
'--drop-prefixes', default=False, action="store_true",
help="When outputting metadata, drop the per-section common prefixes")
parser.add_option(
'-v', '--verbose', default=False, action="store_true",
help="Show all shard ranges. By default, only the number of shard "
"ranges is displayed if there are many shards.")
parser.add_option(
'--sync', '-s', default=False, action="store_true",
help="Output the contents of the incoming/outging sync tables")
options, args = parser.parse_args()
if len(args) != 1:
sys.exit(parser.print_help())
run_print_info('container', args, vars(options))
def account_main():
parser = OptionParser('%prog [options] ACCOUNT_DB_FILE')
parser.add_option(
'-d', '--swift-dir', default='/etc/swift',
help="Pass location of swift directory")
parser.add_option(
'--drop-prefixes', default=False, action="store_true",
help="When outputting metadata, drop the per-section common prefixes")
options, args = parser.parse_args()
if len(args) != 1:
sys.exit(parser.print_help())
run_print_info('account', args, vars(options))