)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"795665a60b45812121c8d0bf2005797b3d20037c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"66517746_29ad3888","updated":"2024-07-24 07:07:04.000000000","message":"All the clis seemed to all work. Tested the ones that are easy to test. swift-account-audit did some auditing, so that\u0027s something 😋","commit_id":"c3e1d91d1f3c03670fb051ad04df70a3de478266"}],"bin/swift-account-audit":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6fb2a66c09ea9664a2abbb6fef5360d2d282014a","unresolved":true,"context_lines":[{"line_number":383,"context_line":"        path \u003d \u0027/\u0027 + path.rstrip(\u0027\\r\\n\u0027).lstrip(\u0027/\u0027)"},{"line_number":384,"context_line":"        auditor.audit(*split_path(path, 1, 3, True))"},{"line_number":385,"context_line":"    auditor.wait()"},{"line_number":386,"context_line":"    auditor.print_stats()"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"d06d68c8_340ed975","side":"PARENT","line":386,"updated":"2024-07-24 06:53:29.000000000","message":"Yup from what I can see this is a good move to the new swift/cli/account_audit.py script with and then wrapping the if __main__ above into a main func","commit_id":"2c5dc64d2562030ba4976b1c88462e1ebf8717c4"}],"bin/swift-config":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6fb2a66c09ea9664a2abbb6fef5360d2d282014a","unresolved":true,"context_lines":[{"line_number":85,"context_line":"        for k, v in flat_vars.items():"},{"line_number":86,"context_line":"            print(\u0027# %s \u003d %s\u0027 % (k, v))"},{"line_number":87,"context_line":"        print()"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"if __name__ \u003d\u003d \"__main__\":"},{"line_number":91,"context_line":"    sys.exit(main())"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"48d63bbf_f5cdeb2f","side":"PARENT","line":88,"updated":"2024-07-24 06:53:29.000000000","message":"Yup from what I can see this is a good move to the new swift/cli/config.py script","commit_id":"2c5dc64d2562030ba4976b1c88462e1ebf8717c4"}],"bin/swift-drive-audit":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6fb2a66c09ea9664a2abbb6fef5360d2d282014a","unresolved":true,"context_lines":[{"line_number":261,"context_line":"        logger.info(\"No drives were unmounted\")"},{"line_number":262,"context_line":"    elif os.path.isdir(\"/run/systemd/system\"):"},{"line_number":263,"context_line":"        logger.debug(\"fstab updated, calling systemctl daemon-reload\")"},{"line_number":264,"context_line":"        subprocess.call([\"/usr/bin/systemctl\", \"daemon-reload\"])"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"710bd17f_35276fb6","side":"PARENT","line":264,"updated":"2024-07-24 06:53:29.000000000","message":"Yup from what I can see this is a good move to the new swift/cli/drive_audit.py script with and then wrapping the if __main__ above into a main func","commit_id":"2c5dc64d2562030ba4976b1c88462e1ebf8717c4"}],"bin/swift-get-nodes":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6fb2a66c09ea9664a2abbb6fef5360d2d282014a","unresolved":true,"context_lines":[{"line_number":73,"context_line":"    try:"},{"line_number":74,"context_line":"        print_item_locations(ring, ring_name, *args, **vars(options))"},{"line_number":75,"context_line":"    except InfoSystemExit:"},{"line_number":76,"context_line":"        sys.exit(1)"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"5831766f_6d0705a1","side":"PARENT","line":76,"updated":"2024-07-24 06:53:29.000000000","message":"Yup from what I can see this is a good move to the new swift/cli/get_nodes.py script with and then wrapping the if __main__ above into a main func","commit_id":"2c5dc64d2562030ba4976b1c88462e1ebf8717c4"}],"bin/swift-oldies":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6fb2a66c09ea9664a2abbb6fef5360d2d282014a","unresolved":true,"context_lines":[{"line_number":12,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":13,"context_line":"# limitations under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from __future__ import print_function"},{"line_number":16,"context_line":"import optparse"},{"line_number":17,"context_line":"import subprocess"},{"line_number":18,"context_line":"import sys"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"97e273d8_292ec594","side":"PARENT","line":15,"updated":"2024-07-24 06:53:29.000000000","message":"This wasn\u0027t moved.. but also good riddence 😊\n\nAlthough you did inlude it in cli/orphans.py","commit_id":"2c5dc64d2562030ba4976b1c88462e1ebf8717c4"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6ae4b98a5d73b5d75e17ceccb76efd397affaba2","unresolved":true,"context_lines":[{"line_number":12,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":13,"context_line":"# limitations under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from __future__ import print_function"},{"line_number":16,"context_line":"import optparse"},{"line_number":17,"context_line":"import subprocess"},{"line_number":18,"context_line":"import sys"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"87df3aa8_552ce22f","side":"PARENT","line":15,"in_reply_to":"97e273d8_292ec594","updated":"2024-07-24 16:58:41.000000000","message":"All the prints end up taking a single arg, so it wasn\u0027t necessary.","commit_id":"2c5dc64d2562030ba4976b1c88462e1ebf8717c4"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6fb2a66c09ea9664a2abbb6fef5360d2d282014a","unresolved":true,"context_lines":[{"line_number":87,"context_line":"        print(\u0027%*s %*s %s\u0027 % (hours_len, \u0027Hours\u0027, pid_len, \u0027PID\u0027, \u0027Command\u0027))"},{"line_number":88,"context_line":"        for hours, pid, args in listing:"},{"line_number":89,"context_line":"            print(\u0027%*s %*s %s\u0027 % (hours_len, hours, pid_len,"},{"line_number":90,"context_line":"                                  pid, args[:args_len]))"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"e7d79cf5_00881c08","side":"PARENT","line":90,"updated":"2024-07-24 06:53:29.000000000","message":"Yup from what I can see this is a good move to the new swift/cli/oldies.py script with and then wrapping the if __main__ above into a main func","commit_id":"2c5dc64d2562030ba4976b1c88462e1ebf8717c4"}],"bin/swift-orphans":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6fb2a66c09ea9664a2abbb6fef5360d2d282014a","unresolved":true,"context_lines":[{"line_number":129,"context_line":"              end\u003d\u0027\u0027)"},{"line_number":130,"context_line":"        for hours, pid, args in listing:"},{"line_number":131,"context_line":"            os.kill(int(pid), signum)"},{"line_number":132,"context_line":"        print(\u0027Done.\u0027)"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"1c9782ac_3939bf80","side":"PARENT","line":132,"updated":"2024-07-24 06:53:29.000000000","message":"Yup from what I can see this is a good move to the new swift/cli/orphans.py script with and then wrapping the if __main__ above into a main func","commit_id":"2c5dc64d2562030ba4976b1c88462e1ebf8717c4"}],"bin/swift-reconciler-enqueue":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6fb2a66c09ea9664a2abbb6fef5360d2d282014a","unresolved":true,"context_lines":[{"line_number":11,"context_line":"# implied."},{"line_number":12,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":13,"context_line":"# limitations under the License."},{"line_number":14,"context_line":"from __future__ import print_function"},{"line_number":15,"context_line":"import sys"},{"line_number":16,"context_line":"from optparse import OptionParser"},{"line_number":17,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":3,"id":"fce104cb_2c3505e4","side":"PARENT","line":14,"updated":"2024-07-24 06:53:29.000000000","message":"This time its removed.. so maybe we just need to remove it from orphans.","commit_id":"2c5dc64d2562030ba4976b1c88462e1ebf8717c4"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6ae4b98a5d73b5d75e17ceccb76efd397affaba2","unresolved":true,"context_lines":[{"line_number":11,"context_line":"# implied."},{"line_number":12,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":13,"context_line":"# limitations under the License."},{"line_number":14,"context_line":"from __future__ import print_function"},{"line_number":15,"context_line":"import sys"},{"line_number":16,"context_line":"from optparse import OptionParser"},{"line_number":17,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":3,"id":"25923aea_3020b69f","side":"PARENT","line":14,"in_reply_to":"fce104cb_2c3505e4","updated":"2024-07-24 16:58:41.000000000","message":"Only print is `print(container_name)` which on py2 is exactly equivalent to `print (container_name)` which is exactly equivalent to `print container_name`","commit_id":"2c5dc64d2562030ba4976b1c88462e1ebf8717c4"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6fb2a66c09ea9664a2abbb6fef5360d2d282014a","unresolved":true,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"if __name__ \u003d\u003d \"__main__\":"},{"line_number":75,"context_line":"    sys.exit(main())"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"43e25984_ab3ad084","side":"PARENT","line":75,"updated":"2024-07-24 06:53:29.000000000","message":"Yup from what I can see this is a good move to the new swift/cli/reconciler_enqueue.py script with and then wrapping the if __main__ above into a main func","commit_id":"2c5dc64d2562030ba4976b1c88462e1ebf8717c4"}],"swift/cli/account_audit.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6fb2a66c09ea9664a2abbb6fef5360d2d282014a","unresolved":true,"context_lines":[{"line_number":175,"context_line":"                                        node[\u0027device\u0027], part, \u0027GET\u0027,"},{"line_number":176,"context_line":"                                        path.encode(\u0027utf-8\u0027), {},"},{"line_number":177,"context_line":"                                        \u0027format\u003djson\u0026marker\u003d%s\u0027 %"},{"line_number":178,"context_line":"                                        quote(marker.encode(\u0027utf-8\u0027)))"},{"line_number":179,"context_line":"                    resp \u003d conn.getresponse()"},{"line_number":180,"context_line":"                    if resp.status // 100 !\u003d 2:"},{"line_number":181,"context_line":"                        self.container_not_found +\u003d 1"}],"source_content_type":"text/x-python","patch_set":3,"id":"e92a4872_08ed2403","line":178,"updated":"2024-07-24 06:53:29.000000000","message":"Hrm.. this probably isn\u0027t going to work with sharding. Maybe we need to add a bug about this, so we can fix it at somepoint (maybe I should while I\u0027m trying to fix the reaper for the same reason).","commit_id":"c3e1d91d1f3c03670fb051ad04df70a3de478266"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6ae4b98a5d73b5d75e17ceccb76efd397affaba2","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                                        node[\u0027device\u0027], part, \u0027GET\u0027,"},{"line_number":176,"context_line":"                                        path.encode(\u0027utf-8\u0027), {},"},{"line_number":177,"context_line":"                                        \u0027format\u003djson\u0026marker\u003d%s\u0027 %"},{"line_number":178,"context_line":"                                        quote(marker.encode(\u0027utf-8\u0027)))"},{"line_number":179,"context_line":"                    resp \u003d conn.getresponse()"},{"line_number":180,"context_line":"                    if resp.status // 100 !\u003d 2:"},{"line_number":181,"context_line":"                        self.container_not_found +\u003d 1"}],"source_content_type":"text/x-python","patch_set":3,"id":"740b98f2_329b7a04","line":178,"in_reply_to":"e92a4872_08ed2403","updated":"2024-07-24 16:58:41.000000000","message":"Wrote up https://bugs.launchpad.net/swift/+bug/2074005","commit_id":"c3e1d91d1f3c03670fb051ad04df70a3de478266"}],"swift/cli/orphans.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6fb2a66c09ea9664a2abbb6fef5360d2d282014a","unresolved":true,"context_lines":[{"line_number":12,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":13,"context_line":"# limitations under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from __future__ import print_function"},{"line_number":16,"context_line":"import optparse"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import re"}],"source_content_type":"text/x-python","patch_set":3,"id":"2829ee2a_c68acf01","line":15,"updated":"2024-07-24 06:53:29.000000000","message":"Oh you did include in this one? You\u0027ve removed it from the others, so maybe we should remove it here too?","commit_id":"c3e1d91d1f3c03670fb051ad04df70a3de478266"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6ae4b98a5d73b5d75e17ceccb76efd397affaba2","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":13,"context_line":"# limitations under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from __future__ import print_function"},{"line_number":16,"context_line":"import optparse"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import re"}],"source_content_type":"text/x-python","patch_set":3,"id":"84bf796b_0da1bec8","line":15,"in_reply_to":"2829ee2a_c68acf01","updated":"2024-07-24 16:58:41.000000000","message":"No can do -- see below.","commit_id":"c3e1d91d1f3c03670fb051ad04df70a3de478266"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6ae4b98a5d73b5d75e17ceccb76efd397affaba2","unresolved":true,"context_lines":[{"line_number":127,"context_line":"            sys.exit(\u0027Could not translate %r to a signal number.\u0027 %"},{"line_number":128,"context_line":"                     options.signal)"},{"line_number":129,"context_line":"        print(\u0027Sending processes %s (%d) signal...\u0027 % (options.signal, signum),"},{"line_number":130,"context_line":"              end\u003d\u0027\u0027)"},{"line_number":131,"context_line":"        for hours, pid, args in listing:"},{"line_number":132,"context_line":"            os.kill(int(pid), signum)"},{"line_number":133,"context_line":"        print(\u0027Done.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"415416ad_22415232","line":130,"range":{"start_line":130,"start_character":14,"end_line":130,"end_character":20},"updated":"2024-07-24 16:58:41.000000000","message":"This one is why we need the `from __future__ import print_function`","commit_id":"c3e1d91d1f3c03670fb051ad04df70a3de478266"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"fd9cd4c76ce76a382e079a82708967a5f3b50963","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            sys.exit(\u0027Could not translate %r to a signal number.\u0027 %"},{"line_number":128,"context_line":"                     options.signal)"},{"line_number":129,"context_line":"        print(\u0027Sending processes %s (%d) signal...\u0027 % (options.signal, signum),"},{"line_number":130,"context_line":"              end\u003d\u0027\u0027)"},{"line_number":131,"context_line":"        for hours, pid, args in listing:"},{"line_number":132,"context_line":"            os.kill(int(pid), signum)"},{"line_number":133,"context_line":"        print(\u0027Done.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"2bbdf08f_d8e7f703","line":130,"range":{"start_line":130,"start_character":14,"end_line":130,"end_character":20},"in_reply_to":"415416ad_22415232","updated":"2024-07-25 02:35:48.000000000","message":"Acknowledged","commit_id":"c3e1d91d1f3c03670fb051ad04df70a3de478266"}]}
