Updated to use standard shebang and explicitly flush output; added deprecation warning to stats.conf

This commit is contained in:
gholt 2011-05-12 00:14:02 +00:00
parent 8bf12ddaad
commit d0d98ba96e
4 changed files with 21 additions and 5 deletions

View File

@ -1,4 +1,5 @@
swift (x.x.x) swift (x.x.x)
* Renamed swift-stats-populate to swift-dispersion-populate and * Renamed swift-stats-populate to swift-dispersion-populate and
swift-stats-report to swift-dispersion-report. swift-stats-report to swift-dispersion-report with extraneous unused
options removed. The new tools use dispersion.conf instead of stats.conf.

View File

@ -1,4 +1,4 @@
#!/usr/bin/python -u #!/usr/bin/env python
# Copyright (c) 2010-2011 OpenStack, LLC. # Copyright (c) 2010-2011 OpenStack, LLC.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
@ -18,7 +18,7 @@ import os
import traceback import traceback
from ConfigParser import ConfigParser from ConfigParser import ConfigParser
from cStringIO import StringIO from cStringIO import StringIO
from sys import exit, argv from sys import exit, argv, stdout
from time import time from time import time
from uuid import uuid4 from uuid import uuid4
@ -71,6 +71,7 @@ def report(success):
eta, eta_unit = compute_eta(begun, created, need_to_create) eta, eta_unit = compute_eta(begun, created, need_to_create)
print '\r\x1B[KCreating %s: %d of %d, %d%s left, %d retries' % (item_type, print '\r\x1B[KCreating %s: %d of %d, %d%s left, %d retries' % (item_type,
created, need_to_create, round(eta), eta_unit, retries_done), created, need_to_create, round(eta), eta_unit, retries_done),
stdout.flush()
if __name__ == '__main__': if __name__ == '__main__':
@ -125,6 +126,7 @@ if __name__ == '__main__':
print '\r\x1B[KCreated %d containers for dispersion reporting, %d%s, %d ' \ print '\r\x1B[KCreated %d containers for dispersion reporting, %d%s, %d ' \
'retries' % \ 'retries' % \
(need_to_create, round(elapsed), elapsed_unit, retries_done) (need_to_create, round(elapsed), elapsed_unit, retries_done)
stdout.flush()
container = 'dispersion_objects' container = 'dispersion_objects'
put_container(connpool, container, None) put_container(connpool, container, None)
@ -150,3 +152,4 @@ if __name__ == '__main__':
print '\r\x1B[KCreated %d objects for dispersion reporting, %d%s, %d ' \ print '\r\x1B[KCreated %d objects for dispersion reporting, %d%s, %d ' \
'retries' % \ 'retries' % \
(need_to_create, round(elapsed), elapsed_unit, retries_done) (need_to_create, round(elapsed), elapsed_unit, retries_done)
stdout.flush()

View File

