Add dispersion report flags to limit reports
- Add two optional flags that let you limit swift-dispersion-report to only reporting on containers OR objects. - Also make dispersion.conf and swift-dispersion-report manpages current. DocImpact Change-Id: Iad56133cad261241db27d0e2103098e3c2f3c245
This commit is contained in:
parent
4f617f49b6
commit
e474dfb720
@ -305,7 +305,10 @@ Usage: %prog [options] [conf_file]
|
|||||||
help='print 404s to standard error')
|
help='print 404s to standard error')
|
||||||
parser.add_option('-p', '--partitions', action='store_true', default=False,
|
parser.add_option('-p', '--partitions', action='store_true', default=False,
|
||||||
help='print missing partitions to standard error')
|
help='print missing partitions to standard error')
|
||||||
|
parser.add_option('--container-only', action='store_true', default=False,
|
||||||
|
help='Only run container report')
|
||||||
|
parser.add_option('--object-only', action='store_true', default=False,
|
||||||
|
help='Only run object report')
|
||||||
options, args = parser.parse_args()
|
options, args = parser.parse_args()
|
||||||
|
|
||||||
conffile = '/etc/swift/dispersion.conf'
|
conffile = '/etc/swift/dispersion.conf'
|
||||||
@ -322,6 +325,12 @@ Usage: %prog [options] [conf_file]
|
|||||||
concurrency = int(conf.get('concurrency', 25))
|
concurrency = int(conf.get('concurrency', 25))
|
||||||
if options.dump_json or config_true_value(conf.get('dump_json', 'no')):
|
if options.dump_json or config_true_value(conf.get('dump_json', 'no')):
|
||||||
json_output = True
|
json_output = True
|
||||||
|
container_report = config_true_value(conf.get('container_report', 'yes')) \
|
||||||
|
and not options.object_only
|
||||||
|
object_report = config_true_value(conf.get('object_report', 'yes')) \
|
||||||
|
and not options.container_only
|
||||||
|
if not (object_report or container_report):
|
||||||
|
exit("Neither container or object report is set to run")
|
||||||
if options.debug:
|
if options.debug:
|
||||||
debug = True
|
debug = True
|
||||||
|
|
||||||
@ -339,11 +348,14 @@ Usage: %prog [options] [conf_file]
|
|||||||
container_ring = Ring(swift_dir, ring_name='container')
|
container_ring = Ring(swift_dir, ring_name='container')
|
||||||
object_ring = Ring(swift_dir, ring_name='object')
|
object_ring = Ring(swift_dir, ring_name='object')
|
||||||
|
|
||||||
container_result = container_dispersion_report(
|
output = {}
|
||||||
coropool, connpool, account, container_ring, retries,
|
if container_report:
|
||||||
options.partitions)
|
output['container'] = container_dispersion_report(
|
||||||
object_result = object_dispersion_report(
|
coropool, connpool, account, container_ring, retries,
|
||||||
coropool, connpool, account, object_ring, retries, options.partitions)
|
options.partitions)
|
||||||
|
if object_report:
|
||||||
|
output['object'] = object_dispersion_report(
|
||||||
|
coropool, connpool, account, object_ring, retries,
|
||||||
|
options.partitions)
|
||||||
if json_output:
|
if json_output:
|
||||||
print json.dumps({"container": container_result,
|
print json.dumps(output)
|
||||||
"object": object_result})
|
|
||||||
|
@ -45,11 +45,17 @@ Authentication system account/user password
|
|||||||
.IP "\fBswift_dir\fR"
|
.IP "\fBswift_dir\fR"
|
||||||
Location of openstack-swift configuration and ring files
|
Location of openstack-swift configuration and ring files
|
||||||
.IP "\fBdispersion_coverage\fR"
|
.IP "\fBdispersion_coverage\fR"
|
||||||
Percentage of partition coverage to use. The default is 1
|
Percentage of partition coverage to use. The default is 1.
|
||||||
.IP "\fBretries\fR"
|
.IP "\fBretries\fR"
|
||||||
Maximum number of attempts
|
Maximum number of attempts
|
||||||
.IP "\fBconcurrency\fR"
|
.IP "\fBconcurrency\fR"
|
||||||
Maximum number of concurrencies to
|
Concurrency to use. The default is 25.
|
||||||
|
.IP "\fBdump_json\fR"
|
||||||
|
Whether to output in json format. The default is no.
|
||||||
|
.IP "\fBcontainer_report\fR"
|
||||||
|
Whether to run the container report. The default is yes.
|
||||||
|
.IP "\fBobject_report\fR"
|
||||||
|
Whether to run the object report. The default is yes.
|
||||||
.RE
|
.RE
|
||||||
.PD
|
.PD
|
||||||
|
|
||||||
@ -65,6 +71,8 @@ Maximum number of concurrencies to
|
|||||||
.IP "# retries = 5"
|
.IP "# retries = 5"
|
||||||
.IP "# concurrency = 25"
|
.IP "# concurrency = 25"
|
||||||
.IP "# dump_json = no"
|
.IP "# dump_json = no"
|
||||||
|
.IP "# container_report = yes"
|
||||||
|
.IP "# object_report = yes"
|
||||||
.RE
|
.RE
|
||||||
.PD
|
.PD
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.LP
|
.LP
|
||||||
.B swift-dispersion-report [-d|--debug] [-j|--dump-json] [-p|--partitions] [conf_file]
|
.B swift-dispersion-report [-d|--debug] [-j|--dump-json] [-p|--partitions] [--container-only|--object-only] [conf_file]
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.PP
|
.PP
|
||||||
@ -72,6 +72,18 @@ output dispersion report in json format
|
|||||||
.IP "\fB-p, --partitions\fR"
|
.IP "\fB-p, --partitions\fR"
|
||||||
output the partition numbers that have any missing replicas
|
output the partition numbers that have any missing replicas
|
||||||
|
|
||||||
|
.SH OPTIONS
|
||||||
|
.RS 0
|
||||||
|
.PD 1
|
||||||
|
.IP "\fB--container-only\fR"
|
||||||
|
Only run the container report
|
||||||
|
|
||||||
|
.SH OPTIONS
|
||||||
|
.RS 0
|
||||||
|
.PD 1
|
||||||
|
.IP "\fB--object-only\fR"
|
||||||
|
Only run the object report
|
||||||
|
|
||||||
.SH CONFIGURATION
|
.SH CONFIGURATION
|
||||||
.PD 0
|
.PD 0
|
||||||
Example \fI/etc/swift/dispersion.conf\fR:
|
Example \fI/etc/swift/dispersion.conf\fR:
|
||||||
|
@ -254,6 +254,18 @@ place and then rerun the dispersion report::
|
|||||||
100.00% of object copies found (7857 of 7857)
|
100.00% of object copies found (7857 of 7857)
|
||||||
Sample represents 1.00% of the object partition space
|
Sample represents 1.00% of the object partition space
|
||||||
|
|
||||||
|
You can also run the report for only containers or objects::
|
||||||
|
|
||||||
|
$ swift-dispersion-report --container-only
|
||||||
|
Queried 2621 containers for dispersion reporting, 17s, 0 retries
|
||||||
|
100.00% of container copies found (7863 of 7863)
|
||||||
|
Sample represents 1.00% of the container partition space
|
||||||
|
|
||||||
|
$ swift-dispersion-report --object-only
|
||||||
|
Queried 2619 objects for dispersion reporting, 7s, 0 retries
|
||||||
|
100.00% of object copies found (7857 of 7857)
|
||||||
|
Sample represents 1.00% of the object partition space
|
||||||
|
|
||||||
Alternatively, the dispersion report can also be output in json format. This
|
Alternatively, the dispersion report can also be output in json format. This
|
||||||
allows it to be more easily consumed by third party utilities::
|
allows it to be more easily consumed by third party utilities::
|
||||||
|
|
||||||
|
@ -11,4 +11,6 @@ auth_key = testing
|
|||||||
# dispersion_coverage = 1
|
# dispersion_coverage = 1
|
||||||
# retries = 5
|
# retries = 5
|
||||||
# concurrency = 25
|
# concurrency = 25
|
||||||
|
# container_report = yes
|
||||||
|
# object_report = yes
|
||||||
# dump_json = no
|
# dump_json = no
|
||||||
|
Loading…
Reference in New Issue
Block a user