)]}'
{"magnum/api/middleware/auth_token.py":[{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"6b56572b9dcf9a5a76f585612c8e1fa78b64d60b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def __init__(self, app, conf, public_api_routes\u003dNone):"},{"line_number":33,"context_line":"        if public_api_routes is None:"},{"line_number":34,"context_line":"            public_api_routes \u003d []"},{"line_number":35,"context_line":"        route_pattern_tpl \u003d \u0027%s\\.json?$\u0027"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        try:"},{"line_number":38,"context_line":"            self.public_api_routes \u003d [re.compile(route_pattern_tpl % route_tpl)"},{"line_number":39,"context_line":"                                      for route_tpl in public_api_routes]"},{"line_number":40,"context_line":"        except re.error as e:"},{"line_number":41,"context_line":"            msg \u003d _(\u0027Cannot compile public API routes: %s\u0027) % e"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"            LOG.error(msg)"},{"line_number":44,"context_line":"            raise exception.ConfigInvalid(error_msg\u003dmsg)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        super(AuthTokenMiddleware, self).__init__(app, conf)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bae84128_5f872b12","side":"PARENT","line":44,"range":{"start_line":35,"start_character":0,"end_line":44,"end_character":56},"updated":"2016-02-25 06:49:22.000000000","message":"Why has this been removed?","commit_id":"39288ea1dd03e954bd6e21a86167de7c52602e85"},{"author":{"_account_id":12385,"name":"Motohiro/Yuanying Otsuka","email":"yuanying@fraction.jp","username":"yuanying"},"change_message_id":"1d644cdb5491498ac8f5aa01d492852627d7dcbe","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def __init__(self, app, conf, public_api_routes\u003dNone):"},{"line_number":33,"context_line":"        if public_api_routes is None:"},{"line_number":34,"context_line":"            public_api_routes \u003d []"},{"line_number":35,"context_line":"        route_pattern_tpl \u003d \u0027%s\\.json?$\u0027"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        try:"},{"line_number":38,"context_line":"            self.public_api_routes \u003d [re.compile(route_pattern_tpl % route_tpl)"},{"line_number":39,"context_line":"                                      for route_tpl in public_api_routes]"},{"line_number":40,"context_line":"        except re.error as e:"},{"line_number":41,"context_line":"            msg \u003d _(\u0027Cannot compile public API routes: %s\u0027) % e"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"            LOG.error(msg)"},{"line_number":44,"context_line":"            raise exception.ConfigInvalid(error_msg\u003dmsg)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        super(AuthTokenMiddleware, self).__init__(app, conf)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_bea0f991","side":"PARENT","line":44,"range":{"start_line":35,"start_character":0,"end_line":44,"end_character":56},"in_reply_to":"bae84128_5f872b12","updated":"2016-02-26 05:16:24.000000000","message":"This regex pattern seems not working correctly, so it\u0027s reasonable to remove it.","commit_id":"39288ea1dd03e954bd6e21a86167de7c52602e85"},{"author":{"_account_id":12385,"name":"Motohiro/Yuanying Otsuka","email":"yuanying@fraction.jp","username":"yuanying"},"change_message_id":"1d644cdb5491498ac8f5aa01d492852627d7dcbe","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    def __call__(self, env, start_response):"},{"line_number":49,"context_line":"        path \u003d utils.safe_rstrip(env.get(\u0027PATH_INFO\u0027), \u0027/\u0027)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        # The information whether the API call is being performed against the"},{"line_number":52,"context_line":"        # public API is required for some other components. Saving it to the"},{"line_number":53,"context_line":"        # WSGI environment is reasonable thereby."},{"line_number":54,"context_line":"        env[\u0027is_public_api\u0027] \u003d any(map(lambda pattern: re.match(pattern, path),"},{"line_number":55,"context_line":"                                       self.public_api_routes))"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        if env[\u0027is_public_api\u0027]:"},{"line_number":58,"context_line":"            return self._app(env, start_response)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        return super(AuthTokenMiddleware, self).__call__(env, start_response)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_be791932","side":"PARENT","line":57,"range":{"start_line":51,"start_character":0,"end_line":57,"end_character":32},"updated":"2016-02-26 05:16:24.000000000","message":"According to comment, this environment variable is needed by anyone,\nso please keep it.","commit_id":"39288ea1dd03e954bd6e21a86167de7c52602e85"},{"author":{"_account_id":15917,"name":"Aaron-DH","email":"344677472@qq.com","username":"aaron"},"change_message_id":"bf6c4146333fb5a2c5fc21912a4913fc43e39c95","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    def __call__(self, env, start_response):"},{"line_number":49,"context_line":"        path \u003d utils.safe_rstrip(env.get(\u0027PATH_INFO\u0027), \u0027/\u0027)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        # The information whether the API call is being performed against the"},{"line_number":52,"context_line":"        # public API is required for some other components. Saving it to the"},{"line_number":53,"context_line":"        # WSGI environment is reasonable thereby."},{"line_number":54,"context_line":"        env[\u0027is_public_api\u0027] \u003d any(map(lambda pattern: re.match(pattern, path),"},{"line_number":55,"context_line":"                                       self.public_api_routes))"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        if env[\u0027is_public_api\u0027]:"},{"line_number":58,"context_line":"            return self._app(env, start_response)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        return super(AuthTokenMiddleware, self).__call__(env, start_response)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_09ba8423","side":"PARENT","line":57,"range":{"start_line":51,"start_character":0,"end_line":57,"end_character":32},"in_reply_to":"9aed3d3a_be791932","updated":"2016-02-26 11:37:44.000000000","message":"hi, Motohiro/Yuanying Otsuka,\nif path in self.public_api_routes` this judgment has keep this function.","commit_id":"39288ea1dd03e954bd6e21a86167de7c52602e85"},{"author":{"_account_id":7049,"name":"Kai Qiang Wu(Kennan)","email":"wkq5325@gmail.com","username":"Kennan"},"change_message_id":"a1961e1273fafe1ed3d6ed855321598dcfea0738","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def __init__(self, app, conf, public_api_routes\u003dNone):"},{"line_number":33,"context_line":"        if public_api_routes is None:"},{"line_number":34,"context_line":"            public_api_routes \u003d []"},{"line_number":35,"context_line":"        route_pattern_tpl \u003d \u0027%s(\\.json|\\.xml)?$\u0027"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        try:"},{"line_number":38,"context_line":"            self.public_api_routes \u003d [re.compile(route_pattern_tpl % route_tpl)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_de9ab96d","line":35,"range":{"start_line":35,"start_character":41,"end_line":35,"end_character":44},"updated":"2016-02-29 04:44:15.000000000","message":"why we need xml here ? I not remember xml is support any more","commit_id":"51094d553520592e025ff5ee8cbd6b2509d0ed09"}],"magnum/tests/unit/api/controllers/test_root.py":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"c0d5fa7bfbd006f8e9dc353d53e266e62080e8e2","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        cfg.CONF.set_override(\"enable_authentication\", True)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        config \u003d copy.deepcopy(self.config)"},{"line_number":100,"context_line":"        config[\"app\"][\"acl_public_routes\"] \u003d [\u0027/\u0027]"},{"line_number":101,"context_line":"        app \u003d self._make_app(config\u003dconfig)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        expected \u003d {u\u0027default_version\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_f99e2662","line":100,"range":{"start_line":100,"start_character":8,"end_line":100,"end_character":50},"updated":"2016-02-25 01:31:38.000000000","message":"okay, you added v1 to acl, can you please also add /v1 to test case?","commit_id":"51a6aba71d545c1cc9b1803567884ed6837c765f"},{"author":{"_account_id":7049,"name":"Kai Qiang Wu(Kennan)","email":"wkq5325@gmail.com","username":"Kennan"},"change_message_id":"96a49e5f359f489f1ad54c92920c7c3d43b61db0","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_acl_access_with_all(self):"},{"line_number":100,"context_line":"        cfg.CONF.set_override(\"enable_authentication\", True)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        config \u003d copy.deepcopy(self.config)"},{"line_number":103,"context_line":"        # Both / and /v1 and access without auth"},{"line_number":104,"context_line":"        config[\"app\"][\"acl_public_routes\"] \u003d [\u0027/\u0027, \u0027/v1\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_3d8fc624","line":101,"updated":"2016-02-26 09:16:29.000000000","message":"The dault value is True,  so override seems not needed, but it is ok here.\nBut I think we can add related enable_authenication \u003d false case.","commit_id":"ecebeda1a9769ed4d48e0ed1b18520fbf7546e9a"},{"author":{"_account_id":15917,"name":"Aaron-DH","email":"344677472@qq.com","username":"aaron"},"change_message_id":"bf6c4146333fb5a2c5fc21912a4913fc43e39c95","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_acl_access_with_all(self):"},{"line_number":100,"context_line":"        cfg.CONF.set_override(\"enable_authentication\", True)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        config \u003d copy.deepcopy(self.config)"},{"line_number":103,"context_line":"        # Both / and /v1 and access without auth"},{"line_number":104,"context_line":"        config[\"app\"][\"acl_public_routes\"] \u003d [\u0027/\u0027, \u0027/v1\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_8920549d","line":101,"in_reply_to":"9aed3d3a_3d8fc624","updated":"2016-02-26 11:37:44.000000000","message":"Hi, Kai Qiang, thanks for you review.\ni found that all apis can be access if not override the enable_authenication, it seems that enable_authenication has been set to false in test case , but i can\u0027t found where it sets.","commit_id":"ecebeda1a9769ed4d48e0ed1b18520fbf7546e9a"}]}