@ -1,4 +1,4 @@
#!/usr/bin/python -u #!/usr/bin/env python
# Copyright (c) 2010-2011 OpenStack, LLC. # Copyright (c) 2010-2011 OpenStack, LLC.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
@ -20,7 +20,7 @@ import socket
from ConfigParser import ConfigParser from ConfigParser import ConfigParser
from httplib import HTTPException from httplib import HTTPException
from optparse import OptionParser from optparse import OptionParser
from sys import argv, exit, stderr from sys import argv, exit, stdout, stderr
from time import time from time import time
from uuid import uuid4 from uuid import uuid4
@ -48,9 +48,11 @@ def get_error_log(prefix):
'considered missing until resolved or the ring is ' \ 'considered missing until resolved or the ring is ' \
'updated.' % (msg_or_exc.http_host, msg_or_exc.http_port, 'updated.' % (msg_or_exc.http_host, msg_or_exc.http_port,
msg_or_exc.http_device) msg_or_exc.http_device)
stderr.flush()
if not hasattr(msg_or_exc, 'http_status') or \ if not hasattr(msg_or_exc, 'http_status') or \
msg_or_exc.http_status not in (404, 507): msg_or_exc.http_status not in (404, 507):
print >>stderr, 'ERROR: %s: %s' % (prefix, msg_or_exc) print >>stderr, 'ERROR: %s: %s' % (prefix, msg_or_exc)
stderr.flush()
return error_log return error_log
@ -63,6 +65,7 @@ def container_dispersion_report(coropool, connpool, account, container_ring,
if not containers_listed: if not containers_listed:
print >>stderr, 'No containers to query. Has ' \ print >>stderr, 'No containers to query. Has ' \
'swift-dispersion-populate been run?' 'swift-dispersion-populate been run?'
stderr.flush()
return return
retries_done = [0] retries_done = [0]
containers_queried = [0] containers_queried = [0]
@ -96,6 +99,7 @@ def container_dispersion_report(coropool, connpool, account, container_ring,
print '\r\x1B[KQuerying containers: %d of %d, %d%s left, %d ' \ print '\r\x1B[KQuerying containers: %d of %d, %d%s left, %d ' \
'retries' % (containers_queried[0], containers_listed, 'retries' % (containers_queried[0], containers_listed,
round(eta), eta_unit, retries_done[0]), round(eta), eta_unit, retries_done[0]),
stdout.flush()
container_parts = {} container_parts = {}
for container in containers: for container in containers:
part, nodes = container_ring.get_nodes(account, container) part, nodes = container_ring.get_nodes(account, container)
@ -127,6 +131,7 @@ def container_dispersion_report(coropool, connpool, account, container_ring,
value, copies_found, copies_expected) value, copies_found, copies_expected)
print 'Sample represents %.02f%% of the container partition space' % ( print 'Sample represents %.02f%% of the container partition space' % (
100.0 * distinct_partitions / container_ring.partition_count) 100.0 * distinct_partitions / container_ring.partition_count)
stdout.flush()
def object_dispersion_report(coropool, connpool, account, object_ring, def object_dispersion_report(coropool, connpool, account, object_ring,
@ -141,11 +146,13 @@ def object_dispersion_report(coropool, connpool, account, object_ring,
raise raise
print >>stderr, 'No objects to query. Has ' \ print >>stderr, 'No objects to query. Has ' \
'swift-dispersion-populate been run?' 'swift-dispersion-populate been run?'
stderr.flush()
return return
objects_listed = len(objects) objects_listed = len(objects)
if not objects_listed: if not objects_listed:
print >>stderr, 'No objects to query. Has swift-dispersion-populate ' \ print >>stderr, 'No objects to query. Has swift-dispersion-populate ' \
'been run?' 'been run?'
stderr.flush()
return return
retries_done = [0] retries_done = [0]
objects_queried = [0] objects_queried = [0]
@ -179,6 +186,7 @@ def object_dispersion_report(coropool, connpool, account, object_ring,
print '\r\x1B[KQuerying objects: %d of %d, %d%s left, %d ' \ print '\r\x1B[KQuerying objects: %d of %d, %d%s left, %d ' \
'retries' % (objects_queried[0], objects_listed, round(eta), 'retries' % (objects_queried[0], objects_listed, round(eta),
eta_unit, retries_done[0]), eta_unit, retries_done[0]),
stdout.flush()
object_parts = {} object_parts = {}
for obj in objects: for obj in objects:
part, nodes = object_ring.get_nodes(account, container, obj) part, nodes = object_ring.get_nodes(account, container, obj)
@ -210,6 +218,7 @@ def object_dispersion_report(coropool, connpool, account, object_ring,
(value, copies_found, copies_expected) (value, copies_found, copies_expected)
print 'Sample represents %.02f%% of the object partition space' % ( print 'Sample represents %.02f%% of the object partition space' % (
100.0 * distinct_partitions / object_ring.partition_count) 100.0 * distinct_partitions / object_ring.partition_count)
stdout.flush()
if __name__ == '__main__': if __name__ == '__main__':

View File

@ -1,3 +1,6 @@
# WARNING: The swift-stats-populate and swift-stats-report commands are being
# replaced with swift-dispersion-populate and swift-dispersion-report; you
# should switch to those before the next Swift release.
[stats] [stats]
auth_url = http://saio:8080/auth/v1.0 auth_url = http://saio:8080/auth/v1.0
auth_user = test:tester auth_user = test:tester