)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"0169d62c97eb6aeb751d0505ca943053fab10ed3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add guideline about consuming endpoints from catalog"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Having gone all the way down the rabbit hole... there is no where that"},{"line_number":10,"context_line":"actually describes how to select an endpoint from the catalog. This is"},{"line_number":11,"context_line":"just a description of today and matches what keystoneauth is doing."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f044301_483f1725","line":9,"range":{"start_line":9,"start_character":57,"end_line":9,"end_character":65},"updated":"2017-05-05 17:26:47.000000000","message":"one word","commit_id":"a86b64f32fe2725767d793a30ae9cc17b20c7c22"}],"guidelines/consuming-catalog.rst":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"0169d62c97eb6aeb751d0505ca943053fab10ed3","unresolved":false,"context_lines":[{"line_number":48,"context_line":"service-name"},{"line_number":49,"context_line":"  Arbitrary name given to the service by the deployer. Optional. In all except"},{"line_number":50,"context_line":"  the most extreme cases this should never be needed and its use as a"},{"line_number":51,"context_line":"  meaningful identified is strongly discouraged. For completeness though, there"},{"line_number":52,"context_line":"  is at least one case in the wild where service-name has been required in"},{"line_number":53,"context_line":"  addition to service-type to uniquely identify the right service."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"endpoint-override"},{"line_number":56,"context_line":"  An endpoint for the service that the user has procurred from some other"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f044301_c862073f","line":53,"range":{"start_line":51,"start_character":49,"end_line":53,"end_character":66},"updated":"2017-05-05 17:26:47.000000000","message":"I\u0027m not sure that this is helpful or needed.","commit_id":"a86b64f32fe2725767d793a30ae9cc17b20c7c22"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"fa1aa79835764a1edc75afe960429b553167d7ed","unresolved":false,"context_lines":[{"line_number":48,"context_line":"service-name"},{"line_number":49,"context_line":"  Arbitrary name given to the service by the deployer. Optional. In all except"},{"line_number":50,"context_line":"  the most extreme cases this should never be needed and its use as a"},{"line_number":51,"context_line":"  meaningful identified is strongly discouraged. For completeness though, there"},{"line_number":52,"context_line":"  is at least one case in the wild where service-name has been required in"},{"line_number":53,"context_line":"  addition to service-type to uniquely identify the right service."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"endpoint-override"},{"line_number":56,"context_line":"  An endpoint for the service that the user has procurred from some other"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f044301_8ee767e5","line":53,"range":{"start_line":51,"start_character":49,"end_line":53,"end_character":66},"in_reply_to":"3f044301_c862073f","updated":"2017-05-10 12:42:28.000000000","message":"Good point.","commit_id":"a86b64f32fe2725767d793a30ae9cc17b20c7c22"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"0169d62c97eb6aeb751d0505ca943053fab10ed3","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"The basic process is:"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"#. If the user has provided ``{endpoint-override}``, STOP. This is the"},{"line_number":85,"context_line":"   ``{service-endpoint}``."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"#. Authenticate to keystone at the ``{auth-url}``, retreiving a ``token``"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f044301_4804b74a","line":84,"range":{"start_line":84,"start_character":53,"end_line":84,"end_character":57},"updated":"2017-05-05 17:26:47.000000000","message":"too bad rst doesn\u0027t have a stop sign emoji.","commit_id":"a86b64f32fe2725767d793a30ae9cc17b20c7c22"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"fa1aa79835764a1edc75afe960429b553167d7ed","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"The basic process is:"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"#. If the user has provided ``{endpoint-override}``, STOP. This is the"},{"line_number":85,"context_line":"   ``{service-endpoint}``."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"#. Authenticate to keystone at the ``{auth-url}``, retreiving a ``token``"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f044301_6eeadbac","line":84,"range":{"start_line":84,"start_character":53,"end_line":84,"end_character":57},"in_reply_to":"3f044301_4804b74a","updated":"2017-05-10 12:42:28.000000000","message":"ikr?","commit_id":"a86b64f32fe2725767d793a30ae9cc17b20c7c22"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"0169d62c97eb6aeb751d0505ca943053fab10ed3","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"  {"},{"line_number":172,"context_line":"    \"access\": {"},{"line_number":173,"context_line":"      \"token\": {"},{"line_number":174,"context_line":"      },"},{"line_number":175,"context_line":"      \"serviceCatalog\": ["},{"line_number":176,"context_line":"        {"},{"line_number":177,"context_line":"          \"endpoints_links\": [],"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f044301_c863271a","line":174,"range":{"start_line":173,"start_character":15,"end_line":174,"end_character":7},"updated":"2017-05-05 17:26:47.000000000","message":"Did you intend on leaving this empty? Looks odd.","commit_id":"a86b64f32fe2725767d793a30ae9cc17b20c7c22"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"fa1aa79835764a1edc75afe960429b553167d7ed","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"  {"},{"line_number":172,"context_line":"    \"access\": {"},{"line_number":173,"context_line":"      \"token\": {"},{"line_number":174,"context_line":"      },"},{"line_number":175,"context_line":"      \"serviceCatalog\": ["},{"line_number":176,"context_line":"        {"},{"line_number":177,"context_line":"          \"endpoints_links\": [],"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f044301_89d15e26","line":174,"range":{"start_line":173,"start_character":15,"end_line":174,"end_character":7},"in_reply_to":"3f044301_c863271a","updated":"2017-05-10 12:42:28.000000000","message":"Done","commit_id":"a86b64f32fe2725767d793a30ae9cc17b20c7c22"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"0169d62c97eb6aeb751d0505ca943053fab10ed3","unresolved":false,"context_lines":[{"line_number":213,"context_line":"#. If ``{region_name}`` was given and does not match either of ``region``"},{"line_number":214,"context_line":"   or ``region_id``, discard the endpoint."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"The remaining ``{candidate-endpoints}`` match the request. If there is more"},{"line_number":217,"context_line":"than one of them, just use the first."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"#. If v2, the ``{catalog-endpoint}`` is the value of ``{interface}URL``."},{"line_number":220,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f044301_a8345bfc","line":217,"range":{"start_line":216,"start_character":0,"end_line":217,"end_character":37},"updated":"2017-05-05 17:26:47.000000000","message":"Should we mention handling the case where no endpoints remain? Like if a cloud had regions \"foo\" and \"bar\", and the user specified \"zam\" as the region.","commit_id":"a86b64f32fe2725767d793a30ae9cc17b20c7c22"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"fa1aa79835764a1edc75afe960429b553167d7ed","unresolved":false,"context_lines":[{"line_number":213,"context_line":"#. If ``{region_name}`` was given and does not match either of ``region``"},{"line_number":214,"context_line":"   or ``region_id``, discard the endpoint."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"The remaining ``{candidate-endpoints}`` match the request. If there is more"},{"line_number":217,"context_line":"than one of them, just use the first."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"#. If v2, the ``{catalog-endpoint}`` is the value of ``{interface}URL``."},{"line_number":220,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f044301_eed5cbe6","line":217,"range":{"start_line":216,"start_character":0,"end_line":217,"end_character":37},"in_reply_to":"3f044301_a8345bfc","updated":"2017-05-10 12:42:28.000000000","message":"Yah. Good call.","commit_id":"a86b64f32fe2725767d793a30ae9cc17b20c7c22"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"8731f40893943c731729c40811ff0a8940b00baa","unresolved":false,"context_lines":[{"line_number":57,"context_line":"At the end of the discovery process, the user should know the following"},{"line_number":58,"context_line":"information."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"If the process was successful:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"service-endpoint"},{"line_number":63,"context_line":"  The endpoint to use as the root of the service."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ff0f0b1f_1dfa9041","line":60,"updated":"2017-05-18 11:40:07.000000000","message":"The implication of this structure is that there\u0027s going to be another section which explains when things were not successful, I don\u0027t see that nearby.\n\nSo you might consider changing 57-63 to:\n\nAt the end of the discovery proces, the user should know the service-endpoint: The endpoint to use as the root of the service.\n\nOr something similarly succinct.","commit_id":"81536c71c5f9b49e198acdfd897ce14070918348"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"aa478bd79996917cff77d6a313a0deef290f42b4","unresolved":false,"context_lines":[{"line_number":57,"context_line":"At the end of the discovery process, the user should know the following"},{"line_number":58,"context_line":"information."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"If the process was successful:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"service-endpoint"},{"line_number":63,"context_line":"  The endpoint to use as the root of the service."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ff0f0b1f_a09db75a","line":60,"in_reply_to":"ff0f0b1f_1dfa9041","updated":"2017-05-18 12:01:03.000000000","message":"Oh- good point. Done.","commit_id":"81536c71c5f9b49e198acdfd897ce14070918348"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"8731f40893943c731729c40811ff0a8940b00baa","unresolved":false,"context_lines":[{"line_number":103,"context_line":"two main keys that concern discovery:"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"type"},{"line_number":106,"context_line":"  Should match ``{service-type}``"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"endpoints"},{"line_number":109,"context_line":"  List of endpoints objects for that service"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ff0f0b1f_1da8501d","line":106,"updated":"2017-05-18 11:40:07.000000000","message":"Throughout this is \"should\" the right word? It implies it might not but alternatives are not listed.","commit_id":"81536c71c5f9b49e198acdfd897ce14070918348"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"aa478bd79996917cff77d6a313a0deef290f42b4","unresolved":false,"context_lines":[{"line_number":103,"context_line":"two main keys that concern discovery:"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"type"},{"line_number":106,"context_line":"  Should match ``{service-type}``"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"endpoints"},{"line_number":109,"context_line":"  List of endpoints objects for that service"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ff0f0b1f_e0e16fd2","line":106,"in_reply_to":"ff0f0b1f_1da8501d","updated":"2017-05-18 12:01:03.000000000","message":"Done","commit_id":"81536c71c5f9b49e198acdfd897ce14070918348"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"8731f40893943c731729c40811ff0a8940b00baa","unresolved":false,"context_lines":[{"line_number":114,"context_line":"name"},{"line_number":115,"context_line":"  Should match ``{service-name}``"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The list of endpoints has a different format depending on whether v2 or v3 was"},{"line_number":118,"context_line":"used. For both versions each endpoint object has a ``region`` attribute, which"},{"line_number":119,"context_line":"should match ``{region-name}`` if one was given."},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ff0f0b1f_fdbd9c68","line":117,"updated":"2017-05-18 11:40:07.000000000","message":"maybe interject \"auth\" after \"v3\" to be extra clear.","commit_id":"81536c71c5f9b49e198acdfd897ce14070918348"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"aa478bd79996917cff77d6a313a0deef290f42b4","unresolved":false,"context_lines":[{"line_number":114,"context_line":"name"},{"line_number":115,"context_line":"  Should match ``{service-name}``"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The list of endpoints has a different format depending on whether v2 or v3 was"},{"line_number":118,"context_line":"used. For both versions each endpoint object has a ``region`` attribute, which"},{"line_number":119,"context_line":"should match ``{region-name}`` if one was given."},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ff0f0b1f_c0e66be9","line":117,"in_reply_to":"ff0f0b1f_fdbd9c68","updated":"2017-05-18 12:01:03.000000000","message":"Done","commit_id":"81536c71c5f9b49e198acdfd897ce14070918348"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"8731f40893943c731729c40811ff0a8940b00baa","unresolved":false,"context_lines":[{"line_number":231,"context_line":"#. If v3, the ``{catalog-endpoint}`` is the value of ``url``."},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"If it feels like you just implemented a SQL query by hand, have no fear,"},{"line_number":234,"context_line":"you did!"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":".. code-block:: sql"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ff0f0b1f_7d24ecc6","line":234,"updated":"2017-05-18 11:40:07.000000000","message":"Because this sql adds the join across \u0027id\u0027 it clouds the waters a bit because we haven\u0027t spoke of \u0027id\u0027 before and I did a \"wazzat\". It\u0027s a nice bit of local color, but I\u0027m not sure it adds enough to warrant keeping. But i\u0027d be happy to be told I\u0027m a humorless bore.","commit_id":"81536c71c5f9b49e198acdfd897ce14070918348"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"aa478bd79996917cff77d6a313a0deef290f42b4","unresolved":false,"context_lines":[{"line_number":231,"context_line":"#. If v3, the ``{catalog-endpoint}`` is the value of ``url``."},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"If it feels like you just implemented a SQL query by hand, have no fear,"},{"line_number":234,"context_line":"you did!"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":".. code-block:: sql"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ff0f0b1f_40da5b17","line":234,"in_reply_to":"ff0f0b1f_7d24ecc6","updated":"2017-05-18 12:01:03.000000000","message":"Fair. I was feeling punchy when I wrote it.","commit_id":"81536c71c5f9b49e198acdfd897ce14070918348"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"377325af65326322a67e87962176ed5d82d40ae6","unresolved":false,"context_lines":[{"line_number":48,"context_line":"service-name"},{"line_number":49,"context_line":"  Arbitrary name given to the service by the deployer. Optional. In all except"},{"line_number":50,"context_line":"  the most extreme cases this should never be needed and its use as a"},{"line_number":51,"context_line":"  meaningful identified is strongly discouraged."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"endpoint-override"},{"line_number":54,"context_line":"  An endpoint for the service that the user has procurred from some other"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ff0f0b1f_0e73504f","line":51,"updated":"2017-05-19 11:53:48.000000000","message":"nit: identifier?","commit_id":"a3a8bc4b8305b79aba27b3823430d9da466bcb5c"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"79a614ee8b18246efbe079e35efe0dcc0a77fa12","unresolved":false,"context_lines":[{"line_number":48,"context_line":"service-name"},{"line_number":49,"context_line":"  Arbitrary name given to the service by the deployer. Optional. In all except"},{"line_number":50,"context_line":"  the most extreme cases this should never be needed and its use as a"},{"line_number":51,"context_line":"  meaningful identified is strongly discouraged."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"endpoint-override"},{"line_number":54,"context_line":"  An endpoint for the service that the user has procurred from some other"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ff0f0b1f_3044321b","line":51,"in_reply_to":"ff0f0b1f_0e73504f","updated":"2017-05-19 12:16:51.000000000","message":"Done","commit_id":"a3a8bc4b8305b79aba27b3823430d9da466bcb5c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"377325af65326322a67e87962176ed5d82d40ae6","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  source. (Optional, defaults to omitted)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"At the end of the discovery process, the user should know the"},{"line_number":58,"context_line":"service-endpoint: The endpoint to use as the root of the service."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"In the description that follows, each of the above inputs and outputs will"},{"line_number":61,"context_line":"be referred to like ``{endpoint-override}`` so that it is clear whether a user"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ff0f0b1f_ee8ffc20","line":58,"updated":"2017-05-19 11:53:48.000000000","message":"do we want to talk about endpoint being NOT versioned here?","commit_id":"a3a8bc4b8305b79aba27b3823430d9da466bcb5c"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"79a614ee8b18246efbe079e35efe0dcc0a77fa12","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  source. (Optional, defaults to omitted)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"At the end of the discovery process, the user should know the"},{"line_number":58,"context_line":"service-endpoint: The endpoint to use as the root of the service."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"In the description that follows, each of the above inputs and outputs will"},{"line_number":61,"context_line":"be referred to like ``{endpoint-override}`` so that it is clear whether a user"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ff0f0b1f_90053ec5","line":58,"in_reply_to":"ff0f0b1f_ee8ffc20","updated":"2017-05-19 12:16:51.000000000","message":"Not in this patch, because we\u0027d have to talk about version discovery. There is a follow-up patch that adds all the stuff about version discovery and covers versioned and unversioned endpoints.","commit_id":"a3a8bc4b8305b79aba27b3823430d9da466bcb5c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"377325af65326322a67e87962176ed5d82d40ae6","unresolved":false,"context_lines":[{"line_number":219,"context_line":"regions that were found."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"The remaining ``{candidate-endpoints}`` match the request. If there is more"},{"line_number":222,"context_line":"than one of them, just use the first."},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"#. If v2, the ``{catalog-endpoint}`` is the value of ``{interface}URL``."},{"line_number":225,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ff0f0b1f_ce92f84b","line":222,"updated":"2017-05-19 11:53:48.000000000","message":"I wonder how it\u0027s even possible.","commit_id":"a3a8bc4b8305b79aba27b3823430d9da466bcb5c"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"79a614ee8b18246efbe079e35efe0dcc0a77fa12","unresolved":false,"context_lines":[{"line_number":219,"context_line":"regions that were found."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"The remaining ``{candidate-endpoints}`` match the request. If there is more"},{"line_number":222,"context_line":"than one of them, just use the first."},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"#. If v2, the ``{catalog-endpoint}`` is the value of ``{interface}URL``."},{"line_number":225,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ff0f0b1f_10ddae6f","line":222,"in_reply_to":"ff0f0b1f_ce92f84b","updated":"2017-05-19 12:16:51.000000000","message":"If the user did not specify enough filters. Like - they left out region-name in a multi-region cloud.\n\nWe should probably add a note to emit a warning - but unfortunately keystoneauth currently has this behavior, to return the endpoints[0] - so changing it there would possibly break many things.","commit_id":"a3a8bc4b8305b79aba27b3823430d9da466bcb5c"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"356693f57bb6f81a280f45c8b77f3583ed292ebc","unresolved":false,"context_lines":[{"line_number":8,"context_line":"from the Service Catalog."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":".. note:: The process described in this document is compatible with all known"},{"line_number":11,"context_line":"          OpenStack clouds and also matches the behavior of the python library"},{"line_number":12,"context_line":"          keystoneauth, which is the reference implementation of authenticating"},{"line_number":13,"context_line":"          with keystone and consuming information from the catalog. In some"},{"line_number":14,"context_line":"          places an argument can be made for a different process, but given"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ff0f0b1f_f10ab1cf","line":11,"updated":"2017-05-24 17:51:07.000000000","message":"is it worthwhile saying public here?","commit_id":"04be4479d75633fb87a94937179a69dd6c76b8ae"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"356693f57bb6f81a280f45c8b77f3583ed292ebc","unresolved":false,"context_lines":[{"line_number":262,"context_line":"regions that were found."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"The remaining ``{candidate-endpoints}`` match the request. If there is more"},{"line_number":265,"context_line":"than one of them, just use the first, but emit a warning to the user that more"},{"line_number":266,"context_line":"than one endpoint was left. If ``{be-strict}`` has been requested, return an"},{"line_number":267,"context_line":"error instead with information about each of the endpoints left in the list."},{"line_number":268,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ff0f0b1f_91e935e7","line":265,"updated":"2017-05-24 17:51:07.000000000","message":"\"just\" is just^wmerely^simply redundant here","commit_id":"04be4479d75633fb87a94937179a69dd6c76b8ae"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"11b0f29add6f5e6e1de838673a784b35727c410c","unresolved":false,"context_lines":[{"line_number":62,"context_line":"          by default would be preferred."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"interface"},{"line_number":65,"context_line":"  Which API interface, such as ``public``, ``internal`` or ``admin`` that"},{"line_number":66,"context_line":"  the user wants to use. In some older OpenStack usage this concept was known"},{"line_number":67,"context_line":"  as ``endpoint-type``. (Optional, defaults to ``public``)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"service-name"},{"line_number":70,"context_line":"  Arbitrary name given to the service by the deployer. Optional."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff0f0b1f_c548f2b3","line":67,"range":{"start_line":65,"start_character":0,"end_line":67,"end_character":58},"updated":"2017-05-25 08:33:15.000000000","message":"So, after Pavlo\u0027s email, I think we need to support a prioritized list of endpoints. E.g. interactions between services would request [\"internal\", \"public\"], which means \"take internal, if it exists, otherwise take public\". This will make services do the right thing based on what catalog provides, not an explicit (and verbose) configuration in every one of the. WDYT?","commit_id":"2dde2b33752b6d16a7e1db05ae4b4bdbb47c641f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"029d9b799659fdeffbcd2b476229d33e9b8dc31d","unresolved":false,"context_lines":[{"line_number":62,"context_line":"          by default would be preferred."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"interface"},{"line_number":65,"context_line":"  Which API interface, such as ``public``, ``internal`` or ``admin`` that"},{"line_number":66,"context_line":"  the user wants to use. In some older OpenStack usage this concept was known"},{"line_number":67,"context_line":"  as ``endpoint-type``. (Optional, defaults to ``public``)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"service-name"},{"line_number":70,"context_line":"  Arbitrary name given to the service by the deployer. Optional."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff0f0b1f_fdaf0329","line":67,"range":{"start_line":65,"start_character":0,"end_line":67,"end_character":58},"in_reply_to":"ff0f0b1f_bad8711e","updated":"2017-05-25 15:51:35.000000000","message":"Dmitry: Yes - I think [\"internal\", \"public\"] as a general input to the process is a great idea. I\u0027ll write up an update with that in mind.\nMichael: I think that\u0027s also a good point. If we allow a range of interfaces, it\u0027s important to be able to know what interface you got. Sort of like with versions - if I say \"give me the latest\" or \"give me whatever the catalog has\" - I still need to know which version I wound up with.\n\nThanks both of you- great feedback!","commit_id":"2dde2b33752b6d16a7e1db05ae4b4bdbb47c641f"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"b435714aa6d7931dfe483d4e7bc7250304d24ec5","unresolved":false,"context_lines":[{"line_number":62,"context_line":"          by default would be preferred."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"interface"},{"line_number":65,"context_line":"  Which API interface, such as ``public``, ``internal`` or ``admin`` that"},{"line_number":66,"context_line":"  the user wants to use. In some older OpenStack usage this concept was known"},{"line_number":67,"context_line":"  as ``endpoint-type``. (Optional, defaults to ``public``)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"service-name"},{"line_number":70,"context_line":"  Arbitrary name given to the service by the deployer. Optional."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff0f0b1f_bad8711e","line":67,"range":{"start_line":65,"start_character":0,"end_line":67,"end_character":58},"in_reply_to":"ff0f0b1f_c548f2b3","updated":"2017-05-25 15:16:38.000000000","message":"i think this makes sense, it should at least be known in what order the results will be returned. otoh, does it matter if the endpoints are labelled with their corresponding interface type(eg public, etc)?","commit_id":"2dde2b33752b6d16a7e1db05ae4b4bdbb47c641f"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"28a7f8fd9dceee36dccfbbc78f26b33e308f22d3","unresolved":false,"context_lines":[{"line_number":62,"context_line":"          by default would be preferred."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"interface"},{"line_number":65,"context_line":"  Which API interface, such as ``public``, ``internal`` or ``admin`` that"},{"line_number":66,"context_line":"  the user wants to use. In some older OpenStack usage this concept was known"},{"line_number":67,"context_line":"  as ``endpoint-type``. (Optional, defaults to ``public``)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"service-name"},{"line_number":70,"context_line":"  Arbitrary name given to the service by the deployer. Optional."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff0f0b1f_6e08d7d8","line":67,"range":{"start_line":65,"start_character":0,"end_line":67,"end_character":58},"in_reply_to":"ff0f0b1f_fdaf0329","updated":"2017-05-25 17:06:46.000000000","message":"This is a good enhancement. ++","commit_id":"2dde2b33752b6d16a7e1db05ae4b4bdbb47c641f"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"28a7f8fd9dceee36dccfbbc78f26b33e308f22d3","unresolved":false,"context_lines":[{"line_number":69,"context_line":"service-name"},{"line_number":70,"context_line":"  Arbitrary name given to the service by the deployer. Optional."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":".. note:: In all except the most extreme cases this should never be needed and"},{"line_number":73,"context_line":"          its use as a meaningful identifier by Deployers is strongly"},{"line_number":74,"context_line":"          discouraged. However, the Consumer has no way to otherwise mitigate"},{"line_number":75,"context_line":"          the situation if their Deployer has provided them with a catalog"},{"line_number":76,"context_line":"          where a ``service-name`` must be used, so ``service-name`` must be"},{"line_number":77,"context_line":"          accepted as input."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"service-id"},{"line_number":80,"context_line":"  Unique identifier for an endpoint in the catalog. Optional."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff0f0b1f_0e203b49","line":77,"range":{"start_line":72,"start_character":10,"end_line":77,"end_character":28},"updated":"2017-05-25 17:06:46.000000000","message":"Any cases like \"in the most extreme\" I would expect \"{be-strict}\" will prevent use. Suggest making strict only cover the most correct forms, service-name is not a \"most correct form\", replicate for other cases like this.","commit_id":"2dde2b33752b6d16a7e1db05ae4b4bdbb47c641f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"7fc78f197e0d2236c81e1ca78aeed38c8a35b1ac","unresolved":false,"context_lines":[{"line_number":69,"context_line":"service-name"},{"line_number":70,"context_line":"  Arbitrary name given to the service by the deployer. Optional."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":".. note:: In all except the most extreme cases this should never be needed and"},{"line_number":73,"context_line":"          its use as a meaningful identifier by Deployers is strongly"},{"line_number":74,"context_line":"          discouraged. However, the Consumer has no way to otherwise mitigate"},{"line_number":75,"context_line":"          the situation if their Deployer has provided them with a catalog"},{"line_number":76,"context_line":"          where a ``service-name`` must be used, so ``service-name`` must be"},{"line_number":77,"context_line":"          accepted as input."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"service-id"},{"line_number":80,"context_line":"  Unique identifier for an endpoint in the catalog. Optional."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff0f0b1f_b41640f1","line":77,"range":{"start_line":72,"start_character":10,"end_line":77,"end_character":28},"in_reply_to":"ff0f0b1f_0e203b49","updated":"2017-05-25 18:21:54.000000000","message":"++","commit_id":"2dde2b33752b6d16a7e1db05ae4b4bdbb47c641f"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"28a7f8fd9dceee36dccfbbc78f26b33e308f22d3","unresolved":false,"context_lines":[{"line_number":231,"context_line":"#. If ``{service-id}`` was given and the objects remaining have a ``id``"},{"line_number":232,"context_line":"   field, keep only the ones where ``id`` matches ``{service-id}``."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":".. note:: Catalogs from Keystone v2 do not have an id field."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"The list of remaining objects are the ``{candidate-catalog-objects}``. If there"},{"line_number":237,"context_line":"are no endpoints, return an error that there are no endpoints matching"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff0f0b1f_0e727b7d","line":234,"range":{"start_line":234,"start_character":54,"end_line":234,"end_character":60},"updated":"2017-05-25 17:06:46.000000000","message":"add \"an error will be raised indicating catalog version is incompatible with service-id specification\" or similar. Include in any cases where v2 or v3 would fundamentally not work in your algorithm description.","commit_id":"2dde2b33752b6d16a7e1db05ae4b4bdbb47c641f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"7fc78f197e0d2236c81e1ca78aeed38c8a35b1ac","unresolved":false,"context_lines":[{"line_number":231,"context_line":"#. If ``{service-id}`` was given and the objects remaining have a ``id``"},{"line_number":232,"context_line":"   field, keep only the ones where ``id`` matches ``{service-id}``."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":".. note:: Catalogs from Keystone v2 do not have an id field."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"The list of remaining objects are the ``{candidate-catalog-objects}``. If there"},{"line_number":237,"context_line":"are no endpoints, return an error that there are no endpoints matching"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff0f0b1f_f49dd857","line":234,"range":{"start_line":234,"start_character":54,"end_line":234,"end_character":60},"in_reply_to":"ff0f0b1f_0e727b7d","updated":"2017-05-25 18:21:54.000000000","message":"Will update the note here- I added one already above indicating name and id are errors with strict. For ksa compat we have to ignore missing without strict.","commit_id":"2dde2b33752b6d16a7e1db05ae4b4bdbb47c641f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"830d76db4f6684cb2c8f8c63a77444c4a3c1d8ba","unresolved":false,"context_lines":[{"line_number":15,"context_line":"          process, but given keystoneauth\u0027s wide use and reference nature,"},{"line_number":16,"context_line":"          we\u0027ve chosen to keep backwards compatibility with keystoneauth\u0027s"},{"line_number":17,"context_line":"          behavior rather than design a new perfect process. keystoneauth"},{"line_number":18,"context_line":"          itself notes interally places where it kept backwards compatibility"},{"line_number":19,"context_line":"          with the libraries that predate it. Notes have been left about"},{"line_number":20,"context_line":"          stricter behavior a library or framework could choose to impose."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_22c19d55","line":18,"range":{"start_line":18,"start_character":23,"end_line":18,"end_character":32},"updated":"2017-05-30 19:05:10.000000000","message":"internally","commit_id":"a8f395706eeec5ee0859279b163357b65c537000"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"d34ae2f5ffe9965c0594bed14514a76e4e7f0f3b","unresolved":false,"context_lines":[{"line_number":15,"context_line":"          process, but given keystoneauth\u0027s wide use and reference nature,"},{"line_number":16,"context_line":"          we\u0027ve chosen to keep backwards compatibility with keystoneauth\u0027s"},{"line_number":17,"context_line":"          behavior rather than design a new perfect process. keystoneauth"},{"line_number":18,"context_line":"          itself notes interally places where it kept backwards compatibility"},{"line_number":19,"context_line":"          with the libraries that predate it. Notes have been left about"},{"line_number":20,"context_line":"          stricter behavior a library or framework could choose to impose."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_65161bf4","line":18,"range":{"start_line":18,"start_character":23,"end_line":18,"end_character":32},"in_reply_to":"df140735_22c19d55","updated":"2017-06-02 13:17:01.000000000","message":"Done","commit_id":"a8f395706eeec5ee0859279b163357b65c537000"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"830d76db4f6684cb2c8f8c63a77444c4a3c1d8ba","unresolved":false,"context_lines":[{"line_number":64,"context_line":"interface"},{"line_number":65,"context_line":"  Which API interface, such as ``public``, ``internal`` or ``admin`` that"},{"line_number":66,"context_line":"  the user wants to use. In some older OpenStack usage this concept was known"},{"line_number":67,"context_line":"  as ``endpoint-type``. A user can also express a list of interfaces they find"},{"line_number":68,"context_line":"  acceptable in the order of their preference."},{"line_number":69,"context_line":"  (Optional, defaults to ``public``)"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_028339ce","line":67,"range":{"start_line":67,"start_character":48,"end_line":67,"end_character":54},"updated":"2017-05-30 19:05:10.000000000","message":"Oh?  Where/how?","commit_id":"a8f395706eeec5ee0859279b163357b65c537000"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"d34ae2f5ffe9965c0594bed14514a76e4e7f0f3b","unresolved":false,"context_lines":[{"line_number":64,"context_line":"interface"},{"line_number":65,"context_line":"  Which API interface, such as ``public``, ``internal`` or ``admin`` that"},{"line_number":66,"context_line":"  the user wants to use. In some older OpenStack usage this concept was known"},{"line_number":67,"context_line":"  as ``endpoint-type``. A user can also express a list of interfaces they find"},{"line_number":68,"context_line":"  acceptable in the order of their preference."},{"line_number":69,"context_line":"  (Optional, defaults to ``public``)"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_45d5571b","line":67,"range":{"start_line":67,"start_character":48,"end_line":67,"end_character":54},"in_reply_to":"df140735_028339ce","updated":"2017-06-02 13:17:01.000000000","message":"Done","commit_id":"a8f395706eeec5ee0859279b163357b65c537000"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"830d76db4f6684cb2c8f8c63a77444c4a3c1d8ba","unresolved":false,"context_lines":[{"line_number":117,"context_line":"#. Authenticate to keystone at the ``{auth-url}``, retreiving a ``token``"},{"line_number":118,"context_line":"   which contains the ``{service-catalog}``."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"#. Retrieve ``{catalog-endpoint}`` from the ``{service-catalog}`` given"},{"line_number":121,"context_line":"   ``{service-type}``, ``{interface}``, ``{service-name}`` and"},{"line_number":122,"context_line":"   ``{region-name}``. (see :ref:`endpoint-from-catalog`)"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_82e4e9ad","line":120,"updated":"2017-05-30 19:05:10.000000000","message":"\"...given some combination of...\"","commit_id":"a8f395706eeec5ee0859279b163357b65c537000"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"d34ae2f5ffe9965c0594bed14514a76e4e7f0f3b","unresolved":false,"context_lines":[{"line_number":117,"context_line":"#. Authenticate to keystone at the ``{auth-url}``, retreiving a ``token``"},{"line_number":118,"context_line":"   which contains the ``{service-catalog}``."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"#. Retrieve ``{catalog-endpoint}`` from the ``{service-catalog}`` given"},{"line_number":121,"context_line":"   ``{service-type}``, ``{interface}``, ``{service-name}`` and"},{"line_number":122,"context_line":"   ``{region-name}``. (see :ref:`endpoint-from-catalog`)"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_25da634b","line":120,"in_reply_to":"df140735_82e4e9ad","updated":"2017-06-02 13:17:01.000000000","message":"Done","commit_id":"a8f395706eeec5ee0859279b163357b65c537000"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"830d76db4f6684cb2c8f8c63a77444c4a3c1d8ba","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"#. Retrieve ``{catalog-endpoint}`` from the ``{service-catalog}`` given"},{"line_number":121,"context_line":"   ``{service-type}``, ``{interface}``, ``{service-name}`` and"},{"line_number":122,"context_line":"   ``{region-name}``. (see :ref:`endpoint-from-catalog`)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":".. _endpoint-from-catalog:"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_42c7f113","line":122,"updated":"2017-05-30 19:05:10.000000000","message":"and ``{service-id}``","commit_id":"a8f395706eeec5ee0859279b163357b65c537000"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"d34ae2f5ffe9965c0594bed14514a76e4e7f0f3b","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"#. Retrieve ``{catalog-endpoint}`` from the ``{service-catalog}`` given"},{"line_number":121,"context_line":"   ``{service-type}``, ``{interface}``, ``{service-name}`` and"},{"line_number":122,"context_line":"   ``{region-name}``. (see :ref:`endpoint-from-catalog`)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":".. _endpoint-from-catalog:"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_05dbdf4e","line":122,"in_reply_to":"df140735_42c7f113","updated":"2017-06-02 13:17:01.000000000","message":"Done","commit_id":"a8f395706eeec5ee0859279b163357b65c537000"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"830d76db4f6684cb2c8f8c63a77444c4a3c1d8ba","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"The ``{service-catalog}`` can be found in the ``token`` returned from"},{"line_number":130,"context_line":"keystone authentication. If v3 auth is used, the catalog will be in"},{"line_number":131,"context_line":"``.[\u0027token\u0027][\u0027catalog\u0027]`` and if v2 auth is used it will be in"},{"line_number":132,"context_line":"``.[\u0027access\u0027][\u0027serviceCatalog\u0027]``."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"In both cases, the catalog content itself is a list of objects. Each object has"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_029fb903","line":131,"range":{"start_line":131,"start_character":2,"end_line":131,"end_character":3},"updated":"2017-05-30 19:05:10.000000000","message":"These dots-followed-by-brackets don\u0027t make sense to me.  Are we getting attrs or dict members?","commit_id":"a8f395706eeec5ee0859279b163357b65c537000"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"d34ae2f5ffe9965c0594bed14514a76e4e7f0f3b","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"The ``{service-catalog}`` can be found in the ``token`` returned from"},{"line_number":130,"context_line":"keystone authentication. If v3 auth is used, the catalog will be in"},{"line_number":131,"context_line":"``.[\u0027token\u0027][\u0027catalog\u0027]`` and if v2 auth is used it will be in"},{"line_number":132,"context_line":"``.[\u0027access\u0027][\u0027serviceCatalog\u0027]``."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"In both cases, the catalog content itself is a list of objects. Each object has"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_65ebbbdb","line":131,"range":{"start_line":131,"start_character":2,"end_line":131,"end_character":3},"in_reply_to":"df140735_029fb903","updated":"2017-06-02 13:17:01.000000000","message":"Whoops. Was attempting to use jquery-like syntax. I\u0027ll just rewrite this bit.","commit_id":"a8f395706eeec5ee0859279b163357b65c537000"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"830d76db4f6684cb2c8f8c63a77444c4a3c1d8ba","unresolved":false,"context_lines":[{"line_number":150,"context_line":"  Matches ``{service-id}``"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"The list of endpoints has a different format depending on whether v2 or v3 auth"},{"line_number":153,"context_line":"was used. For both versions each endpoint object has a ``region`` attribute,"},{"line_number":154,"context_line":"which should match ``{region-name}`` if one was given."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"In v2 auth the endpoint object has three attributes ``publicURL``,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_c2b1c191","line":153,"range":{"start_line":153,"start_character":33,"end_line":153,"end_character":48},"updated":"2017-05-30 19:05:10.000000000","message":"Wouldn\u0027t hurt my feelings to have (a pointer to) the class representing an \"endpoint object\".\n\nFor that matter, it would be neat to include permalinks into the ksa code throughout this document.  I get that you\u0027re describing a generic algorithm, but since ksa is the \"reference architecture,\" it\u0027d be nice to be able to reference it easily from here.","commit_id":"a8f395706eeec5ee0859279b163357b65c537000"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"d34ae2f5ffe9965c0594bed14514a76e4e7f0f3b","unresolved":false,"context_lines":[{"line_number":150,"context_line":"  Matches ``{service-id}``"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"The list of endpoints has a different format depending on whether v2 or v3 auth"},{"line_number":153,"context_line":"was used. For both versions each endpoint object has a ``region`` attribute,"},{"line_number":154,"context_line":"which should match ``{region-name}`` if one was given."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"In v2 auth the endpoint object has three attributes ``publicURL``,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_65ba9b0a","line":153,"range":{"start_line":153,"start_character":33,"end_line":153,"end_character":48},"in_reply_to":"df140735_c2b1c191","updated":"2017-06-02 13:17:01.000000000","message":"AH - so - in this case, when I say \"object\" - I mean \"JSON Object\". (was trying to use json words instead of python words)\n\nLemme add a note about that.","commit_id":"a8f395706eeec5ee0859279b163357b65c537000"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"0221034edf648e14fdc9007b5e37cbebe614662d","unresolved":false,"context_lines":[{"line_number":81,"context_line":"          accepted as input. If ``{be-strict}`` has been requested, a user"},{"line_number":82,"context_line":"          supplying ``{service-name}`` should be an error."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"service-id"},{"line_number":85,"context_line":"  Unique identifier for an endpoint in the catalog. Optional."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":".. note:: On clouds with well-formed catalogs ``service-id`` should never be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_ceed9226","line":84,"updated":"2017-06-11 19:06:30.000000000","message":"A related question, this document discusses the general process, but uses keystoneauth as reference implementation. What\u0027s the preferred way to get an endpoint from keystoneauth then? If it is through adapter\u0027s get_endpoint, I think there is no way to pass service_id to it (or is there? or is it going to be introduced?). It is present in ServiceCatalog classes though, if constructed manually.","commit_id":"258e48c3062ff074b2087f34d7ddb53f0db0b2c1"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"0221034edf648e14fdc9007b5e37cbebe614662d","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":"For each remaining endpoint in ``{candidate-endpoints}``:"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"#. If ``{region_name}`` was given and does not match either of ``region``"},{"line_number":289,"context_line":"   or ``region_id``, discard the endpoint."},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"If there are no remaining endpoints, return an error that there are no"},{"line_number":292,"context_line":"endpoints matching ``{region_name}``, preferrably including the list of"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f231b9d_ae5936ff","line":289,"range":{"start_line":288,"start_character":63,"end_line":289,"end_character":19},"updated":"2017-06-11 19:06:30.000000000","message":"nit - should it be just region? Can\u0027t see region_id described above","commit_id":"258e48c3062ff074b2087f34d7ddb53f0db0b2c1"}]}
