)]}'
{"novaclient/tests/unit/v2/test_shell.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b5aaded8e4c1ea259b3aa7f7308e4a104cff235e","unresolved":false,"context_lines":[{"line_number":3321,"context_line":"        self.assertEqual(cs.api_version, cs.api_version)"},{"line_number":3322,"context_line":""},{"line_number":3323,"context_line":""},{"line_number":3324,"context_line":"class ShellUtilTest(utils.TestCase):"},{"line_number":3325,"context_line":"    def test_deprecated_image_newer(self):"},{"line_number":3326,"context_line":"        @novaclient.v2.shell.deprecated_image"},{"line_number":3327,"context_line":"        def tester(cs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a629dbe_45569206","line":3324,"updated":"2016-11-11 16:09:48.000000000","message":"So I believe doing this has just stopped us running all the network tests.\n\nCan\u0027t these test methods not just be part of the above test class?","commit_id":"3c6b271db068f5ef538a03391b45732032058c88"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"0471efed3fa362d14a8c87d4cd4ccd8ddab4651b","unresolved":false,"context_lines":[{"line_number":3321,"context_line":"        self.assertEqual(cs.api_version, cs.api_version)"},{"line_number":3322,"context_line":""},{"line_number":3323,"context_line":""},{"line_number":3324,"context_line":"class ShellUtilTest(utils.TestCase):"},{"line_number":3325,"context_line":"    def test_deprecated_image_newer(self):"},{"line_number":3326,"context_line":"        @novaclient.v2.shell.deprecated_image"},{"line_number":3327,"context_line":"        def tester(cs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a629dbe_8070980c","line":3324,"in_reply_to":"9a629dbe_45569206","updated":"2016-11-11 16:45:20.000000000","message":"right, this is typo, need create another name, thx","commit_id":"3c6b271db068f5ef538a03391b45732032058c88"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"1ea87fb21e3543a75dba7739f97f37fcbf685a63","unresolved":false,"context_lines":[{"line_number":3285,"context_line":"                          silent\u003dFalse)"},{"line_number":3286,"context_line":""},{"line_number":3287,"context_line":""},{"line_number":3288,"context_line":"class ShelliNetworkUtilTest(utils.TestCase):"},{"line_number":3289,"context_line":"    def test_deprecated_network_newer(self):"},{"line_number":3290,"context_line":"        @novaclient.v2.shell.deprecated_network"},{"line_number":3291,"context_line":"        def tester(cs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_cbe8ab7f","line":3288,"range":{"start_line":3288,"start_character":6,"end_line":3288,"end_character":12},"updated":"2016-11-15 16:28:34.000000000","message":"Good renaming, I suppose, except for the added \u0027i\u0027 :)  (attonit)","commit_id":"cee1672f625035054cb7721afed6f45cfb7e0237"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"af7c988e3365099688a9baf6a7ede4541fa073f4","unresolved":false,"context_lines":[{"line_number":3285,"context_line":"                          silent\u003dFalse)"},{"line_number":3286,"context_line":""},{"line_number":3287,"context_line":""},{"line_number":3288,"context_line":"class ShelliNetworkUtilTest(utils.TestCase):"},{"line_number":3289,"context_line":"    def test_deprecated_network_newer(self):"},{"line_number":3290,"context_line":"        @novaclient.v2.shell.deprecated_network"},{"line_number":3291,"context_line":"        def tester(cs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_57d99c20","line":3288,"range":{"start_line":3288,"start_character":6,"end_line":3288,"end_character":12},"in_reply_to":"7a77a97e_cbe8ab7f","updated":"2016-11-15 17:42:49.000000000","message":"this is evil vi .... I must use \u0027i\u0027 to start input\n\nwill update it","commit_id":"cee1672f625035054cb7721afed6f45cfb7e0237"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"0d2aedb874e51ff48a3bb2273853757d0114422b","unresolved":false,"context_lines":[{"line_number":3285,"context_line":"                          silent\u003dFalse)"},{"line_number":3286,"context_line":""},{"line_number":3287,"context_line":""},{"line_number":3288,"context_line":"class ShellNetworkUtilTest(utils.TestCase):"},{"line_number":3289,"context_line":"    def test_deprecated_network_newer(self):"},{"line_number":3290,"context_line":"        @novaclient.v2.shell.deprecated_network"},{"line_number":3291,"context_line":"        def tester(cs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a77a97e_e9d29aff","line":3288,"updated":"2016-11-16 15:49:40.000000000","message":"Heh, figures :)","commit_id":"b6f63f953e5b89fa1bcaa724ae25c4a90576e2b3"}],"novaclient/v2/shell.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"d21da0cffb316a60ef70eacbcc018521b5dc9f34","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    return wrapped"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"def deprecated_image(fn):"},{"line_number":102,"context_line":"    @functools.wraps(fn)"},{"line_number":103,"context_line":"    def wrapped(cs, *args, **kwargs):"},{"line_number":104,"context_line":"        command_name \u003d \u0027-\u0027.join(fn.__name__.split(\u0027_\u0027)[1:])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_97b15792","line":101,"updated":"2016-11-08 16:25:44.000000000","message":"Does deprecated_network() have some tests?  If so, we should probably add similar tests for deprecated_image().  Additionally, consider some refactoring to generate a common @deprecated_command() decorator that would allow specifying the want_version and the warning message; that would reduce code duplication and possibly make this type of deprecation easier in the future.  (If you do that, I\u0027d suggest putting the implementation near DeprecatedAction in novaclient/shell.py)","commit_id":"3d96a682853d12b9af527c25bf90912900f4fd9e"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"973cd2df8f517e1e37029c64791f3b334eb9c5ab","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    return wrapped"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"def deprecated_image(fn):"},{"line_number":102,"context_line":"    @functools.wraps(fn)"},{"line_number":103,"context_line":"    def wrapped(cs, *args, **kwargs):"},{"line_number":104,"context_line":"        command_name \u003d \u0027-\u0027.join(fn.__name__.split(\u0027_\u0027)[1:])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_300bfe8f","line":101,"in_reply_to":"9a629dbe_97b15792","updated":"2016-11-09 16:29:41.000000000","message":"I would think we will remove those in the near future (actually only Newton version has this issue) so I guess keep it is is fine? I will add some test cases","commit_id":"3d96a682853d12b9af527c25bf90912900f4fd9e"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"d21da0cffb316a60ef70eacbcc018521b5dc9f34","unresolved":false,"context_lines":[{"line_number":1354,"context_line":"           \u0027delete).\u0027))"},{"line_number":1355,"context_line":"@deprecated_image"},{"line_number":1356,"context_line":"def do_image_meta(cs, args):"},{"line_number":1357,"context_line":"    \"\"\"DEPRECATED: Set or delete metadata on an image.\"\"\""},{"line_number":1358,"context_line":"    image \u003d _find_image(cs, args.image)"},{"line_number":1359,"context_line":"    metadata \u003d _extract_metadata(args)"},{"line_number":1360,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_d74f4fbb","line":1357,"updated":"2016-11-08 16:25:44.000000000","message":"Attonit: With the decorator defined the way it is, this docstring will appear as \"DEPRECATED: DEPRECATED: Set or delete metadata on an image.\"","commit_id":"3d96a682853d12b9af527c25bf90912900f4fd9e"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"973cd2df8f517e1e37029c64791f3b334eb9c5ab","unresolved":false,"context_lines":[{"line_number":1354,"context_line":"           \u0027delete).\u0027))"},{"line_number":1355,"context_line":"@deprecated_image"},{"line_number":1356,"context_line":"def do_image_meta(cs, args):"},{"line_number":1357,"context_line":"    \"\"\"DEPRECATED: Set or delete metadata on an image.\"\"\""},{"line_number":1358,"context_line":"    image \u003d _find_image(cs, args.image)"},{"line_number":1359,"context_line":"    metadata \u003d _extract_metadata(args)"},{"line_number":1360,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_b0254e0a","line":1357,"in_reply_to":"9a629dbe_d74f4fbb","updated":"2016-11-09 16:29:41.000000000","message":"ok, will upate it","commit_id":"3d96a682853d12b9af527c25bf90912900f4fd9e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b5aaded8e4c1ea259b3aa7f7308e4a104cff235e","unresolved":false,"context_lines":[{"line_number":108,"context_line":"              file\u003dsys.stderr)"},{"line_number":109,"context_line":"        # The image proxy API methods were deprecated in 2.36 and will return"},{"line_number":110,"context_line":"        # a 404 so we fallback to 2.35 to maintain a transition for CLI users."},{"line_number":111,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":112,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":113,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":114,"context_line":"            cs.api_version \u003d want_version"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a629dbe_a5384ed4","line":111,"updated":"2016-11-11 16:09:48.000000000","message":"Nit: its a shame this is a cut and paste of the above logic, with only the help text changed? Can\u0027t we shared more code here?","commit_id":"3c6b271db068f5ef538a03391b45732032058c88"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"0471efed3fa362d14a8c87d4cd4ccd8ddab4651b","unresolved":false,"context_lines":[{"line_number":108,"context_line":"              file\u003dsys.stderr)"},{"line_number":109,"context_line":"        # The image proxy API methods were deprecated in 2.36 and will return"},{"line_number":110,"context_line":"        # a 404 so we fallback to 2.35 to maintain a transition for CLI users."},{"line_number":111,"context_line":"        want_version \u003d api_versions.APIVersion(\u00272.35\u0027)"},{"line_number":112,"context_line":"        cur_version \u003d cs.api_version"},{"line_number":113,"context_line":"        if cs.api_version \u003e want_version:"},{"line_number":114,"context_line":"            cs.api_version \u003d want_version"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a629dbe_60eaa475","line":111,"in_reply_to":"9a629dbe_a5384ed4","updated":"2016-11-11 16:45:20.000000000","message":"Kevin also mentioned this at last patch, I will see whether I can make some changes","commit_id":"3c6b271db068f5ef538a03391b45732032058c88"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f0d3942224ca987d35812fc12085e0edf794b58f","unresolved":false,"context_lines":[{"line_number":1307,"context_line":"    dest\u003d\"limit\","},{"line_number":1308,"context_line":"    metavar\u003d\"\u003climit\u003e\","},{"line_number":1309,"context_line":"    help\u003d_(\u0027Number of images to return per request.\u0027))"},{"line_number":1310,"context_line":"def do_image_list(cs, _args):"},{"line_number":1311,"context_line":"    \"\"\"DEPRECATED: Print a list of available images to boot from.\"\"\""},{"line_number":1312,"context_line":"    emit_image_deprecation_warning(\u0027image-list\u0027)"},{"line_number":1313,"context_line":"    limit \u003d _args.limit"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_3dcb0aa7","line":1310,"updated":"2016-12-13 21:52:14.000000000","message":"What about this?","commit_id":"b6f63f953e5b89fa1bcaa724ae25c4a90576e2b3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0dabefa82bd2c90ea1f52342f8a227883340bb39","unresolved":false,"context_lines":[{"line_number":1307,"context_line":"    dest\u003d\"limit\","},{"line_number":1308,"context_line":"    metavar\u003d\"\u003climit\u003e\","},{"line_number":1309,"context_line":"    help\u003d_(\u0027Number of images to return per request.\u0027))"},{"line_number":1310,"context_line":"def do_image_list(cs, _args):"},{"line_number":1311,"context_line":"    \"\"\"DEPRECATED: Print a list of available images to boot from.\"\"\""},{"line_number":1312,"context_line":"    emit_image_deprecation_warning(\u0027image-list\u0027)"},{"line_number":1313,"context_line":"    limit \u003d _args.limit"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_180b207e","line":1310,"in_reply_to":"1a6eadb0_3dcb0aa7","updated":"2016-12-16 16:37:38.000000000","message":"https://bugs.launchpad.net/python-novaclient/+bug/1650617","commit_id":"b6f63f953e5b89fa1bcaa724ae25c4a90576e2b3"}]}
