)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14511,"name":"Maciej Szankin","email":"maciej+review@szankin.pl","username":"mszankin"},"change_message_id":"da36f59507690c0a6e362e6b592fc2af10876619","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch add \u0027/servers\u0027 related routes by a plain list, instead"},{"line_number":10,"context_line":"of using stevedore. After all the Nova API endpoints moves to"},{"line_number":11,"context_line":"the plain routes list, the usage of stevedore will be removed"},{"line_number":12,"context_line":"from Nova."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"To remove the servers extension from stevedore, all the extensions"},{"line_number":15,"context_line":"which depend on servers needs to be removed together. Those"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"dfeb2761_b7a29c99","line":12,"range":{"start_line":11,"start_character":23,"end_line":12,"end_character":10},"updated":"2017-03-31 15:16:12.000000000","message":"Just to be sure: you mean completely? I have few TODOs with stevedore, so just want to double check if I should just invalidate them instead.","commit_id":"659593cb0f4d1f22babaf73b289823716b34992c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"03d550dc15f225ad0da081982ee8811d31b37619","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch add \u0027/servers\u0027 related routes by a plain list, instead"},{"line_number":10,"context_line":"of using stevedore. After all the Nova API endpoints moves to"},{"line_number":11,"context_line":"the plain routes list, the usage of stevedore will be removed"},{"line_number":12,"context_line":"from Nova."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"To remove the servers extension from stevedore, all the extensions"},{"line_number":15,"context_line":"which depend on servers needs to be removed together. Those"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"dfeb2761_db3942d7","line":12,"range":{"start_line":11,"start_character":23,"end_line":12,"end_character":10},"in_reply_to":"dfeb2761_b7a29c99","updated":"2017-04-05 12:00:03.000000000","message":"yea end goal is to have plain routing for each router and remove stevedore completely.","commit_id":"659593cb0f4d1f22babaf73b289823716b34992c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"78341a13fffe1f8fc8c3a27470f65b05cd4d03f7","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch add \u0027/servers\u0027 related routes by a plain list, instead"},{"line_number":10,"context_line":"of using stevedore. After all the Nova API endpoints moves to"},{"line_number":11,"context_line":"the plain routes list, the usage of stevedore will be removed"},{"line_number":12,"context_line":"from Nova."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"To remove the servers extension from stevedore, all the extensions"},{"line_number":15,"context_line":"which depend on servers needs to be removed together. Those"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bff0334d_46027fb6","line":12,"range":{"start_line":11,"start_character":23,"end_line":12,"end_character":10},"in_reply_to":"dfeb2761_db3942d7","updated":"2017-04-06 09:29:40.000000000","message":"Well depends on which use of stevedore we are talking about.\n\nIts only the use of stevedore in the API world we are removing here.","commit_id":"659593cb0f4d1f22babaf73b289823716b34992c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"930ac625cfe9c4f9e676104b9f2d62514551c824","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch add \u0027/servers\u0027 related routes by a plain list, instead"},{"line_number":10,"context_line":"of using stevedore. After all the Nova API endpoints moves to"},{"line_number":11,"context_line":"the plain routes list, the usage of stevedore will be removed"},{"line_number":12,"context_line":"from Nova."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"To remove the servers extension from stevedore, all the extensions"},{"line_number":15,"context_line":"which depend on servers needs to be removed together. Those"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bff0334d_86e64716","line":12,"range":{"start_line":11,"start_character":23,"end_line":12,"end_character":10},"updated":"2017-04-06 09:31:15.000000000","message":"Well, thats maybe going a bit too far. Its just removing the use of stevedore for loading the API.\n\nWe will still use it for the scheduler filters, etc, where we actually want those to be plugable.","commit_id":"364c62b9e5d69326241be9b0a2194403c45e745d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cdf03885fe52d8ed173d9b2fc08a2c062ff33b4a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch add \u0027/servers\u0027 related routes by a plain list, instead"},{"line_number":10,"context_line":"of using stevedore. After all the Nova API endpoints moves to"},{"line_number":11,"context_line":"the plain routes list, the usage of stevedore will be removed"},{"line_number":12,"context_line":"from Nova."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"To remove the servers extension from stevedore, all the extensions"},{"line_number":15,"context_line":"which depend on servers needs to be removed together. Those"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"9ff52f3f_2b276415","line":12,"range":{"start_line":11,"start_character":23,"end_line":12,"end_character":10},"in_reply_to":"bff0334d_86e64716","updated":"2017-04-13 06:52:40.000000000","message":"yea, right, I will correct the words","commit_id":"364c62b9e5d69326241be9b0a2194403c45e745d"}],"nova/api/openstack/__init__.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7dc26a1b89d78f0428299631fd560866b87ec24a","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                     controller\u003dcontroller,"},{"line_number":203,"context_line":"                     action\u003daction)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        # while we are in transition mode, create additional routes"},{"line_number":206,"context_line":"        # for the resource that do not include project_id."},{"line_number":207,"context_line":"        self.connect(path,"},{"line_number":208,"context_line":"                     conditions\u003ddict(method\u003d[method]),"}],"source_content_type":"text/x-python","patch_set":19,"id":"5ff73747_8ab62ffa","line":205,"updated":"2017-04-25 14:13:20.000000000","message":"Actually, this comment should be on the above block and say \"while we transition away from project IDs in the API URIs, create additional routes that include the project_id\".","commit_id":"7b611e9ef3d4fb59352a897ecb6f9af7bd55ddfd"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7874c136a67d25659e4b299433d0fd8deeb42a5","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                     controller\u003dcontroller,"},{"line_number":203,"context_line":"                     action\u003daction)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        # while we are in transition mode, create additional routes"},{"line_number":206,"context_line":"        # for the resource that do not include project_id."},{"line_number":207,"context_line":"        self.connect(path,"},{"line_number":208,"context_line":"                     conditions\u003ddict(method\u003d[method]),"}],"source_content_type":"text/x-python","patch_set":19,"id":"5ff73747_eac0132d","line":205,"in_reply_to":"5ff73747_8ab62ffa","updated":"2017-04-25 14:14:51.000000000","message":"oh true.","commit_id":"7b611e9ef3d4fb59352a897ecb6f9af7bd55ddfd"}],"nova/api/openstack/compute/__init__.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"930ac625cfe9c4f9e676104b9f2d62514551c824","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova.api.openstack.compute.routes import APIRouterV21  # noqa"}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_71e41ead","line":17,"updated":"2017-04-06 09:31:15.000000000","message":"Nit: its worth having a note saying this is here to help the paste.ini folks across upgrade, and I guess could be removed after a cycle?","commit_id":"364c62b9e5d69326241be9b0a2194403c45e745d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cdf03885fe52d8ed173d9b2fc08a2c062ff33b4a","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova.api.openstack.compute.routes import APIRouterV21  # noqa"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ff52f3f_0bd700c2","line":17,"in_reply_to":"bff0334d_71e41ead","updated":"2017-04-13 06:52:40.000000000","message":"Do we want to disturb the user to update their api-paste.ini? I\u0027m thinking just leave it here forever.\n\nAnd maybe we can get a chance move the APIRouterV21 back to here after those cleanups, the circle reference problem may be resolved.","commit_id":"364c62b9e5d69326241be9b0a2194403c45e745d"}],"nova/api/openstack/compute/extension_info.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"0239670bee02375a6d3bd5643359a0168264968d","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"# TODO(alex_xu): This is a list of useless extension objs. Add those"},{"line_number":188,"context_line":"# extension objs at here for building a compatible extension API. Finally,"},{"line_number":189,"context_line":"# we should remove those extension objs, and add corresponding entries"},{"line_number":190,"context_line":"# in the \u0027hardcoded_extensions\u0027."},{"line_number":191,"context_line":"useless_extension_objs \u003d ["}],"source_content_type":"text/x-python","patch_set":9,"id":"dfeb2761_e683d803","line":188,"updated":"2017-03-31 14:02:30.000000000","message":"s/at//","commit_id":"659593cb0f4d1f22babaf73b289823716b34992c"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"7726c69184ad02583fafb62d3dfa829394e4453c","unresolved":false,"context_lines":[{"line_number":188,"context_line":"# extension objs at here for building a compatible extension API. Finally,"},{"line_number":189,"context_line":"# we should remove those extension objs, and add corresponding entries"},{"line_number":190,"context_line":"# in the \u0027hardcoded_extensions\u0027."},{"line_number":191,"context_line":"useless_extension_objs \u003d ["},{"line_number":192,"context_line":"    admin_actions.AdminActions,"},{"line_number":193,"context_line":"    admin_password.AdminPassword,"},{"line_number":194,"context_line":"    config_drive.ConfigDrive,"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfeb2761_56bb24c3","line":191,"range":{"start_line":191,"start_character":0,"end_line":191,"end_character":7},"updated":"2017-04-03 11:32:33.000000000","message":"can we call this unused instead?","commit_id":"659593cb0f4d1f22babaf73b289823716b34992c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"90010f227bc3c0ec30b55b61e150ae2c194b8aee","unresolved":false,"context_lines":[{"line_number":188,"context_line":"# extension objs at here for building a compatible extension API. Finally,"},{"line_number":189,"context_line":"# we should remove those extension objs, and add corresponding entries"},{"line_number":190,"context_line":"# in the \u0027hardcoded_extensions\u0027."},{"line_number":191,"context_line":"useless_extension_objs \u003d ["},{"line_number":192,"context_line":"    admin_actions.AdminActions,"},{"line_number":193,"context_line":"    admin_password.AdminPassword,"},{"line_number":194,"context_line":"    config_drive.ConfigDrive,"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfeb2761_99ed0ab9","line":191,"range":{"start_line":191,"start_character":0,"end_line":191,"end_character":7},"in_reply_to":"dfeb2761_56bb24c3","updated":"2017-04-05 09:55:40.000000000","message":"yea unused looks better","commit_id":"659593cb0f4d1f22babaf73b289823716b34992c"}],"nova/api/openstack/compute/router.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"b80e002771250c823e023ad6281d864bdde310f1","unresolved":false,"context_lines":[{"line_number":107,"context_line":")"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"ROUTE_LIST \u003d ("},{"line_number":111,"context_line":"    (\u0027/servers\u0027, {"},{"line_number":112,"context_line":"        \u0027GET\u0027: [server_controller, \u0027index\u0027],"},{"line_number":113,"context_line":"        \u0027POST\u0027: [server_controller, \u0027create\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_5456062a","line":110,"updated":"2017-03-15 15:02:20.000000000","message":"curious: Why a tuple of tuples instead of dict, keyed by route? Is order important?","commit_id":"274c29b33e0671175e3431b1faefd206952b552b"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"11e96effec5085fad7cccddb0cd12785ea3ebe9e","unresolved":false,"context_lines":[{"line_number":107,"context_line":")"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"ROUTE_LIST \u003d ("},{"line_number":111,"context_line":"    (\u0027/servers\u0027, {"},{"line_number":112,"context_line":"        \u0027GET\u0027: [server_controller, \u0027index\u0027],"},{"line_number":113,"context_line":"        \u0027POST\u0027: [server_controller, \u0027create\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_b81e3661","line":110,"in_reply_to":"3a1ff146_5456062a","updated":"2017-03-16 02:07:28.000000000","message":"yea, I found if \"/servers/{id}\" is in the front of \u0027/servers/detail\", when match the request to \u0027/servers/detail\", I got matched request as \"/servers\" with id \"detail\"","commit_id":"274c29b33e0671175e3431b1faefd206952b552b"}],"nova/api/openstack/compute/routes.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e91e7ac8b41084c282a438a7f5bf5d595b3ec87a","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        extended_server_attributes.ExtendedServerAttributesController,"},{"line_number":75,"context_line":"        extended_status.ExtendedStatusController,"},{"line_number":76,"context_line":"        extended_volumes.ExtendedVolumesController,"},{"line_number":77,"context_line":"        extended_volumes.ExtendedVolumesController,"},{"line_number":78,"context_line":"        hide_server_addresses.Controller,"},{"line_number":79,"context_line":"        keypairs.Controller,"},{"line_number":80,"context_line":"        security_groups.SecurityGroupsOutputController,"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfeb2761_af187c1d","line":77,"range":{"start_line":77,"start_character":0,"end_line":77,"end_character":51},"updated":"2017-04-05 10:38:00.000000000","message":"oh, this is duplicate entry","commit_id":"659593cb0f4d1f22babaf73b289823716b34992c"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"0239670bee02375a6d3bd5643359a0168264968d","unresolved":false,"context_lines":[{"line_number":115,"context_line":"#"},{"line_number":116,"context_line":"# Also note that this is ordered list. For example, the \u0027/servers/detail\u0027"},{"line_number":117,"context_line":"# should be in the front of \u0027/servers/{id}\u0027, otherwise the request to"},{"line_number":118,"context_line":"# \u0027/servers/detail\u0027 always matches to \u0027/servers/{id}\u0027 as the id is \u0027detail\u0027."},{"line_number":119,"context_line":"ROUTE_LIST \u003d ("},{"line_number":120,"context_line":"    (\u0027/servers\u0027, {"},{"line_number":121,"context_line":"        \u0027GET\u0027: [server_controller, \u0027index\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfeb2761_06947c36","line":118,"updated":"2017-03-31 14:02:30.000000000","message":"Thanks for this comment. That \u0027detail\u0027 thing is a real wart :(","commit_id":"659593cb0f4d1f22babaf73b289823716b34992c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"930ac625cfe9c4f9e676104b9f2d62514551c824","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    (\u0027/servers/{id}/action\u0027, {"},{"line_number":132,"context_line":"        \u0027POST\u0027: [server_controller, \u0027action\u0027]"},{"line_number":133,"context_line":"    }),"},{"line_number":134,"context_line":"    # NOTE: \u0027/os-volumes_boot\u0027 is a clone of \u0027/servers\u0027. We may want to"},{"line_number":135,"context_line":"    # deprecate it in the future."},{"line_number":136,"context_line":"    (\u0027/os-volumes_boot\u0027, {"},{"line_number":137,"context_line":"        \u0027GET\u0027: [server_controller, \u0027index\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_f13a6ee5","line":134,"updated":"2017-04-06 09:31:15.000000000","message":"Wow, thats kinda nuts.","commit_id":"364c62b9e5d69326241be9b0a2194403c45e745d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"930ac625cfe9c4f9e676104b9f2d62514551c824","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"class APIRouterV21(nova.api.openstack.APIRouterV21):"},{"line_number":155,"context_line":"    \"\"\"Routes requests on the OpenStack API to the appropriate controller"},{"line_number":156,"context_line":"    and method."},{"line_number":157,"context_line":"    \"\"\""},{"line_number":158,"context_line":"    def __init__(self):"},{"line_number":159,"context_line":"        self._loaded_extension_info \u003d extension_info.LoadedExtensionInfo()"}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_e37aa586","line":156,"updated":"2017-04-06 09:31:15.000000000","message":"Nit: It it worth saying this is here so we can slowly replacing the old generated routes with new explicit routes? I assume thats what is different with this router?","commit_id":"364c62b9e5d69326241be9b0a2194403c45e745d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cdf03885fe52d8ed173d9b2fc08a2c062ff33b4a","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"class APIRouterV21(nova.api.openstack.APIRouterV21):"},{"line_number":155,"context_line":"    \"\"\"Routes requests on the OpenStack API to the appropriate controller"},{"line_number":156,"context_line":"    and method."},{"line_number":157,"context_line":"    \"\"\""},{"line_number":158,"context_line":"    def __init__(self):"},{"line_number":159,"context_line":"        self._loaded_extension_info \u003d extension_info.LoadedExtensionInfo()"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ff52f3f_8b99d020","line":156,"in_reply_to":"bff0334d_e37aa586","updated":"2017-04-13 06:52:40.000000000","message":"Yea, maybe in the future we can merge all of those into the base-class","commit_id":"364c62b9e5d69326241be9b0a2194403c45e745d"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"064e73d2fa58a2cb206ed764513be59b4c5d83b6","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    return controller"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"server_controller \u003d functools.partial(_create_controller,"},{"line_number":70,"context_line":"    servers.ServersController,"},{"line_number":71,"context_line":"    ["},{"line_number":72,"context_line":"        config_drive.ConfigDriveController,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7ffa3b31_95cb28a4","line":69,"updated":"2017-04-14 13:38:17.000000000","message":"Is there reason not to instantiate ServersController on module level, register extensions and actions and than use it in ROUTE_LIST?\nNow this partial function looks like unneeded complexity for me.","commit_id":"361786ce76ac43753a040948ceaaefdea352b5b2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b8fcb165dc9ba1658c8239b288221101ea499708","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    return controller"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"server_controller \u003d functools.partial(_create_controller,"},{"line_number":70,"context_line":"    servers.ServersController,"},{"line_number":71,"context_line":"    ["},{"line_number":72,"context_line":"        config_drive.ConfigDriveController,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7ffa3b31_8bf3d50a","line":69,"in_reply_to":"7ffa3b31_95cb28a4","updated":"2017-04-18 02:19:19.000000000","message":"Andrey, yea, that is my flavor way also.\n\nBut there is kind of circle reference at here. I\u0027m trying to instantiate ServersController on the module level first, but it doesn\u0027t work.\n\nI think we can give a try after we clean up the code, like remove the extension class, remove the need of \u0027extension_info.LoadedExtensionInfo\u0027 from the controller. Then I think we can reduce some complex at here.","commit_id":"361786ce76ac43753a040948ceaaefdea352b5b2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"faf3237dc473c97b652b0c4f7271800769cc61df","unresolved":false,"context_lines":[{"line_number":112,"context_line":"#     ..."},{"line_number":113,"context_line":"# )"},{"line_number":114,"context_line":"#"},{"line_number":115,"context_line":"# Also note that this is ordered list. For example, the \u0027/servers/detail\u0027"},{"line_number":116,"context_line":"# should be in the front of \u0027/servers/{id}\u0027, otherwise the request to"},{"line_number":117,"context_line":"# \u0027/servers/detail\u0027 always matches to \u0027/servers/{id}\u0027 as the id is \u0027detail\u0027."},{"line_number":118,"context_line":"ROUTE_LIST \u003d ("}],"source_content_type":"text/x-python","patch_set":15,"id":"7ffa3b31_553e328b","line":115,"range":{"start_line":115,"start_character":33,"end_line":115,"end_character":37},"updated":"2017-04-20 11:57:59.000000000","message":"Nit: seems like its actually a tuple, but thats fine.","commit_id":"1222ceea23be292c73f6af9d801ce5ac9fbe0b44"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3ee4d2e552b130a23c43f31376967e6d1b1f3b49","unresolved":false,"context_lines":[{"line_number":112,"context_line":"#     ..."},{"line_number":113,"context_line":"# )"},{"line_number":114,"context_line":"#"},{"line_number":115,"context_line":"# Also note that this is ordered list. For example, the \u0027/servers/detail\u0027"},{"line_number":116,"context_line":"# should be in the front of \u0027/servers/{id}\u0027, otherwise the request to"},{"line_number":117,"context_line":"# \u0027/servers/detail\u0027 always matches to \u0027/servers/{id}\u0027 as the id is \u0027detail\u0027."},{"line_number":118,"context_line":"ROUTE_LIST \u003d ("}],"source_content_type":"text/x-python","patch_set":15,"id":"5ff73747_5ee91f18","line":115,"range":{"start_line":115,"start_character":33,"end_line":115,"end_character":37},"in_reply_to":"7ffa3b31_553e328b","updated":"2017-04-25 04:36:14.000000000","message":"yea, nice point, I will correct it.","commit_id":"1222ceea23be292c73f6af9d801ce5ac9fbe0b44"}],"setup.cfg":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e91e7ac8b41084c282a438a7f5bf5d595b3ec87a","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    cloudpipe \u003d nova.api.openstack.compute.cloudpipe:Cloudpipe"},{"line_number":84,"context_line":"    console_auth_tokens \u003d nova.api.openstack.compute.console_auth_tokens:ConsoleAuthTokens"},{"line_number":85,"context_line":"    consoles \u003d nova.api.openstack.compute.consoles:Consoles"},{"line_number":86,"context_line":"    extended_volumes \u003d nova.api.openstack.compute.extended_volumes:ExtendedVolumes"},{"line_number":87,"context_line":"    extension_info \u003d nova.api.openstack.compute.extension_info:ExtensionInfo"},{"line_number":88,"context_line":"    fixed_ips \u003d nova.api.openstack.compute.fixed_ips:FixedIps"},{"line_number":89,"context_line":"    flavors \u003d nova.api.openstack.compute.flavors:Flavors"}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"dfeb2761_ef3fa422","line":86,"range":{"start_line":86,"start_character":0,"end_line":86,"end_character":82},"updated":"2017-04-05 10:38:00.000000000","message":"we can remove this too","commit_id":"659593cb0f4d1f22babaf73b289823716b34992c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"57d92bcb0f19291769793f3408dd3c9bfe02b2bb","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    server_migrations \u003d nova.api.openstack.compute.server_migrations:ServerMigrations"},{"line_number":142,"context_line":"    server_password \u003d nova.api.openstack.compute.server_password:ServerPassword"},{"line_number":143,"context_line":"    server_tags \u003d nova.api.openstack.compute.server_tags:ServerTags"},{"line_number":144,"context_line":"    server_usage \u003d nova.api.openstack.compute.server_usage:ServerUsage"},{"line_number":145,"context_line":"    server_groups \u003d nova.api.openstack.compute.server_groups:ServerGroups"},{"line_number":146,"context_line":"    servers \u003d nova.api.openstack.compute.servers:Servers"},{"line_number":147,"context_line":"    services \u003d nova.api.openstack.compute.services:Services"}],"source_content_type":"text/x-ttcn-cfg","patch_set":12,"id":"7ffa3b31_a8eff485","side":"PARENT","line":144,"range":{"start_line":144,"start_character":4,"end_line":144,"end_character":70},"updated":"2017-04-14 04:35:25.000000000","message":"I forget to remove this one","commit_id":"5a556a720f5a7394cab4c84fa6202976c6190b23"}]}
