)]}'
{"openstackclient/image/v2/image.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3f58c5df8ba98a2d5570e2fd7a2b64055182736e","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from osc_lib import exceptions"},{"line_number":25,"context_line":"from osc_lib import utils"},{"line_number":26,"context_line":"import six"},{"line_number":27,"context_line":"from base64 import b64encode"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from openstackclient.api import utils as api_utils"},{"line_number":30,"context_line":"from openstackclient.i18n import _"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_9b3b38e9","line":27,"updated":"2018-06-28 14:00:17.000000000","message":"move this up to line 18 with the other standard libs","commit_id":"dcb7c1f22176517e71bdf096b355245ed6f8301d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3f58c5df8ba98a2d5570e2fd7a2b64055182736e","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from openstackclient.api import utils as api_utils"},{"line_number":30,"context_line":"from openstackclient.i18n import _"},{"line_number":31,"context_line":"from openstackclient.identity import common"},{"line_number":32,"context_line":"from cursive.image_signer import ImageSigner"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"CONTAINER_CHOICES \u003d [\"ami\", \"ari\", \"aki\", \"bare\", \"docker\", \"ova\", \"ovf\"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_3b5b0456","line":32,"updated":"2018-06-28 14:00:17.000000000","message":"group this import with the other 3rd party imports please, also we generally import the module, not the individual classes","commit_id":"dcb7c1f22176517e71bdf096b355245ed6f8301d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3f58c5df8ba98a2d5570e2fd7a2b64055182736e","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            help\u003d_(\"Force image creation if volume is in use \""},{"line_number":186,"context_line":"                   \"(only meaningful with --volume)\"),"},{"line_number":187,"context_line":"        )"},{"line_number":188,"context_line":"        parser.add_argument("},{"line_number":189,"context_line":"            \u0027--sign\u0027,"},{"line_number":190,"context_line":"            metavar\u003d\"\u003ckey-path\u003dkey-path,cert-id\u003dcert-uuid\u003e\","},{"line_number":191,"context_line":"            action\u003d\u0027append\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_5baa801a","line":188,"updated":"2018-06-28 14:00:17.000000000","message":"why not use two arguments here?\n\n  image create --key-path \u003ckeypath\u003e --cert-id \u003ccert\u003e","commit_id":"dcb7c1f22176517e71bdf096b355245ed6f8301d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"47ccb625f5db13f232ba57a5aa13c7049f8673b8","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            help\u003d_(\"Force image creation if volume is in use \""},{"line_number":186,"context_line":"                   \"(only meaningful with --volume)\"),"},{"line_number":187,"context_line":"        )"},{"line_number":188,"context_line":"        parser.add_argument("},{"line_number":189,"context_line":"            \u0027--sign\u0027,"},{"line_number":190,"context_line":"            metavar\u003d\"\u003ckey-path\u003dkey-path,cert-id\u003dcert-uuid\u003e\","},{"line_number":191,"context_line":"            action\u003d\u0027append\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_45e931e1","line":188,"in_reply_to":"5f7c97a3_5baa801a","updated":"2018-06-28 20:46:57.000000000","message":"agreed, the list of options argument to an option (say that 3 times fast!) format is something we really don\u0027t like to use, it\u0027s in the network commands a lot but I don\u0027t want to see it proliferate.  This is simple to do as two options.","commit_id":"dcb7c1f22176517e71bdf096b355245ed6f8301d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"47ccb625f5db13f232ba57a5aa13c7049f8673b8","unresolved":false,"context_lines":[{"line_number":359,"context_line":"                        msg \u003d (_(\"Invalid Sign argument \u0027%s\u0027. sign arguments \""},{"line_number":360,"context_line":"                                 \"must be of the form --sign \u003ckey-path\u003dkey-\""},{"line_number":361,"context_line":"                                 \"path,cert-id\u003dcert-uuid\u003e.\"))"},{"line_number":362,"context_line":"                        raise exceptions.CommandError(msg % k)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"            signer \u003d ImageSigner()"},{"line_number":365,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_650ead34","line":362,"updated":"2018-06-28 20:46:57.000000000","message":"Using two options eliminates all of this, if we do end up with it there is an argparse action that should be re-used rather than hand-parsing it","commit_id":"dcb7c1f22176517e71bdf096b355245ed6f8301d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"47ccb625f5db13f232ba57a5aa13c7049f8673b8","unresolved":false,"context_lines":[{"line_number":361,"context_line":"                                 \"path,cert-id\u003dcert-uuid\u003e.\"))"},{"line_number":362,"context_line":"                        raise exceptions.CommandError(msg % k)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"            signer \u003d ImageSigner()"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"            if not sign_info[\u0027key-path\u0027]:"},{"line_number":367,"context_line":"                msg \u003d (_(\"When using --sign the \u0027key-path\u0027 must be \""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_a53cc592","line":364,"updated":"2018-06-28 20:46:57.000000000","message":"I don\u0027tknow how long this takes to set up but moving it below the argument checks and password would save that time in the case of failures.\n\nIt is more about keeping to a particular pattern than the specifics of this object initialization","commit_id":"dcb7c1f22176517e71bdf096b355245ed6f8301d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"47ccb625f5db13f232ba57a5aa13c7049f8673b8","unresolved":false,"context_lines":[{"line_number":392,"context_line":"            else:"},{"line_number":393,"context_line":"                cert_id \u003d sign_info[\u0027cert-id\u0027]"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"            signature \u003d signer.generate_signature(fp)"},{"line_number":396,"context_line":"            signature_b64 \u003d b64encode(signature)"},{"line_number":397,"context_line":"            kwargs[\u0027img_signature\u0027] \u003d signature_b64"},{"line_number":398,"context_line":"            kwargs[\u0027img_signature_certificate_uuid\u0027] \u003d cert_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_85f189e1","line":395,"updated":"2018-06-28 20:46:57.000000000","message":"Does this work when fp is stdin?","commit_id":"dcb7c1f22176517e71bdf096b355245ed6f8301d"}],"requirements.txt":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3f58c5df8ba98a2d5570e2fd7a2b64055182736e","unresolved":false,"context_lines":[{"line_number":15,"context_line":"python-keystoneclient\u003e\u003d3.15.0 # Apache-2.0"},{"line_number":16,"context_line":"python-novaclient\u003e\u003d9.1.0 # Apache-2.0"},{"line_number":17,"context_line":"python-cinderclient\u003e\u003d3.3.0 # Apache-2.0"},{"line_number":18,"context_line":"cursive"}],"source_content_type":"text/plain","patch_set":1,"id":"5f7c97a3_db1a107b","line":18,"updated":"2018-06-28 14:00:17.000000000","message":"needs a lower bound","commit_id":"dcb7c1f22176517e71bdf096b355245ed6f8301d"}]}
