)]}'
{"keystone/catalog/controllers.py":[{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"1aceee55cc4d31e6673619bf9b54d6fd7f372dd3","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        ref \u003d self.catalog_api.create_endpoint(ref[\u0027id\u0027], ref)"},{"line_number":283,"context_line":"        return EndpointV3.wrap_member(context, ref)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def check_url_create_url(self, url):"},{"line_number":286,"context_line":"        import re"},{"line_number":287,"context_line":"        regex \u003d re.compile("},{"line_number":288,"context_line":"            r\u0027^https?://\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_4173edb0","line":285,"updated":"2014-05-13 13:31:38.000000000","message":"I would prefer you rename this function to something more intuitive, like \"url_is_valid\" or something of the sort. Since the current name doesn\u0027t really make much sense, at least to me.","commit_id":"a2c46f36e89c10ecf5fa5f9c13acdb2ee291d70d"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"65d84992756001dd499d1234e6972a22a72db14a","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        ref \u003d self.catalog_api.create_endpoint(ref[\u0027id\u0027], ref)"},{"line_number":283,"context_line":"        return EndpointV3.wrap_member(context, ref)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def check_url_create_url(self, url):"},{"line_number":286,"context_line":"        import re"},{"line_number":287,"context_line":"        regex \u003d re.compile("},{"line_number":288,"context_line":"            r\u0027^https?://\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_24598f36","line":285,"in_reply_to":"7adec928_4173edb0","updated":"2014-05-13 14:12:10.000000000","message":"Done","commit_id":"a2c46f36e89c10ecf5fa5f9c13acdb2ee291d70d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b5e12d94e7dda62c5f9b50494d35f7dca1cd86e1","unresolved":false,"context_lines":[{"line_number":290,"context_line":"            r\u0027localhost|\u0027"},{"line_number":291,"context_line":"            r\u0027\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\u0027"},{"line_number":292,"context_line":"            r\u0027(?::\\d+)?\u0027"},{"line_number":293,"context_line":"            r\u0027(?:/?|[/?]\\S+)$\u0027, re.IGNORECASE)"},{"line_number":294,"context_line":"        return (url is not None and regex.search(url)) is None"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    @controller.filterprotected(\u0027interface\u0027, \u0027service_id\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_a4775f39","line":293,"updated":"2014-05-13 14:35:21.000000000","message":"We could probably leverage the jsonschema validator to do this instead \n\nhttps://review.openstack.org/#/c/86483/\n\nhttps://review.openstack.org/#/c/86484/\n\nThat way we could validate everything for Endpoints in one shot.","commit_id":"5636bcbbefe23695019b864678b56f9203890083"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"85ae7199d5e12b85b8149f644a196115f2a42c6f","unresolved":false,"context_lines":[{"line_number":290,"context_line":"            r\u0027localhost|\u0027"},{"line_number":291,"context_line":"            r\u0027\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\u0027"},{"line_number":292,"context_line":"            r\u0027(?::\\d+)?\u0027"},{"line_number":293,"context_line":"            r\u0027(?:/?|[/?]\\S+)$\u0027, re.IGNORECASE)"},{"line_number":294,"context_line":"        return (url is not None and regex.search(url)) is None"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    @controller.filterprotected(\u0027interface\u0027, \u0027service_id\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_bac11431","line":293,"in_reply_to":"7adec928_a4775f39","updated":"2014-07-11 18:57:11.000000000","message":"++\n\nI think that\u0027s probably the best thing to do here.","commit_id":"5636bcbbefe23695019b864678b56f9203890083"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"50957daaeed17fcbbbec0eb8f19489f8540d5952","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        self._require_attribute(ref, \u0027url\u0027)"},{"line_number":318,"context_line":"        self.catalog_api.get_service(ref[\u0027service_id\u0027])"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        if self.is_valid_url(ref[\u0027url\u0027]):"},{"line_number":321,"context_line":"            msg \u003d _(\u0027The endpoint url is not valid\u0027)"},{"line_number":322,"context_line":"            raise exception.ValidationError(message\u003dmsg)"},{"line_number":323,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_815b4e85","line":320,"updated":"2014-07-23 14:39:33.000000000","message":"Is is_valid_url() used somewhere else? \nI am wondering why not just have something like:\nrequest_to_validate \u003d {\u0027url\u0027: url}\t\ntry:\n    self.url_schema_validator.validate(request_to_validate)\t\nexcept exception.SchemaValidationError:\n    raise exception.ValidationError(message\u003d\u0027bad url or something\u0027)\n\n?","commit_id":"62785936e830db0e8f733e1aac2d231e404eda86"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"743a22620d182668d1e29893988db169f44f64f7","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        self._require_attribute(ref, \u0027url\u0027)"},{"line_number":318,"context_line":"        self.catalog_api.get_service(ref[\u0027service_id\u0027])"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        if self.is_valid_url(ref[\u0027url\u0027]):"},{"line_number":321,"context_line":"            msg \u003d _(\u0027The endpoint url is not valid\u0027)"},{"line_number":322,"context_line":"            raise exception.ValidationError(message\u003dmsg)"},{"line_number":323,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_90734fe6","line":320,"in_reply_to":"baada198_815b4e85","updated":"2014-07-25 06:52:26.000000000","message":"I think is_valid_url() function could be used in other functions, for example, in update_endpoint.\n\nBut..., (maybe) could be a good idea move this snippet into _validate_endpoint() function?","commit_id":"62785936e830db0e8f733e1aac2d231e404eda86"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"50870720571e93952990a7327b604d943ccdee9d","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        self._require_attribute(ref, \u0027url\u0027)"},{"line_number":318,"context_line":"        self.catalog_api.get_service(ref[\u0027service_id\u0027])"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        if self.is_valid_url(ref[\u0027url\u0027]):"},{"line_number":321,"context_line":"            msg \u003d _(\u0027The endpoint url is not valid\u0027)"},{"line_number":322,"context_line":"            raise exception.ValidationError(message\u003dmsg)"},{"line_number":323,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_4a3bc39b","line":320,"in_reply_to":"baada198_90734fe6","updated":"2014-07-25 09:20:18.000000000","message":"Hm, I think this function should be created once it\u0027s really used in multiple places. For now I would move the code. \nI also meant that is bette to raise, catch and maybe rereaise an exception rather than return true/false and raise an exception.","commit_id":"62785936e830db0e8f733e1aac2d231e404eda86"}]}
