)]}'
{"zun/api/controllers/v1/containers.py":[{"author":{"_account_id":23630,"name":"Tovin Seven","email":"tovin07@gmail.com","username":"tovin07"},"change_message_id":"6d16ce379fe50ddecc2b2399f91bdcdc93d74064","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        # NOTE(mkrai): Intent here is to check the existence of image"},{"line_number":233,"context_line":"        # before proceeding to create container. If image is not found,"},{"line_number":234,"context_line":"        # container create will fail with 400 status."},{"line_number":235,"context_line":"        images \u003d \\"},{"line_number":236,"context_line":"            compute_api.image_search(context, container_dict[\u0027image\u0027],"},{"line_number":237,"context_line":"                                     container_dict.get(\u0027image_driver\u0027),"},{"line_number":238,"context_line":"                                     True,"},{"line_number":239,"context_line":"                                     container_dict.get(\u0027image_pull_policy\u0027))"},{"line_number":240,"context_line":"        if not images:"},{"line_number":241,"context_line":"            raise exception.ImageNotFound(image\u003dcontainer_dict[\u0027image\u0027])"},{"line_number":242,"context_line":"        container_dict[\u0027project_id\u0027] \u003d context.project_id"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f044301_d0a83edc","line":239,"range":{"start_line":235,"start_character":0,"end_line":239,"end_character":77},"updated":"2017-05-09 07:59:28.000000000","message":"This one will be easier to read without line concatenate::\n\n        images \u003d compute_api.image_search(\n            context, container_dict[\u0027image\u0027],\n            container_dict.get(\u0027image_driver\u0027),\n            True,\n            container_dict.get(\u0027image_pull_policy\u0027)\n        )","commit_id":"26db4314fdbee4b4654662dcaf3199a493378742"},{"author":{"_account_id":23365,"name":"feng.shengqin","email":"feng.shengqin@zte.com.cn","username":"FengShengqin"},"change_message_id":"edffd49cd19c83d54751394367d79f2403d14430","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        # NOTE(mkrai): Intent here is to check the existence of image"},{"line_number":233,"context_line":"        # before proceeding to create container. If image is not found,"},{"line_number":234,"context_line":"        # container create will fail with 400 status."},{"line_number":235,"context_line":"        images \u003d \\"},{"line_number":236,"context_line":"            compute_api.image_search(context, container_dict[\u0027image\u0027],"},{"line_number":237,"context_line":"                                     container_dict.get(\u0027image_driver\u0027),"},{"line_number":238,"context_line":"                                     True,"},{"line_number":239,"context_line":"                                     container_dict.get(\u0027image_pull_policy\u0027))"},{"line_number":240,"context_line":"        if not images:"},{"line_number":241,"context_line":"            raise exception.ImageNotFound(image\u003dcontainer_dict[\u0027image\u0027])"},{"line_number":242,"context_line":"        container_dict[\u0027project_id\u0027] \u003d context.project_id"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f044301_33388c9e","line":239,"range":{"start_line":235,"start_character":0,"end_line":239,"end_character":77},"in_reply_to":"3f044301_d0a83edc","updated":"2017-05-09 09:15:20.000000000","message":"Done","commit_id":"26db4314fdbee4b4654662dcaf3199a493378742"}],"zun/image/docker/driver.py":[{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"fef9c8e934e50c8d9651e0b99af35f66ad10075d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    def _search_image_on_repo(self, repo, tag, exact_match):"},{"line_number":49,"context_line":"        with docker_utils.docker_client() as docker:"},{"line_number":50,"context_line":"            try:"},{"line_number":51,"context_line":"                # TODO(hongbin): search image by both repo and tag"},{"line_number":52,"context_line":"                images \u003d docker.search(repo)"},{"line_number":53,"context_line":"            except errors.APIError as api_error:"},{"line_number":54,"context_line":"                raise exception.ZunException(str(api_error))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_83c2dde8","line":51,"range":{"start_line":51,"start_character":23,"end_line":51,"end_character":30},"updated":"2017-05-04 01:21:38.000000000","message":"wrong name","commit_id":"da301a8de34febea6af9775966347be696dc1cdf"},{"author":{"_account_id":8264,"name":"Shunli Zhou","username":"ShunliZhou"},"change_message_id":"fef9c8e934e50c8d9651e0b99af35f66ad10075d","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        if exact_match:"},{"line_number":60,"context_line":"            images \u003d [i for i in images if i[\u0027name\u0027] \u003d\u003d repo]"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # TODO(hongbin): convert images to a list of Zun Image object"},{"line_number":63,"context_line":"        return images"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _pull_image(self, repo, tag):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_43bcd568","line":62,"range":{"start_line":62,"start_character":15,"end_line":62,"end_character":22},"updated":"2017-05-04 01:21:38.000000000","message":"ditto","commit_id":"da301a8de34febea6af9775966347be696dc1cdf"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"5431c614f04d2a0e5448aae4431de5c898ee535c","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            msg \u003d _(\u0027Cannot download image from docker: {0}\u0027)"},{"line_number":105,"context_line":"            raise exception.ZunException(msg.format(e))"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def search_image(self, context, repo, tag, exact_match, image_pull_policy):"},{"line_number":108,"context_line":"        if image_pull_policy \u003d\u003d \u0027never\u0027:"},{"line_number":109,"context_line":"            images \u003d self._search_image_on_host(repo, tag)"},{"line_number":110,"context_line":"        if image_pull_policy \u003d\u003d \u0027always\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_e82608bb","line":107,"range":{"start_line":107,"start_character":59,"end_line":107,"end_character":78},"updated":"2017-05-03 05:29:47.000000000","message":"IMO the image_pull_policy doesn\u0027t make sense in image searching. It only applies when we download any image.\n\nBut I agree that we should search the image both locally and at docker hub.\nWDYT?","commit_id":"da301a8de34febea6af9775966347be696dc1cdf"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"f5383ed9499763ec2696d9cb78bc75c3877eb454","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            try:"},{"line_number":51,"context_line":"                images \u003d docker.search(repo)"},{"line_number":52,"context_line":"            except errors.APIError as api_error:"},{"line_number":53,"context_line":"                raise exception.ZunException(str(api_error))"},{"line_number":54,"context_line":"            except Exception as e:"},{"line_number":55,"context_line":"                msg \u003d _(\u0027Cannot search image in docker: {0}\u0027)"},{"line_number":56,"context_line":"                raise exception.ZunException(msg.format(e))"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f013ff3_1d7d061c","line":53,"range":{"start_line":53,"start_character":16,"end_line":53,"end_character":21},"updated":"2017-05-13 22:58:06.000000000","message":"For consistency with _search_image_on_host(...), this should return None instead of raising an exception.","commit_id":"6678f1617ef87095d0369f27118336f79418a401"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"f5383ed9499763ec2696d9cb78bc75c3877eb454","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                raise exception.ZunException(str(api_error))"},{"line_number":54,"context_line":"            except Exception as e:"},{"line_number":55,"context_line":"                msg \u003d _(\u0027Cannot search image in docker: {0}\u0027)"},{"line_number":56,"context_line":"                raise exception.ZunException(msg.format(e))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        if exact_match:"},{"line_number":59,"context_line":"            images \u003d [i for i in images if i[\u0027name\u0027] \u003d\u003d repo]"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f013ff3_fd793a2f","line":56,"range":{"start_line":56,"start_character":16,"end_line":56,"end_character":21},"updated":"2017-05-13 22:58:06.000000000","message":"Ditto","commit_id":"6678f1617ef87095d0369f27118336f79418a401"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"55eda5aa49e93a06e5d573a5fca8d0465742b39e","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            msg \u003d _(\u0027Cannot download image from docker: {0}\u0027)"},{"line_number":103,"context_line":"            raise exception.ZunException(msg.format(e))"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def search_image(self, context, repo, tag, exact_match, image_pull_policy):"},{"line_number":106,"context_line":"        if image_pull_policy \u003d\u003d \u0027never\u0027:"},{"line_number":107,"context_line":"            images \u003d self._search_image_on_host(repo, tag)"},{"line_number":108,"context_line":"        if image_pull_policy \u003d\u003d \u0027always\u0027 or image_pull_policy is None:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f013ff3_3d9d6259","line":105,"range":{"start_line":105,"start_character":60,"end_line":105,"end_character":77},"updated":"2017-05-13 22:58:47.000000000","message":"I think this applies to glance as well.","commit_id":"6678f1617ef87095d0369f27118336f79418a401"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"ed35b81f6b347d4d308373c5ffb59cfd32eaddd9","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            msg \u003d _(\u0027Cannot download image from docker: {0}\u0027)"},{"line_number":103,"context_line":"            raise exception.ZunException(msg.format(e))"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def search_image(self, context, repo, tag, exact_match, image_pull_policy):"},{"line_number":106,"context_line":"        if image_pull_policy \u003d\u003d \u0027never\u0027:"},{"line_number":107,"context_line":"            images \u003d self._search_image_on_host(repo, tag)"},{"line_number":108,"context_line":"        if image_pull_policy \u003d\u003d \u0027always\u0027 or image_pull_policy is None:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f013ff3_682be581","line":105,"range":{"start_line":105,"start_character":60,"end_line":105,"end_character":77},"in_reply_to":"1f013ff3_3d9d6259","updated":"2017-05-16 21:52:16.000000000","message":"However, feel free to do it in a separated patch if you want.","commit_id":"6678f1617ef87095d0369f27118336f79418a401"}],"zun/image/driver.py":[{"author":{"_account_id":23630,"name":"Tovin Seven","email":"tovin07@gmail.com","username":"tovin07"},"change_message_id":"6d16ce379fe50ddecc2b2399f91bdcdc93d74064","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    for driver in image_driver_list:"},{"line_number":96,"context_line":"        try:"},{"line_number":97,"context_line":"            image_driver \u003d load_image_driver(driver)"},{"line_number":98,"context_line":"            imgs \u003d \\"},{"line_number":99,"context_line":"                image_driver.search_image(context, repo, tag,"},{"line_number":100,"context_line":"                                          exact_match\u003dexact_match,"},{"line_number":101,"context_line":"                                          image_pull_policy\u003dimage_pull_policy)"},{"line_number":102,"context_line":"            images.extend(imgs)"},{"line_number":103,"context_line":"        except Exception as e:"},{"line_number":104,"context_line":"            LOG.exception((\u0027Unknown exception occurred while searching \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f044301_10ed8624","line":101,"range":{"start_line":98,"start_character":0,"end_line":101,"end_character":78},"updated":"2017-05-09 07:59:28.000000000","message":"avoid line concatenate with::\n            imgs \u003d image_driver.search_image(\n                context, repo, tag,\n                exact_match\u003dexact_match,\n                image_pull_policy\u003dimage_pull_policy\n            )","commit_id":"26db4314fdbee4b4654662dcaf3199a493378742"},{"author":{"_account_id":23365,"name":"feng.shengqin","email":"feng.shengqin@zte.com.cn","username":"FengShengqin"},"change_message_id":"edffd49cd19c83d54751394367d79f2403d14430","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    for driver in image_driver_list:"},{"line_number":96,"context_line":"        try:"},{"line_number":97,"context_line":"            image_driver \u003d load_image_driver(driver)"},{"line_number":98,"context_line":"            imgs \u003d \\"},{"line_number":99,"context_line":"                image_driver.search_image(context, repo, tag,"},{"line_number":100,"context_line":"                                          exact_match\u003dexact_match,"},{"line_number":101,"context_line":"                                          image_pull_policy\u003dimage_pull_policy)"},{"line_number":102,"context_line":"            images.extend(imgs)"},{"line_number":103,"context_line":"        except Exception as e:"},{"line_number":104,"context_line":"            LOG.exception((\u0027Unknown exception occurred while searching \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f044301_d344c81d","line":101,"range":{"start_line":98,"start_character":0,"end_line":101,"end_character":78},"in_reply_to":"3f044301_10ed8624","updated":"2017-05-09 09:15:20.000000000","message":"Done","commit_id":"26db4314fdbee4b4654662dcaf3199a493378742"}]}
