)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8e550ab651503b5ca2f51c5a83d0c60aaa9522a1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Pranali Deore \u003cpdeore@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-03-13 06:15:08 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add \u0027web-download\u0027 import method support at clientside"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change adds \u0027web-download\u0027 image import support in"},{"line_number":10,"context_line":"glanceclient."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I0e1d18844f64723608288de473e97710798eb602"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"df7087c5_2106091f","line":10,"range":{"start_line":7,"start_character":0,"end_line":10,"end_character":13},"updated":"2018-03-13 09:18:51.000000000","message":"Add support for web-download import method\n\nThis change adds support for \u0027web-download\u0027 import method\nto \u0027image-import\u0027 and \u0027create-image-via-import\u0027 call. To\nuse this \u0027web-download\u0027 import method, user needs to pass\n--uri option \u0027a valid uri to external image to import in glance\u0027 to \u0027image-import\u0027 and \u0027create-image-via-import\u0027 calls.","commit_id":"62639a1047f7ce763fb71822736939a72a592d8a"}],"glanceclient/tests/unit/v2/test_images.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8e550ab651503b5ca2f51c5a83d0c60aaa9522a1","unresolved":false,"context_lines":[{"line_number":873,"context_line":"    def test_image_import(self):"},{"line_number":874,"context_line":"        uri \u003d \u0027http://cloud.foo/image.qcow2\u0027"},{"line_number":875,"context_line":"        data \u003d [(\u0027method\u0027, {\u0027name\u0027: \u0027web-download\u0027,"},{"line_number":876,"context_line":"                 \u0027uri\u0027: \u0027http://cloud.foo/image.qcow2\u0027})]"},{"line_number":877,"context_line":"        image_id \u003d \u0027606b0e88-7c5a-4d54-b5bb-046105d4de6f\u0027"},{"line_number":878,"context_line":"        self.controller.image_import(image_id, \u0027web-download\u0027, uri)"},{"line_number":879,"context_line":"        expect \u003d [(\u0027POST\u0027, \u0027/v2/images/%s/import\u0027 % image_id, {},"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_c16dcdcc","line":876,"range":{"start_line":876,"start_character":24,"end_line":876,"end_character":54},"updated":"2018-03-13 09:18:51.000000000","message":"you can use \u0027uri\u0027 (defined at line #874) here instead.","commit_id":"62639a1047f7ce763fb71822736939a72a592d8a"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"cb7ff125e0655eb47496a654bf4ad09fe00bcd28","unresolved":false,"context_lines":[{"line_number":871,"context_line":"        self.assertEqual(\u0027CCC\u0027, body)"},{"line_number":872,"context_line":""},{"line_number":873,"context_line":"    def test_image_import(self):"},{"line_number":874,"context_line":"        uri \u003d \u0027http://cloud.foo/image.qcow2\u0027"},{"line_number":875,"context_line":"        data \u003d [(\u0027method\u0027, {\u0027name\u0027: \u0027web-download\u0027,"},{"line_number":876,"context_line":"                 \u0027uri\u0027: uri})]"},{"line_number":877,"context_line":"        image_id \u003d \u0027606b0e88-7c5a-4d54-b5bb-046105d4de6f\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"df7087c5_c8e385d8","line":874,"range":{"start_line":874,"start_character":22,"end_line":874,"end_character":31},"updated":"2018-03-14 15:36:45.000000000","message":"We should use example.com here for consistency like for the rest of our tests.","commit_id":"b41807d9aca3aa1b226c4aad1ecbedf7650ffc76"}],"glanceclient/tests/unit/v2/test_shell_v2.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8e550ab651503b5ca2f51c5a83d0c60aaa9522a1","unresolved":false,"context_lines":[{"line_number":477,"context_line":"                        \u0027id\u0027: \u0027pass\u0027, \u0027name\u0027: \u0027IMG-01\u0027, \u0027disk_format\u0027: \u0027vhd\u0027,"},{"line_number":478,"context_line":"                        \u0027container_format\u0027: \u0027bare\u0027})"},{"line_number":479,"context_line":"        finally:"},{"line_number":480,"context_line":"            try:"},{"line_number":481,"context_line":"                os.remove(f.name)"},{"line_number":482,"context_line":"            except Exception:"},{"line_number":483,"context_line":"                pass"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"    def test_do_image_update_no_user_props(self):"},{"line_number":486,"context_line":"        args \u003d self._make_args({\u0027id\u0027: \u0027pass\u0027, \u0027name\u0027: \u0027IMG-01\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_e1dfb137","line":483,"range":{"start_line":480,"start_character":11,"end_line":483,"end_character":20},"updated":"2018-03-13 09:18:51.000000000","message":"is it required, I am not sure \u0027f\u0027 used at line #481 is defined anywhere in this test case.","commit_id":"62639a1047f7ce763fb71822736939a72a592d8a"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"cb7ff125e0655eb47496a654bf4ad09fe00bcd28","unresolved":false,"context_lines":[{"line_number":451,"context_line":"        temp_args \u003d {\u0027name\u0027: \u0027IMG-01\u0027,"},{"line_number":452,"context_line":"                     \u0027disk_format\u0027: \u0027vhd\u0027,"},{"line_number":453,"context_line":"                     \u0027container_format\u0027: \u0027bare\u0027,"},{"line_number":454,"context_line":"                     \u0027uri\u0027: \u0027http://cloud.foo/image.qcow2\u0027,"},{"line_number":455,"context_line":"                     \u0027import_method\u0027: \u0027web-download\u0027,"},{"line_number":456,"context_line":"                     \u0027progress\u0027: False}"},{"line_number":457,"context_line":"        args \u003d self._make_args(temp_args)"}],"source_content_type":"text/x-python","patch_set":7,"id":"df7087c5_48c45591","line":454,"range":{"start_line":454,"start_character":36,"end_line":454,"end_character":45},"updated":"2018-03-14 15:36:45.000000000","message":"lets use \u0027example.com\u0027 here for consistency, like everywhere else in our tests.","commit_id":"b41807d9aca3aa1b226c4aad1ecbedf7650ffc76"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"cb7ff125e0655eb47496a654bf4ad09fe00bcd28","unresolved":false,"context_lines":[{"line_number":606,"context_line":""},{"line_number":607,"context_line":"    def test_image_import(self):"},{"line_number":608,"context_line":"        args \u003d self._make_args("},{"line_number":609,"context_line":"            {\u0027id\u0027: \u0027IMG-01\u0027, \u0027uri\u0027: \u0027http://cloud.foo/image.qcow2\u0027,"},{"line_number":610,"context_line":"             \u0027import_method\u0027: \u0027web-download\u0027, \u0027from_create\u0027: True})"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"        with mock.patch.object(self.gc.images, \u0027image_import\u0027) as mock_import:"}],"source_content_type":"text/x-python","patch_set":7,"id":"df7087c5_e8ff69a8","line":609,"range":{"start_line":609,"start_character":44,"end_line":609,"end_character":53},"updated":"2018-03-14 15:36:45.000000000","message":"ditto","commit_id":"b41807d9aca3aa1b226c4aad1ecbedf7650ffc76"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"cb7ff125e0655eb47496a654bf4ad09fe00bcd28","unresolved":false,"context_lines":[{"line_number":613,"context_line":"            mock_import.return_value \u003d None"},{"line_number":614,"context_line":"            test_shell.do_image_import(self.gc, args)"},{"line_number":615,"context_line":"            mock_import.assert_called_once_with("},{"line_number":616,"context_line":"                \u0027IMG-01\u0027, \u0027web-download\u0027, \u0027http://cloud.foo/image.qcow2\u0027)"},{"line_number":617,"context_line":""},{"line_number":618,"context_line":"    def test_image_download(self):"},{"line_number":619,"context_line":"        args \u003d self._make_args("}],"source_content_type":"text/x-python","patch_set":7,"id":"df7087c5_c834e595","line":616,"range":{"start_line":616,"start_character":50,"end_line":616,"end_character":59},"updated":"2018-03-14 15:36:45.000000000","message":"ditto","commit_id":"b41807d9aca3aa1b226c4aad1ecbedf7650ffc76"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6995f2d5a8615e79cc950ab1fcbf284de6fc83d4","unresolved":false,"context_lines":[{"line_number":451,"context_line":"        temp_args \u003d {\u0027name\u0027: \u0027IMG-01\u0027,"},{"line_number":452,"context_line":"                     \u0027disk_format\u0027: \u0027vhd\u0027,"},{"line_number":453,"context_line":"                     \u0027container_format\u0027: \u0027bare\u0027,"},{"line_number":454,"context_line":"                     \u0027uri\u0027: \u0027http://example.com\u0027,"},{"line_number":455,"context_line":"                     \u0027import_method\u0027: \u0027web-download\u0027,"},{"line_number":456,"context_line":"                     \u0027progress\u0027: False}"},{"line_number":457,"context_line":"        args \u003d self._make_args(temp_args)"}],"source_content_type":"text/x-python","patch_set":10,"id":"df7087c5_1a463e51","line":454,"range":{"start_line":454,"start_character":47,"end_line":454,"end_character":48},"updated":"2018-03-19 12:20:14.000000000","message":"If you do another update, it would be good to put \u0027/image.qcow2\u0027 back as part of the uri. The point Erno was making was the cloud.foo part should be example.com, not that the entire URI should only be example.com.\n\nThat said, this is test code, so it doesn\u0027t matter that much that it is not a full URI for a fake image. But looks odd not having that.","commit_id":"1404e16cc622af61efc08bd261cec39732e3e218"}],"glanceclient/v2/images.py":[{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"cb7ff125e0655eb47496a654bf4ad09fe00bcd28","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    def image_import(self, image_id, method\u003d\u0027glance-direct\u0027, uri\u003dNone):"},{"line_number":258,"context_line":"        \"\"\"Import Image via method.\"\"\""},{"line_number":259,"context_line":"        url \u003d \u0027/v2/images/%s/import\u0027 % image_id"},{"line_number":260,"context_line":"        if uri:"},{"line_number":261,"context_line":"            data \u003d {\u0027method\u0027: {\u0027name\u0027: method, \u0027uri\u0027: uri}}"},{"line_number":262,"context_line":"        else:"},{"line_number":263,"context_line":"            data \u003d {\u0027method\u0027: {\u0027name\u0027: method}}"},{"line_number":264,"context_line":"        resp, body \u003d self.http_client.post(url, data\u003ddata)"},{"line_number":265,"context_line":"        return body, resp"}],"source_content_type":"text/x-python","patch_set":7,"id":"df7087c5_a8a2d1ac","line":262,"range":{"start_line":260,"start_character":6,"end_line":262,"end_character":13},"updated":"2018-03-14 15:36:45.000000000","message":"We should not allow for example {\u0027name\u0027: \u0027glance-direct\u0027, \u0027uri\u0027: \u0027http://example.com/image\u0027}","commit_id":"b41807d9aca3aa1b226c4aad1ecbedf7650ffc76"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"d6494b1865b0b8e9004c1f4e65ad2a0caa1f608f","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    def image_import(self, image_id, method\u003d\u0027glance-direct\u0027, uri\u003dNone):"},{"line_number":258,"context_line":"        \"\"\"Import Image via method.\"\"\""},{"line_number":259,"context_line":"        url \u003d \u0027/v2/images/%s/import\u0027 % image_id"},{"line_number":260,"context_line":"        if uri:"},{"line_number":261,"context_line":"            data \u003d {\u0027method\u0027: {\u0027name\u0027: method, \u0027uri\u0027: uri}}"},{"line_number":262,"context_line":"        else:"},{"line_number":263,"context_line":"            data \u003d {\u0027method\u0027: {\u0027name\u0027: method}}"},{"line_number":264,"context_line":"        resp, body \u003d self.http_client.post(url, data\u003ddata)"},{"line_number":265,"context_line":"        return body, resp"}],"source_content_type":"text/x-python","patch_set":9,"id":"df7087c5_30390cf1","line":262,"range":{"start_line":260,"start_character":0,"end_line":262,"end_character":13},"updated":"2018-03-16 13:59:54.000000000","message":"my comment on PS7 is still valid. We should ensure that no uri is included if method name is \u0027glance-direct\u0027","commit_id":"0a837320009ec4aec80b130a2b67436781218616"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2e1bba526669176bd1f2472f5aa313ade459e48d","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    def image_import(self, image_id, method\u003d\u0027glance-direct\u0027, uri\u003dNone):"},{"line_number":258,"context_line":"        \"\"\"Import Image via method.\"\"\""},{"line_number":259,"context_line":"        url \u003d \u0027/v2/images/%s/import\u0027 % image_id"},{"line_number":260,"context_line":"        if uri:"},{"line_number":261,"context_line":"            data \u003d {\u0027method\u0027: {\u0027name\u0027: method, \u0027uri\u0027: uri}}"},{"line_number":262,"context_line":"        else:"},{"line_number":263,"context_line":"            data \u003d {\u0027method\u0027: {\u0027name\u0027: method}}"},{"line_number":264,"context_line":"        resp, body \u003d self.http_client.post(url, data\u003ddata)"},{"line_number":265,"context_line":"        return body, resp"}],"source_content_type":"text/x-python","patch_set":9,"id":"df7087c5_842d3996","line":262,"range":{"start_line":260,"start_character":0,"end_line":262,"end_character":13},"in_reply_to":"df7087c5_30390cf1","updated":"2018-03-16 14:03:04.000000000","message":"Thia is handled in shell.py.\nIf image method is glance-direct and uri is provided then it will exit from shell.py itself, it will never reach here.","commit_id":"0a837320009ec4aec80b130a2b67436781218616"}],"glanceclient/v2/shell.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8e550ab651503b5ca2f51c5a83d0c60aaa9522a1","unresolved":false,"context_lines":[{"line_number":106,"context_line":"           help\u003d_(\u0027Import method used for Image Import workflow. \u0027"},{"line_number":107,"context_line":"                  \u0027Valid values can be retrieved with import-info command.\u0027))"},{"line_number":108,"context_line":"@utils.arg(\u0027--uri\u0027, metavar\u003d\u0027\u003cIMAGE_URL\u003e\u0027, default\u003dNone,"},{"line_number":109,"context_line":"           help\u003d_(\u0027URI the image data is downloaded from..\u0027))"},{"line_number":110,"context_line":"@utils.on_data_require_fields(DATA_FIELDS)"},{"line_number":111,"context_line":"def do_image_create_via_import(gc, args):"},{"line_number":112,"context_line":"    \"\"\"EXPERIMENTAL: Create a new image via image import.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_6172c14b","line":109,"range":{"start_line":109,"start_character":19,"end_line":109,"end_character":58},"updated":"2018-03-13 09:18:51.000000000","message":"URI to download the external image.","commit_id":"62639a1047f7ce763fb71822736939a72a592d8a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8e550ab651503b5ca2f51c5a83d0c60aaa9522a1","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                      \u0027glance-direct\u0027 not in import_methods.get(\u0027value\u0027)):"},{"line_number":132,"context_line":"        utils.exit(\"No suitable import method available for direct upload, \""},{"line_number":133,"context_line":"                   \"please use image-create instead.\")"},{"line_number":134,"context_line":"    if not args.uri and args.import_method \u003d\u003d \u0027web-download\u0027:"},{"line_number":135,"context_line":"            utils.exit(\u0027Url should be passed for web-download import method\u0027)"},{"line_number":136,"context_line":"    image \u003d gc.images.create(**fields)"},{"line_number":137,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_41f1bd94","line":134,"range":{"start_line":134,"start_character":4,"end_line":134,"end_character":61},"updated":"2018-03-13 09:18:51.000000000","message":"better to check as\nif args.import_method \u003d\u003d \u0027web-download\u0027 and not args.uri:","commit_id":"62639a1047f7ce763fb71822736939a72a592d8a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8e550ab651503b5ca2f51c5a83d0c60aaa9522a1","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        utils.exit(\"No suitable import method available for direct upload, \""},{"line_number":133,"context_line":"                   \"please use image-create instead.\")"},{"line_number":134,"context_line":"    if not args.uri and args.import_method \u003d\u003d \u0027web-download\u0027:"},{"line_number":135,"context_line":"            utils.exit(\u0027Url should be passed for web-download import method\u0027)"},{"line_number":136,"context_line":"    image \u003d gc.images.create(**fields)"},{"line_number":137,"context_line":"    try:"},{"line_number":138,"context_line":"        args.id \u003d image[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_41469dc2","line":135,"range":{"start_line":135,"start_character":24,"end_line":135,"end_character":75},"updated":"2018-03-13 09:18:51.000000000","message":"\u0027URI\u0027 instead of Url","commit_id":"62639a1047f7ce763fb71822736939a72a592d8a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8e550ab651503b5ca2f51c5a83d0c60aaa9522a1","unresolved":false,"context_lines":[{"line_number":423,"context_line":"                  \u0027and the default \"glance-direct\" is used with \u0027"},{"line_number":424,"context_line":"                  \u0027\"image-stage\".\u0027))"},{"line_number":425,"context_line":"@utils.arg(\u0027--uri\u0027, metavar\u003d\u0027\u003cIMAGE_URL\u003e\u0027, default\u003dNone,"},{"line_number":426,"context_line":"           help\u003d_(\u0027URI the image data is downloaded from..\u0027))"},{"line_number":427,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"},{"line_number":428,"context_line":"           help\u003d_(\u0027ID of image to import.\u0027))"},{"line_number":429,"context_line":"def do_image_import(gc, args):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_011665a9","line":426,"range":{"start_line":426,"start_character":20,"end_line":426,"end_character":58},"updated":"2018-03-13 09:18:51.000000000","message":"ditto","commit_id":"62639a1047f7ce763fb71822736939a72a592d8a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6995f2d5a8615e79cc950ab1fcbf284de6fc83d4","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        utils.exit(\"No suitable import method available for direct upload, \""},{"line_number":133,"context_line":"                   \"please use image-create instead.\")"},{"line_number":134,"context_line":"    if args.import_method \u003d\u003d \u0027web-download\u0027 and not args.uri:"},{"line_number":135,"context_line":"            utils.exit(\"Provide URI for web-download import method\")"},{"line_number":136,"context_line":"    if args.uri and args.import_method !\u003d \u0027web-download\u0027:"},{"line_number":137,"context_line":"            utils.exit(\"Import method should be \u0027web-download\u0027 if URI is \""},{"line_number":138,"context_line":"                       \"provided.\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"df7087c5_9aa80edc","line":135,"range":{"start_line":135,"start_character":66,"end_line":135,"end_character":67},"updated":"2018-03-19 12:20:14.000000000","message":"Ending period was somehow dropped between patchsets. Would be good to add that back. I don\u0027t think that is blocking, but others may have a stronger opinion.","commit_id":"1404e16cc622af61efc08bd261cec39732e3e218"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ef6d737a2d71f32ea9269638c18708087f4fd6b8","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    if args.import_method \u003d\u003d \u0027web-download\u0027 and not args.uri:"},{"line_number":135,"context_line":"            utils.exit(\"URI is required for web-download import method. \""},{"line_number":136,"context_line":"                       \"Please use \u0027--uri \u003curi\u003e\u0027.\")"},{"line_number":137,"context_line":"    if args.uri and args.import_method !\u003d \u0027web-dowload\u0027:"},{"line_number":138,"context_line":"            utils.exit(\"Import method should be \u0027web-download\u0027 if URI is \""},{"line_number":139,"context_line":"                       \"provided.\")"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"df7087c5_312524ac","line":137,"range":{"start_line":137,"start_character":43,"end_line":137,"end_character":54},"updated":"2018-03-21 14:52:02.000000000","message":"it should be web-download","commit_id":"8f72babd61891d8309aaa000a585067faec72243"}]}
