)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"132764e5960a184e61c53b14c4deed136cf524d4","unresolved":false,"context_lines":[{"line_number":31,"context_line":"change will not work with Nova deploys that get rid of project_id in"},{"line_number":32,"context_line":"their service catalog in the future."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Part of bp:service-catalog-tng"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Co-Authored-By: Augustina Ragwitz \u003caragwitz+lp@pobox.com\u003e"},{"line_number":37,"context_line":"Change-Id: Id4a2f73cbcfcf36aea750375fd92b1c2d3cd824e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"3a29b11f_1403db10","line":34,"updated":"2015-10-26 21:18:05.000000000","message":"This isn\u0027t approved yet...","commit_id":"4f16fe65c41ac1158f0493fcbd5c8109bd053872"}],"novaclient/tests/unit/v2/fakes.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"19a0b23c027c7d724b198489f869a75e3769b178","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            # a nova endpoint directly without \"v2/\u003ctenant-id\u003e\"."},{"line_number":87,"context_line":"            callback \u003d \"get_versions\""},{"line_number":88,"context_line":"        elif callback \u003d\u003d \"get_http:__nova_api:8774_v2_1\":"},{"line_number":89,"context_line":"            callback \u003d \"get_current_version\""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        if not hasattr(self, callback):"},{"line_number":92,"context_line":"            # NOTE(sdague): if we try to call a thing that doesn\u0027t"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a29b11f_66e10cfe","line":89,"updated":"2015-10-20 17:04:19.000000000","message":"I actually think the regex match below, should go into this as another elif","commit_id":"deb633f48bc9bc9b159dc6d4caa041057d47b8e5"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"19a0b23c027c7d724b198489f869a75e3769b178","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            # Check if callback is from get_endpoint(),"},{"line_number":98,"context_line":"            #  otherwise throw an error"},{"line_number":99,"context_line":"            endpointRe \u003d re.compile("},{"line_number":100,"context_line":"                r\"^(get_http:__nova_api:8774_)(v\\d(_\\d)?)_(\\w{32})\")"},{"line_number":101,"context_line":"            if re.search(endpointRe, callback):"},{"line_number":102,"context_line":"                raise exceptions.NotFound(\u0027404\u0027)"},{"line_number":103,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a29b11f_8689c828","line":100,"range":{"start_line":100,"start_character":59,"end_line":100,"end_character":65},"updated":"2015-10-20 17:04:19.000000000","message":"because we\u0027re munging / gets turned into _ which will match with \\w. So probably safer to explicitly [a-f0-9]{32}$ instead.\n\nAlso, we don\u0027t need the extra () for most of those bits I don\u0027t think, as we won\u0027t be using the matched object to extract the param.","commit_id":"deb633f48bc9bc9b159dc6d4caa041057d47b8e5"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"07aa672dea1b8398b8865d86cc45fa112fa433d1","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        # regex to compare callback to result of get_endpoint()"},{"line_number":91,"context_line":"        endpoint_re \u003d re.compile("},{"line_number":92,"context_line":"            r\"^(get_http:__nova_api:8774_)(v\\d(_\\d)?)_(\\w{32})$\")"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        if url is None or callback \u003d\u003d \"get_http:__nova_api:8774\":"},{"line_number":95,"context_line":"            # To get API version information, it is necessary to GET"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a29b11f_c3df7267","line":92,"updated":"2015-10-21 18:58:34.000000000","message":"This could be made a constant instead of compiling it each time.","commit_id":"3d3db050591b879256225061307ee0434f74c2e0"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"07aa672dea1b8398b8865d86cc45fa112fa433d1","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            callback \u003d \"get_versions\""},{"line_number":98,"context_line":"        elif callback \u003d\u003d \"get_http:__nova_api:8774_v2_1\":"},{"line_number":99,"context_line":"            callback \u003d \"get_current_version\""},{"line_number":100,"context_line":"        elif re.search(endpoint_re, callback):"},{"line_number":101,"context_line":"            # compare callback to result of get_endpoint()"},{"line_number":102,"context_line":"            # NOTE(sdague): if we try to call a thing that doesn\u0027t"},{"line_number":103,"context_line":"            # exist, just return a 404. This allows the stack to act"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a29b11f_03c80aa7","line":100,"updated":"2015-10-21 18:58:34.000000000","message":"Why not call the method, e.g.:\n\n    endpoint_re.search(callback)","commit_id":"3d3db050591b879256225061307ee0434f74c2e0"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"07aa672dea1b8398b8865d86cc45fa112fa433d1","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            if self.endpoint_type \u003d\u003d \u0027endpoint_type\u0027:"},{"line_number":126,"context_line":"                return \\"},{"line_number":127,"context_line":"                    \"http://nova-api:8774/v2.1/\" +\\"},{"line_number":128,"context_line":"                    \"190a755eef2e4aac9f06aa6be9786385\""},{"line_number":129,"context_line":"            else:"},{"line_number":130,"context_line":"                # check if endpoint matches expected format (eg, v2.1)"},{"line_number":131,"context_line":"                endpoint_type_re \u003d re.compile(r\"^(v\\d(\\.\\d)?)$\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a29b11f_633e9e8d","line":128,"updated":"2015-10-21 18:58:34.000000000","message":"Could eliminate the backslashes using parentheses; also, the \u0027+\u0027 here is totally unnecessary:\n\n    return (\n        \"http://nova-api:8774/v2.1/\"\n        \"190a755eef2e4aac9f06aa6be9786385\"\n    )","commit_id":"3d3db050591b879256225061307ee0434f74c2e0"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"07aa672dea1b8398b8865d86cc45fa112fa433d1","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                if re.search(endpoint_type_re, self.endpoint_type):"},{"line_number":133,"context_line":"                    return \\"},{"line_number":134,"context_line":"                        \"\".join("},{"line_number":135,"context_line":"                            [\"http://nova-api:8774/\", self.endpoint_type, \"/\"])"},{"line_number":136,"context_line":"                else:"},{"line_number":137,"context_line":"                    return \\"},{"line_number":138,"context_line":"                        \"http://nova-api:8774/v2.1/\" +\\"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a29b11f_0356cacd","line":135,"updated":"2015-10-21 18:58:34.000000000","message":"Backslash is actually unnecessary here, as this can be written:\n\n    return \"\".join(\n        [\"http://nova-api:8774/\", self.endpoint_type, \"/\"])\n\nFor that matter, this could be just:\n\n    return \"http://nova-api:8774/%s/\" % self.endpoint_type","commit_id":"3d3db050591b879256225061307ee0434f74c2e0"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"23cb2ddfc73094e4c2011e0090edd7679f6d0a45","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                )"},{"line_number":135,"context_line":"        else:"},{"line_number":136,"context_line":"            return ("},{"line_number":137,"context_line":"                \"http://nova-api:8774/v2.1/190a755eef2e4aac9f06aa6be9786385\")"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def get_versions(self):"},{"line_number":140,"context_line":"        return (200, {}, {"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a29b11f_beb8242b","line":137,"updated":"2015-10-22 15:30:23.000000000","message":"Could simplify the code by combining the if conditions:\n\n    if (hasattr(self, \u0027endpoint_type\u0027) and\n            ENDPOINT_TYPE_RE.search(self.endpoint_type):\n        return \u0027http://nova-api:8774/%s/\u0027 % self.endpoint_type\n    else:\n        return (\n            \u0027http://nova-api:8774/v2.1/190a755eef2e4aac9f06aa6be9786385\u0027)","commit_id":"6dfbc0d155ea8fb1296a1ad6f12b4070d86e6fa2"},{"author":{"_account_id":17714,"name":"Augustina Ragwitz","email":"auggy@cpan.org","username":"mmmpork"},"change_message_id":"4375e9b7e873ac02a739ff5e471e739f07d1323e","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                )"},{"line_number":135,"context_line":"        else:"},{"line_number":136,"context_line":"            return ("},{"line_number":137,"context_line":"                \"http://nova-api:8774/v2.1/190a755eef2e4aac9f06aa6be9786385\")"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def get_versions(self):"},{"line_number":140,"context_line":"        return (200, {}, {"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a29b11f_ca00ba04","line":137,"in_reply_to":"3a29b11f_beb8242b","updated":"2015-10-22 17:20:33.000000000","message":"Thanks Kevin, I spotted this as well and thought I\u0027d pushed a fix for that. Apparently not!","commit_id":"6dfbc0d155ea8fb1296a1ad6f12b4070d86e6fa2"}],"novaclient/tests/unit/v2/test_versions.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"23cb2ddfc73094e4c2011e0090edd7679f6d0a45","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                       return_value\u003dTrue)"},{"line_number":87,"context_line":"    def test_get_endpoint_without_project_id(self, mock_is_session_client):"},{"line_number":88,"context_line":"        # create a fake client such that get_endpoint()"},{"line_number":89,"context_line":"        #  doesn\u0027t return uuid in url"},{"line_number":90,"context_line":"        endpoint_type \u003d \u0027v2.1\u0027"},{"line_number":91,"context_line":"        expected_endpoint \u003d \u0027http://nova-api:8774/v2.1/\u0027"},{"line_number":92,"context_line":"        cs_2_1 \u003d fakes.FakeClient(endpoint_type\u003dendpoint_type)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a29b11f_fee0dc2a","line":89,"updated":"2015-10-22 15:30:23.000000000","message":"The double space after the \u0027#\u0027 might cause a pep8 error, if we weren\u0027t ignoring it.  I know there\u0027s a rule to enforce a space after \u0027#\u0027, but I don\u0027t know if there\u0027s one to prohibit multiple spaces after \u0027#\u0027.\n\nJust documenting the possible concern; since it passes tests, I don\u0027t think it\u0027s a big deal.","commit_id":"6dfbc0d155ea8fb1296a1ad6f12b4070d86e6fa2"}],"novaclient/v2/versions.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"07aa672dea1b8398b8865d86cc45fa112fa433d1","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def _get_current(self):"},{"line_number":41,"context_line":"        \"\"\"Returns info about current version.\"\"\""},{"line_number":42,"context_line":"        # TODO(sdague): we\u0027ve not got to make up to 3 HTTP requests to"},{"line_number":43,"context_line":"        # determine what version we are running, due to differences in"},{"line_number":44,"context_line":"        # deployments and versions. We really need to cache the"},{"line_number":45,"context_line":"        # results of this per endpoint and keep the results of it for"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a29b11f_e3f86ec5","line":42,"updated":"2015-10-21 18:58:34.000000000","message":"s/not/now/ (femtonit)","commit_id":"3d3db050591b879256225061307ee0434f74c2e0"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"23cb2ddfc73094e4c2011e0090edd7679f6d0a45","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def _get_current(self):"},{"line_number":41,"context_line":"        \"\"\"Returns info about current version.\"\"\""},{"line_number":42,"context_line":"        # TODO(sdague): we\u0027ve not got to make up to 3 HTTP requests to"},{"line_number":43,"context_line":"        # determine what version we are running, due to differences in"},{"line_number":44,"context_line":"        # deployments and versions. We really need to cache the"},{"line_number":45,"context_line":"        # results of this per endpoint and keep the results of it for"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a29b11f_5ecc70ba","line":42,"updated":"2015-10-22 15:30:23.000000000","message":"s/not/now/ (femtonit)","commit_id":"6dfbc0d155ea8fb1296a1ad6f12b4070d86e6fa2"}]}
