)]}'
{"bin/swift-container-info":[{"author":{"_account_id":1253,"name":"Gerry Drudy","email":"gerry.drudy@hpe.com","username":"gerry-drudy"},"change_message_id":"b3ae782b1ef686e661021a6129f3a227e70cd7a3","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        print \"Usage: %s CONTAINER_DB_FILE\" % sys.argv[0]"},{"line_number":26,"context_line":"        sys.exit(1)"},{"line_number":27,"context_line":"    try:"},{"line_number":28,"context_line":"        ring \u003d Ring(\u0027/etc/swift/\u0027, ring_name\u003d\u0027container\u0027)"},{"line_number":29,"context_line":"    except Exception:"},{"line_number":30,"context_line":"        ring \u003d None"},{"line_number":31,"context_line":"    db_file \u003d sys.argv[1]"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAWH%2F%2B92c%3D","line":28,"updated":"2014-03-21 10:32:06.000000000","message":"Can you try and avoid hardcoding the location of the ring. Either pass in the ring file on the command line or pull it from the container-server.conf?","commit_id":"14c9b6bf731d613dcdf7654e71cc28bb1afb9813"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6c930f993d81ec18c339670244353d1fb01fdbd8","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        print \"Usage: %s CONTAINER_DB_FILE\" % sys.argv[0]"},{"line_number":26,"context_line":"        sys.exit(1)"},{"line_number":27,"context_line":"    try:"},{"line_number":28,"context_line":"        ring \u003d Ring(\u0027/etc/swift/\u0027, ring_name\u003d\u0027container\u0027)"},{"line_number":29,"context_line":"    except Exception:"},{"line_number":30,"context_line":"        ring \u003d None"},{"line_number":31,"context_line":"    db_file \u003d sys.argv[1]"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAWH%2F%2B4EU%3D","line":28,"in_reply_to":"AAAAWH%2F%2B92c%3D","updated":"2014-03-22 05:28:43.000000000","message":"I\u0027m not worried about it - worse case you just don\u0027t get ring locations and you can\u0027t *really* not use /etc/swift anyway because it\u0027s hard coded in swift.common\n\nYou could import it from there though :P","commit_id":"14c9b6bf731d613dcdf7654e71cc28bb1afb9813"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6c930f993d81ec18c339670244353d1fb01fdbd8","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    broker \u003d ContainerBroker(db_file)"},{"line_number":37,"context_line":"    for key, (value, timestamp) in broker.metadata.iteritems():"},{"line_number":38,"context_line":"            if value and key.lower().startswith(\u0027x-container-meta-\u0027):"},{"line_number":39,"context_line":"                metadata[key] \u003d value"},{"line_number":40,"context_line":"    info \u003d broker.get_info()"},{"line_number":41,"context_line":"    account \u003d info[\u0027account\u0027]"},{"line_number":42,"context_line":"    container \u003d info[\u0027container\u0027]"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAWH%2F%2B4EQ%3D","line":39,"updated":"2014-03-22 05:28:43.000000000","message":"I think there\u0027s other metadata that would be kinda useful - sysmeta; x-container-read/write - you should bundle all that up and iter over it after you display the stuff coming out of get_info!","commit_id":"14c9b6bf731d613dcdf7654e71cc28bb1afb9813"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6c930f993d81ec18c339670244353d1fb01fdbd8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    info \u003d broker.get_info()"},{"line_number":41,"context_line":"    account \u003d info[\u0027account\u0027]"},{"line_number":42,"context_line":"    container \u003d info[\u0027container\u0027]"},{"line_number":43,"context_line":"    container_hash \u003d hash_path(account, container)"},{"line_number":44,"context_line":"    ts \u003d info[\u0027put_timestamp\u0027]"},{"line_number":45,"context_line":"    print \u0027  Account: %s\u0027 % info[\u0027account\u0027]"},{"line_number":46,"context_line":"    print \u0027  Container: %s\u0027 % info[\u0027container\u0027]"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAWH%2F%2B4EI%3D","line":43,"updated":"2014-03-22 05:28:43.000000000","message":"Display this right after Account and Container - just like -object-info does with the \"Object Hash\"","commit_id":"14c9b6bf731d613dcdf7654e71cc28bb1afb9813"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6c930f993d81ec18c339670244353d1fb01fdbd8","unresolved":false,"context_lines":[{"line_number":62,"context_line":"           (datetime.fromtimestamp(float(info[\u0027reported_delete_timestamp\u0027])),"},{"line_number":63,"context_line":"            info[\u0027reported_delete_timestamp\u0027]))"},{"line_number":64,"context_line":"    print \u0027  Reported Object Count: %s\u0027 % info[\u0027reported_object_count\u0027]"},{"line_number":65,"context_line":"    print \u0027  Reported Bytes Used: %s\u0027 % info[\u0027reported_bytes_used\u0027]"},{"line_number":66,"context_line":"    print \u0027  Hash: %s\u0027 % info[\u0027hash\u0027]"},{"line_number":67,"context_line":"    print \u0027  ID: %s\u0027 % info[\u0027id\u0027]"},{"line_number":68,"context_line":"    if metadata:"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAWH%2F%2B4EE%3D","line":65,"updated":"2014-03-22 05:28:43.000000000","message":"These reported values are so awesome!  Very useful for digging into replication issues!","commit_id":"14c9b6bf731d613dcdf7654e71cc28bb1afb9813"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6c930f993d81ec18c339670244353d1fb01fdbd8","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            info[\u0027reported_delete_timestamp\u0027]))"},{"line_number":64,"context_line":"    print \u0027  Reported Object Count: %s\u0027 % info[\u0027reported_object_count\u0027]"},{"line_number":65,"context_line":"    print \u0027  Reported Bytes Used: %s\u0027 % info[\u0027reported_bytes_used\u0027]"},{"line_number":66,"context_line":"    print \u0027  Hash: %s\u0027 % info[\u0027hash\u0027]"},{"line_number":67,"context_line":"    print \u0027  ID: %s\u0027 % info[\u0027id\u0027]"},{"line_number":68,"context_line":"    if metadata:"},{"line_number":69,"context_line":"        print \u0027  User Metadata: %s\u0027 % metadata"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAWH%2F%2B4EM%3D","line":66,"updated":"2014-03-22 05:28:43.000000000","message":"Rename this part to Chexor (the replication row check)","commit_id":"14c9b6bf731d613dcdf7654e71cc28bb1afb9813"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6c930f993d81ec18c339670244353d1fb01fdbd8","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    for key, value in info.iteritems():"},{"line_number":75,"context_line":"        if value !\u003d -1 and key.lower().startswith(\u0027x_container_sync\u0027):"},{"line_number":76,"context_line":"            print \u0027%s: %s\u0027 % (key.upper(), value)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    if ring is not None:"},{"line_number":79,"context_line":"        print \u0027Ring locations:\u0027"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAWH%2F%2B4D4%3D","line":76,"updated":"2014-03-22 05:28:43.000000000","message":"I think this is ok, if you\u0027re not running container-sync it\u0027s just noise.  If you are running container sync and they\u0027re not present you know to keep digging.","commit_id":"14c9b6bf731d613dcdf7654e71cc28bb1afb9813"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6c930f993d81ec18c339670244353d1fb01fdbd8","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        for node in nodes:"},{"line_number":82,"context_line":"            print (\u0027  %s:%s - /srv/node/%s/containers/%s/%s/%s/%s.db\u0027 %"},{"line_number":83,"context_line":"                   (node[\u0027ip\u0027], node[\u0027port\u0027], node[\u0027device\u0027], part,"},{"line_number":84,"context_line":"                    container_hash[-3:], container_hash, container_hash))"},{"line_number":85,"context_line":"    print"},{"line_number":86,"context_line":"    print \u0027note: /srv/node is used as default value of `devices`, the real \u0027\\"},{"line_number":87,"context_line":"          \u0027value is set in container-server.conf on each storage node.\u0027"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAWH%2F%2B4D0%3D","line":84,"updated":"2014-03-22 05:28:43.000000000","message":"is there not a utility method that can calculate this path for you somewhere?  maybe common.utils.storage_directory?","commit_id":"14c9b6bf731d613dcdf7654e71cc28bb1afb9813"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"f57b1f5574459d02a5fdb8dcaff95393281a0019","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    container_hash \u003d hash_path(account, container)"},{"line_number":41,"context_line":"    print \u0027  Account: %s\u0027 % info[\u0027account\u0027]"},{"line_number":42,"context_line":"    print \u0027  Container: %s\u0027 % info[\u0027container\u0027]"},{"line_number":43,"context_line":"    print \u0027  Container_hash: %s\u0027 % container_hash"},{"line_number":44,"context_line":"    print (\u0027  Created at: %s (%s)\u0027 %"},{"line_number":45,"context_line":"           (datetime.fromtimestamp(float(info[\u0027created_at\u0027])),"},{"line_number":46,"context_line":"            info[\u0027created_at\u0027]))"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAWH%2F%2BuLM%3D","line":43,"updated":"2014-03-26 02:12:55.000000000","message":"\"Container Hash\" would better match output from swift-object-info","commit_id":"6b441fabd971a39f86223770faed74bc1bdb0bf1"}],"doc/manpages/swift-container-info.1":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6c930f993d81ec18c339670244353d1fb01fdbd8","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    "},{"line_number":58,"context_line":".SH DOCUMENTATION"},{"line_number":59,"context_line":".LP"},{"line_number":60,"context_line":"More documentation about Openstack-Swift can be found at "},{"line_number":61,"context_line":".BI http://swift.openstack.org/index.html"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":".SH \"SEE ALSO\""}],"source_content_type":"text/troff","patch_set":2,"id":"AAAAWH%2F%2B4Dw%3D","line":60,"updated":"2014-03-22 05:28:43.000000000","message":"bah - trailing whitespace\n\nsed -i \u0027s/\\ *$//g\u0027 \u003cfilename\u003e\n\n^ might square you up","commit_id":"14c9b6bf731d613dcdf7654e71cc28bb1afb9813"}]}
