)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     587cf2e1 (Merge \"Remove the sample .conf file\")"},{"line_number":2,"context_line":"Author:     Dolph Mathews \u003cdolph.mathews@gmail.com\u003e"},{"line_number":3,"context_line":"AuthorDate: 2018-04-24 14:10:11 +0000"},{"line_number":4,"context_line":"Commit:     Lance Bragstad \u003clbragstad@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-04-24 14:11:17 +0000"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f6a8fd7_f665ecb5","line":2,"range":{"start_line":2,"start_character":12,"end_line":2,"end_character":51},"updated":"2018-04-24 19:02:37.000000000","message":"Sort of confused how you did this but I guess it works ;)","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     587cf2e1 (Merge \"Remove the sample .conf file\")"},{"line_number":2,"context_line":"Author:     Dolph Mathews \u003cdolph.mathews@gmail.com\u003e"},{"line_number":3,"context_line":"AuthorDate: 2018-04-24 14:10:11 +0000"},{"line_number":4,"context_line":"Commit:     Lance Bragstad \u003clbragstad@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-04-24 14:11:17 +0000"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f6a8fd7_0aa4f4b8","line":2,"range":{"start_line":2,"start_character":12,"end_line":2,"end_character":51},"in_reply_to":"9f6a8fd7_f665ecb5","updated":"2018-04-24 20:28:22.000000000","message":"How I set Dolph as the author?","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"}],"doc/source/contributor/service-catalog.rst":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The OpenStack keystone service catalog allows API clients to dynamically"},{"line_number":19,"context_line":"discover and navigate to cloud services. The service catalog may differ from"},{"line_number":20,"context_line":"deployment-to-deployment, user-to-user, and tenant-to-tenant."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"The service catalog is the first hurdle that API consumers will need to"},{"line_number":23,"context_line":"understand after successfully authenticating with Keystone, making it a"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_1b2d29a7","line":20,"range":{"start_line":20,"start_character":44,"end_line":20,"end_character":61},"updated":"2018-04-24 19:02:37.000000000","message":"Tenant in the keystone v2 sense? Or tenant in the nova sense? Either way we can\u0027t really use the word tenant any more.","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The OpenStack keystone service catalog allows API clients to dynamically"},{"line_number":19,"context_line":"discover and navigate to cloud services. The service catalog may differ from"},{"line_number":20,"context_line":"deployment-to-deployment, user-to-user, and tenant-to-tenant."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"The service catalog is the first hurdle that API consumers will need to"},{"line_number":23,"context_line":"understand after successfully authenticating with Keystone, making it a"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_ca827c00","line":20,"range":{"start_line":20,"start_character":44,"end_line":20,"end_character":61},"in_reply_to":"9f6a8fd7_1b2d29a7","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"4c2f0100efcb5d00b8020bdfb2851042b0bda0ec","unresolved":false,"context_lines":[{"line_number":34,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"The following is an example service catalog. It actually excludes several"},{"line_number":37,"context_line":"common attributes such as ids, which are of no concern to end users,"},{"line_number":38,"context_line":"region_ids, which are a bit out of scope for this topic, and enabled, which is"},{"line_number":39,"context_line":"literally always true for end users."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_1b7529fa","line":37,"range":{"start_line":37,"start_character":26,"end_line":37,"end_character":29},"updated":"2018-04-24 18:41:07.000000000","message":"could we make these literals or similar to stand out like dolph\u0027s blog does?","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":34,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"The following is an example service catalog. It actually excludes several"},{"line_number":37,"context_line":"common attributes such as ids, which are of no concern to end users,"},{"line_number":38,"context_line":"region_ids, which are a bit out of scope for this topic, and enabled, which is"},{"line_number":39,"context_line":"literally always true for end users."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_aaa06891","line":37,"range":{"start_line":37,"start_character":26,"end_line":37,"end_character":29},"in_reply_to":"9f6a8fd7_1b7529fa","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":36,"context_line":"The following is an example service catalog. It actually excludes several"},{"line_number":37,"context_line":"common attributes such as ids, which are of no concern to end users,"},{"line_number":38,"context_line":"region_ids, which are a bit out of scope for this topic, and enabled, which is"},{"line_number":39,"context_line":"literally always true for end users."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"This service catalog contains just one service, \"Keystone\", which is accessible"},{"line_number":42,"context_line":"via a single endpoint URL:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_b60a141d","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":9},"updated":"2018-04-24 19:02:37.000000000","message":"Using this word gives the impression that this is personal commentary. These are official docs, not a blog post, so leave it out.","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":36,"context_line":"The following is an example service catalog. It actually excludes several"},{"line_number":37,"context_line":"common attributes such as ids, which are of no concern to end users,"},{"line_number":38,"context_line":"region_ids, which are a bit out of scope for this topic, and enabled, which is"},{"line_number":39,"context_line":"literally always true for end users."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"This service catalog contains just one service, \"Keystone\", which is accessible"},{"line_number":42,"context_line":"via a single endpoint URL:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_0abb94c4","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":9},"in_reply_to":"9f6a8fd7_b60a141d","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":51,"context_line":"               \"endpoints\": ["},{"line_number":52,"context_line":"                   {"},{"line_number":53,"context_line":"                       \"interface\": \"public\","},{"line_number":54,"context_line":"                       \"url\": \"https://identity.example.com:35357/\""},{"line_number":55,"context_line":"                   }"},{"line_number":56,"context_line":"               ]"},{"line_number":57,"context_line":"           }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_d62a287d","line":54,"range":{"start_line":54,"start_character":60,"end_line":54,"end_character":65},"updated":"2018-04-24 19:02:37.000000000","message":"5000","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":51,"context_line":"               \"endpoints\": ["},{"line_number":52,"context_line":"                   {"},{"line_number":53,"context_line":"                       \"interface\": \"public\","},{"line_number":54,"context_line":"                       \"url\": \"https://identity.example.com:35357/\""},{"line_number":55,"context_line":"                   }"},{"line_number":56,"context_line":"               ]"},{"line_number":57,"context_line":"           }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_6aa6d0ad","line":54,"range":{"start_line":54,"start_character":60,"end_line":54,"end_character":65},"in_reply_to":"9f6a8fd7_d62a287d","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"4c2f0100efcb5d00b8020bdfb2851042b0bda0ec","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"In addition to the related endpoints, there are two attributes of services that"},{"line_number":75,"context_line":"important to end users:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Names"},{"line_number":78,"context_line":"-----"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"* ``name`` (string): user-facing name of the service"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_7b53056c","line":78,"range":{"start_line":76,"start_character":0,"end_line":78,"end_character":5},"updated":"2018-04-24 18:41:07.000000000","message":"This heading renders a bit weird, do we need it?","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"In addition to the related endpoints, there are two attributes of services that"},{"line_number":75,"context_line":"important to end users:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Names"},{"line_number":78,"context_line":"-----"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"* ``name`` (string): user-facing name of the service"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_aad868ee","line":78,"range":{"start_line":76,"start_character":0,"end_line":78,"end_character":5},"in_reply_to":"9f6a8fd7_7b53056c","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"4c2f0100efcb5d00b8020bdfb2851042b0bda0ec","unresolved":false,"context_lines":[{"line_number":84,"context_line":"\"Keystone\" or maybe \"Brand X Public Cloud Identity Service\". Deployers should"},{"line_number":85,"context_line":"be free to rename, and therefore rebrand, a service at will."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Types"},{"line_number":88,"context_line":"-----"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* ``type`` (string): describes the API implemented by the service. The"},{"line_number":91,"context_line":"  following values are recognized within the OpenStack ecosystem: ``compute``,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_1b4e89c0","line":88,"range":{"start_line":87,"start_character":0,"end_line":88,"end_character":5},"updated":"2018-04-24 18:41:07.000000000","message":"same as above","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":84,"context_line":"\"Keystone\" or maybe \"Brand X Public Cloud Identity Service\". Deployers should"},{"line_number":85,"context_line":"be free to rename, and therefore rebrand, a service at will."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Types"},{"line_number":88,"context_line":"-----"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* ``type`` (string): describes the API implemented by the service. The"},{"line_number":91,"context_line":"  following values are recognized within the OpenStack ecosystem: ``compute``,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_0af39475","line":88,"range":{"start_line":87,"start_character":0,"end_line":88,"end_character":5},"in_reply_to":"9f6a8fd7_1b4e89c0","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":87,"context_line":"Types"},{"line_number":88,"context_line":"-----"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* ``type`` (string): describes the API implemented by the service. The"},{"line_number":91,"context_line":"  following values are recognized within the OpenStack ecosystem: ``compute``,"},{"line_number":92,"context_line":"  ``image``, ``ec2``, ``identity``, ``volume``, ``network``. To support"},{"line_number":93,"context_line":"  non-core and future projects, the value should not be validated against this"},{"line_number":94,"context_line":"  list."},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_56437842","line":92,"range":{"start_line":90,"start_character":67,"end_line":92,"end_character":61},"updated":"2018-04-24 19:02:37.000000000","message":"This is incredibly outdated","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":87,"context_line":"Types"},{"line_number":88,"context_line":"-----"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* ``type`` (string): describes the API implemented by the service. The"},{"line_number":91,"context_line":"  following values are recognized within the OpenStack ecosystem: ``compute``,"},{"line_number":92,"context_line":"  ``image``, ``ec2``, ``identity``, ``volume``, ``network``. To support"},{"line_number":93,"context_line":"  non-core and future projects, the value should not be validated against this"},{"line_number":94,"context_line":"  list."},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_8acec460","line":92,"range":{"start_line":90,"start_character":67,"end_line":92,"end_character":61},"in_reply_to":"9f6a8fd7_56437842","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":91,"context_line":"  following values are recognized within the OpenStack ecosystem: ``compute``,"},{"line_number":92,"context_line":"  ``image``, ``ec2``, ``identity``, ``volume``, ``network``. To support"},{"line_number":93,"context_line":"  non-core and future projects, the value should not be validated against this"},{"line_number":94,"context_line":"  list."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"This should not convey the version of the API implemented by the service (as in"},{"line_number":97,"context_line":"Cinder\u0027s ``volumev2`` service type) because both the ``volume`` service and"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_f67bac88","line":94,"updated":"2018-04-24 19:02:37.000000000","message":"A reference to and description of the service-types-authority would be good here\n\nhttps://service-types.openstack.org/\nhttps://specs.openstack.org/openstack/service-types-authority/","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":91,"context_line":"  following values are recognized within the OpenStack ecosystem: ``compute``,"},{"line_number":92,"context_line":"  ``image``, ``ec2``, ``identity``, ``volume``, ``network``. To support"},{"line_number":93,"context_line":"  non-core and future projects, the value should not be validated against this"},{"line_number":94,"context_line":"  list."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"This should not convey the version of the API implemented by the service (as in"},{"line_number":97,"context_line":"Cinder\u0027s ``volumev2`` service type) because both the ``volume`` service and"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_aaf7088b","line":94,"in_reply_to":"9f6a8fd7_f67bac88","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Each service should have one or more related endpoints. An endpoint is"},{"line_number":109,"context_line":"essentially a base URL for an API, along with some metadata about the endpoint"},{"line_number":110,"context_line":"itself and represent URL endpoints for OpenStack web services."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Interfaces"},{"line_number":113,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_b671b4aa","line":110,"range":{"start_line":110,"start_character":11,"end_line":110,"end_character":20},"updated":"2018-04-24 19:02:37.000000000","message":"This reads funny, should it be \u0027represents\u0027?","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Each service should have one or more related endpoints. An endpoint is"},{"line_number":109,"context_line":"essentially a base URL for an API, along with some metadata about the endpoint"},{"line_number":110,"context_line":"itself and represent URL endpoints for OpenStack web services."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Interfaces"},{"line_number":113,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_4af2ec9b","line":110,"range":{"start_line":110,"start_character":11,"end_line":110,"end_character":20},"in_reply_to":"9f6a8fd7_b671b4aa","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"4c2f0100efcb5d00b8020bdfb2851042b0bda0ec","unresolved":false,"context_lines":[{"line_number":109,"context_line":"essentially a base URL for an API, along with some metadata about the endpoint"},{"line_number":110,"context_line":"itself and represent URL endpoints for OpenStack web services."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Interfaces"},{"line_number":113,"context_line":"----------"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"* ``interface`` (string): describes the visibility of the endpoint according to"},{"line_number":116,"context_line":"  one of three values (``public``, ``internal``, and ``admin``)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_7b01c537","line":113,"range":{"start_line":112,"start_character":0,"end_line":113,"end_character":10},"updated":"2018-04-24 18:41:07.000000000","message":"same as above","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":109,"context_line":"essentially a base URL for an API, along with some metadata about the endpoint"},{"line_number":110,"context_line":"itself and represent URL endpoints for OpenStack web services."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Interfaces"},{"line_number":113,"context_line":"----------"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"* ``interface`` (string): describes the visibility of the endpoint according to"},{"line_number":116,"context_line":"  one of three values (``public``, ``internal``, and ``admin``)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_4ae3cca4","line":113,"range":{"start_line":112,"start_character":0,"end_line":113,"end_character":10},"in_reply_to":"9f6a8fd7_7b01c537","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":118,"context_line":"**Public** endpoints are intended for consumption by end users, generally on a"},{"line_number":119,"context_line":"publicly available network interface."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"**Internal** endpoints are intended for consumption by end users, generally on"},{"line_number":122,"context_line":"an unmetered internal network interface."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"**Admin** endpoints are intended only for consumption by those needing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_96a35000","line":121,"range":{"start_line":121,"start_character":55,"end_line":121,"end_character":64},"updated":"2018-04-24 19:02:37.000000000","message":"Or service users?","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":118,"context_line":"**Public** endpoints are intended for consumption by end users, generally on a"},{"line_number":119,"context_line":"publicly available network interface."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"**Internal** endpoints are intended for consumption by end users, generally on"},{"line_number":122,"context_line":"an unmetered internal network interface."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"**Admin** endpoints are intended only for consumption by those needing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_0a2e34fa","line":121,"range":{"start_line":121,"start_character":55,"end_line":121,"end_character":64},"in_reply_to":"9f6a8fd7_96a35000","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":124,"context_line":"**Admin** endpoints are intended only for consumption by those needing"},{"line_number":125,"context_line":"administrative access to the service, generally on a secure network interface."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Most services should not provide anything other than a public URL. You might"},{"line_number":128,"context_line":"also think of each interface value as the result of a matrix of use cases:"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"* Public API on a public network: use a public interface."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_36b2844a","line":127,"range":{"start_line":127,"start_character":0,"end_line":127,"end_character":65},"updated":"2018-04-24 19:02:37.000000000","message":"I think it\u0027s common for e.g. nova/neutron/glance/cinder to talk to each other on an internal network","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":124,"context_line":"**Admin** endpoints are intended only for consumption by those needing"},{"line_number":125,"context_line":"administrative access to the service, generally on a secure network interface."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Most services should not provide anything other than a public URL. You might"},{"line_number":128,"context_line":"also think of each interface value as the result of a matrix of use cases:"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"* Public API on a public network: use a public interface."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_ca335c61","line":127,"range":{"start_line":127,"start_character":0,"end_line":127,"end_character":65},"in_reply_to":"9f6a8fd7_36b2844a","updated":"2018-04-24 20:28:22.000000000","message":"That\u0027s true, I can omit this detail.","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"4c2f0100efcb5d00b8020bdfb2851042b0bda0ec","unresolved":false,"context_lines":[{"line_number":127,"context_line":"Most services should not provide anything other than a public URL. You might"},{"line_number":128,"context_line":"also think of each interface value as the result of a matrix of use cases:"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"* Public API on a public network: use a public interface."},{"line_number":131,"context_line":"* Public API on an internal network: use an internal interface."},{"line_number":132,"context_line":"* Privileged API on a public network: unsupported! Use access controls on your"},{"line_number":133,"context_line":"  public endpoint instead."},{"line_number":134,"context_line":"* Privileged API on an internal network: admin interface, but use access"},{"line_number":135,"context_line":"  controls on your public endpoint instead. The notion of a \"privileged API\""},{"line_number":136,"context_line":"  endpoint makes security-conscious developers instantly lazy (security becomes"},{"line_number":137,"context_line":"  someone else\u0027s problem), and is an obvious attack vector if someone were to"},{"line_number":138,"context_line":"  infiltrate your internal network. It also adds more complexity to your API"},{"line_number":139,"context_line":"  architecture which makes documentation, testing, and API evolution that much"},{"line_number":140,"context_line":"  more difficult."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"URLs"},{"line_number":143,"context_line":"----"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_9bb6198a","line":140,"range":{"start_line":130,"start_character":0,"end_line":140,"end_character":17},"updated":"2018-04-24 18:41:07.000000000","message":"Could we break this up with literals/something like dolphs?","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":127,"context_line":"Most services should not provide anything other than a public URL. You might"},{"line_number":128,"context_line":"also think of each interface value as the result of a matrix of use cases:"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"* Public API on a public network: use a public interface."},{"line_number":131,"context_line":"* Public API on an internal network: use an internal interface."},{"line_number":132,"context_line":"* Privileged API on a public network: unsupported! Use access controls on your"},{"line_number":133,"context_line":"  public endpoint instead."},{"line_number":134,"context_line":"* Privileged API on an internal network: admin interface, but use access"},{"line_number":135,"context_line":"  controls on your public endpoint instead. The notion of a \"privileged API\""},{"line_number":136,"context_line":"  endpoint makes security-conscious developers instantly lazy (security becomes"},{"line_number":137,"context_line":"  someone else\u0027s problem), and is an obvious attack vector if someone were to"},{"line_number":138,"context_line":"  infiltrate your internal network. It also adds more complexity to your API"},{"line_number":139,"context_line":"  architecture which makes documentation, testing, and API evolution that much"},{"line_number":140,"context_line":"  more difficult."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"URLs"},{"line_number":143,"context_line":"----"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_aa25c80a","line":140,"range":{"start_line":130,"start_character":0,"end_line":140,"end_character":17},"in_reply_to":"9f6a8fd7_9bb6198a","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"4c2f0100efcb5d00b8020bdfb2851042b0bda0ec","unresolved":false,"context_lines":[{"line_number":139,"context_line":"  architecture which makes documentation, testing, and API evolution that much"},{"line_number":140,"context_line":"  more difficult."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"URLs"},{"line_number":143,"context_line":"----"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"* ``url`` (string): fully qualified URL of the service endpoint"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_fb9ab511","line":143,"range":{"start_line":142,"start_character":0,"end_line":143,"end_character":4},"updated":"2018-04-24 18:41:07.000000000","message":"same as above","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":139,"context_line":"  architecture which makes documentation, testing, and API evolution that much"},{"line_number":140,"context_line":"  more difficult."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"URLs"},{"line_number":143,"context_line":"----"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"* ``url`` (string): fully qualified URL of the service endpoint"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_6aded0da","line":143,"range":{"start_line":142,"start_character":0,"end_line":143,"end_character":4},"in_reply_to":"9f6a8fd7_fb9ab511","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":145,"context_line":"* ``url`` (string): fully qualified URL of the service endpoint"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"This should be unversioned base URL for an API. Good examples include"},{"line_number":148,"context_line":"``https://identity.example.com:35357/`` and ``https://keystone.example.com/``."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Conversely, ``https://identity.example.com:35357/v2.0/`` is an unfortunate"},{"line_number":151,"context_line":"example because it directs all clients to connect to a versioned endpoint,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_1690a094","line":148,"range":{"start_line":148,"start_character":31,"end_line":148,"end_character":36},"updated":"2018-04-24 19:02:37.000000000","message":"5000","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":145,"context_line":"* ``url`` (string): fully qualified URL of the service endpoint"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"This should be unversioned base URL for an API. Good examples include"},{"line_number":148,"context_line":"``https://identity.example.com:35357/`` and ``https://keystone.example.com/``."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Conversely, ``https://identity.example.com:35357/v2.0/`` is an unfortunate"},{"line_number":151,"context_line":"example because it directs all clients to connect to a versioned endpoint,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_aa6aa816","line":148,"range":{"start_line":148,"start_character":31,"end_line":148,"end_character":36},"in_reply_to":"9f6a8fd7_1690a094","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":147,"context_line":"This should be unversioned base URL for an API. Good examples include"},{"line_number":148,"context_line":"``https://identity.example.com:35357/`` and ``https://keystone.example.com/``."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Conversely, ``https://identity.example.com:35357/v2.0/`` is an unfortunate"},{"line_number":151,"context_line":"example because it directs all clients to connect to a versioned endpoint,"},{"line_number":152,"context_line":"regardless of which API versions they understand. This makes it hard for"},{"line_number":153,"context_line":"services to do any sort of API versioning, and for clients to dynamically"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_368b6468","line":150,"range":{"start_line":150,"start_character":43,"end_line":150,"end_character":48},"updated":"2018-04-24 19:02:37.000000000","message":"5000","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":147,"context_line":"This should be unversioned base URL for an API. Good examples include"},{"line_number":148,"context_line":"``https://identity.example.com:35357/`` and ``https://keystone.example.com/``."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Conversely, ``https://identity.example.com:35357/v2.0/`` is an unfortunate"},{"line_number":151,"context_line":"example because it directs all clients to connect to a versioned endpoint,"},{"line_number":152,"context_line":"regardless of which API versions they understand. This makes it hard for"},{"line_number":153,"context_line":"services to do any sort of API versioning, and for clients to dynamically"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_f6ee4c20","line":150,"range":{"start_line":150,"start_character":49,"end_line":150,"end_character":53},"updated":"2018-04-24 19:02:37.000000000","message":"v3","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":147,"context_line":"This should be unversioned base URL for an API. Good examples include"},{"line_number":148,"context_line":"``https://identity.example.com:35357/`` and ``https://keystone.example.com/``."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Conversely, ``https://identity.example.com:35357/v2.0/`` is an unfortunate"},{"line_number":151,"context_line":"example because it directs all clients to connect to a versioned endpoint,"},{"line_number":152,"context_line":"regardless of which API versions they understand. This makes it hard for"},{"line_number":153,"context_line":"services to do any sort of API versioning, and for clients to dynamically"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_8a6fa429","line":150,"range":{"start_line":150,"start_character":43,"end_line":150,"end_character":48},"in_reply_to":"9f6a8fd7_368b6468","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":147,"context_line":"This should be unversioned base URL for an API. Good examples include"},{"line_number":148,"context_line":"``https://identity.example.com:35357/`` and ``https://keystone.example.com/``."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Conversely, ``https://identity.example.com:35357/v2.0/`` is an unfortunate"},{"line_number":151,"context_line":"example because it directs all clients to connect to a versioned endpoint,"},{"line_number":152,"context_line":"regardless of which API versions they understand. This makes it hard for"},{"line_number":153,"context_line":"services to do any sort of API versioning, and for clients to dynamically"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_ea8420d5","line":150,"range":{"start_line":150,"start_character":49,"end_line":150,"end_character":53},"in_reply_to":"9f6a8fd7_f6ee4c20","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"4c2f0100efcb5d00b8020bdfb2851042b0bda0ec","unresolved":false,"context_lines":[{"line_number":156,"context_line":"For a period of time, keystone was stuck in a position where it implements a"},{"line_number":157,"context_line":"``/v3/`` API, but for backwards compatibility with existing v2 clients, was"},{"line_number":158,"context_line":"forced to continue advertising the ``/v2.0/`` endpoint in the service catalog"},{"line_number":159,"context_line":"until it was reasonale to assume that all clients in the ecosystem are capable"},{"line_number":160,"context_line":"of handling an unversioned URL. As a side effect, this has had a tremendous"},{"line_number":161,"context_line":"impact on the awareness of, and thus adoption of, Keystone\u0027s Identity API v3"},{"line_number":162,"context_line":"(which has been enabled by default — and stable — since the 2013.1 Grizzly"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_1b20c9f6","line":159,"range":{"start_line":159,"start_character":13,"end_line":159,"end_character":22},"updated":"2018-04-24 18:41:07.000000000","message":"reasonable*","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":156,"context_line":"For a period of time, keystone was stuck in a position where it implements a"},{"line_number":157,"context_line":"``/v3/`` API, but for backwards compatibility with existing v2 clients, was"},{"line_number":158,"context_line":"forced to continue advertising the ``/v2.0/`` endpoint in the service catalog"},{"line_number":159,"context_line":"until it was reasonale to assume that all clients in the ecosystem are capable"},{"line_number":160,"context_line":"of handling an unversioned URL. As a side effect, this has had a tremendous"},{"line_number":161,"context_line":"impact on the awareness of, and thus adoption of, Keystone\u0027s Identity API v3"},{"line_number":162,"context_line":"(which has been enabled by default — and stable — since the 2013.1 Grizzly"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_4a750cf9","line":159,"range":{"start_line":159,"start_character":13,"end_line":159,"end_character":22},"in_reply_to":"9f6a8fd7_1b20c9f6","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":163,"context_line":"release). Don\u0027t put your project in that position!"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Similarly, ``https://object-store.example.com/v1/KEY_\\$(tenant_id)s`` (which"},{"line_number":166,"context_line":"would ultimately be rendered to clients as a tenant-specific URL, such as"},{"line_number":167,"context_line":"``https://object-store.example.com/v1/KEY_d12af07f4e2c4390a21acc31517ebec9``)"},{"line_number":168,"context_line":"is an unfortunate example because not only does it hardcode an API version as"},{"line_number":169,"context_line":"in the above example, but it also exposes the client\u0027s tenancy directly to the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_b6f454f2","line":166,"range":{"start_line":166,"start_character":45,"end_line":166,"end_character":51},"updated":"2018-04-24 19:02:37.000000000","message":"project?","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":163,"context_line":"release). Don\u0027t put your project in that position!"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Similarly, ``https://object-store.example.com/v1/KEY_\\$(tenant_id)s`` (which"},{"line_number":166,"context_line":"would ultimately be rendered to clients as a tenant-specific URL, such as"},{"line_number":167,"context_line":"``https://object-store.example.com/v1/KEY_d12af07f4e2c4390a21acc31517ebec9``)"},{"line_number":168,"context_line":"is an unfortunate example because not only does it hardcode an API version as"},{"line_number":169,"context_line":"in the above example, but it also exposes the client\u0027s tenancy directly to the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_6a701009","line":166,"range":{"start_line":166,"start_character":45,"end_line":166,"end_character":51},"in_reply_to":"9f6a8fd7_b6f454f2","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":166,"context_line":"would ultimately be rendered to clients as a tenant-specific URL, such as"},{"line_number":167,"context_line":"``https://object-store.example.com/v1/KEY_d12af07f4e2c4390a21acc31517ebec9``)"},{"line_number":168,"context_line":"is an unfortunate example because not only does it hardcode an API version as"},{"line_number":169,"context_line":"in the above example, but it also exposes the client\u0027s tenancy directly to the"},{"line_number":170,"context_line":"client — which happens to be completely redundant with the authorization"},{"line_number":171,"context_line":"context provided to services by keystonemiddleware.auth_token using the"},{"line_number":172,"context_line":"client\u0027s authentication token. It\u0027s also far less cacheable than a URL that is"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_76da3c78","line":169,"range":{"start_line":169,"start_character":55,"end_line":169,"end_character":62},"updated":"2018-04-24 19:02:37.000000000","message":"project ID?","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":166,"context_line":"would ultimately be rendered to clients as a tenant-specific URL, such as"},{"line_number":167,"context_line":"``https://object-store.example.com/v1/KEY_d12af07f4e2c4390a21acc31517ebec9``)"},{"line_number":168,"context_line":"is an unfortunate example because not only does it hardcode an API version as"},{"line_number":169,"context_line":"in the above example, but it also exposes the client\u0027s tenancy directly to the"},{"line_number":170,"context_line":"client — which happens to be completely redundant with the authorization"},{"line_number":171,"context_line":"context provided to services by keystonemiddleware.auth_token using the"},{"line_number":172,"context_line":"client\u0027s authentication token. It\u0027s also far less cacheable than a URL that is"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_0a65d445","line":169,"range":{"start_line":169,"start_character":55,"end_line":169,"end_character":62},"in_reply_to":"9f6a8fd7_76da3c78","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":167,"context_line":"``https://object-store.example.com/v1/KEY_d12af07f4e2c4390a21acc31517ebec9``)"},{"line_number":168,"context_line":"is an unfortunate example because not only does it hardcode an API version as"},{"line_number":169,"context_line":"in the above example, but it also exposes the client\u0027s tenancy directly to the"},{"line_number":170,"context_line":"client — which happens to be completely redundant with the authorization"},{"line_number":171,"context_line":"context provided to services by keystonemiddleware.auth_token using the"},{"line_number":172,"context_line":"client\u0027s authentication token. It\u0027s also far less cacheable than a URL that is"},{"line_number":173,"context_line":"neither tenant nor user specific, which is important given that every client"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_76c31c8a","line":170,"range":{"start_line":170,"start_character":8,"end_line":170,"end_character":50},"updated":"2018-04-24 19:02:37.000000000","message":"Another personal commentary, make this more objective","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":167,"context_line":"``https://object-store.example.com/v1/KEY_d12af07f4e2c4390a21acc31517ebec9``)"},{"line_number":168,"context_line":"is an unfortunate example because not only does it hardcode an API version as"},{"line_number":169,"context_line":"in the above example, but it also exposes the client\u0027s tenancy directly to the"},{"line_number":170,"context_line":"client — which happens to be completely redundant with the authorization"},{"line_number":171,"context_line":"context provided to services by keystonemiddleware.auth_token using the"},{"line_number":172,"context_line":"client\u0027s authentication token. It\u0027s also far less cacheable than a URL that is"},{"line_number":173,"context_line":"neither tenant nor user specific, which is important given that every client"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_2acd3830","line":170,"range":{"start_line":170,"start_character":8,"end_line":170,"end_character":50},"in_reply_to":"9f6a8fd7_76c31c8a","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3c68396a764eaf8510b00610de4d782844766b01","unresolved":false,"context_lines":[{"line_number":170,"context_line":"client — which happens to be completely redundant with the authorization"},{"line_number":171,"context_line":"context provided to services by keystonemiddleware.auth_token using the"},{"line_number":172,"context_line":"client\u0027s authentication token. It\u0027s also far less cacheable than a URL that is"},{"line_number":173,"context_line":"neither tenant nor user specific, which is important given that every client"},{"line_number":174,"context_line":"needs access to consume the service catalog prior to nearly every API request."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_963fd085","line":173,"range":{"start_line":173,"start_character":8,"end_line":173,"end_character":14},"updated":"2018-04-24 19:02:37.000000000","message":"project","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48e7753118a4a71ce4ae03652eb61ef3fe3e8336","unresolved":false,"context_lines":[{"line_number":170,"context_line":"client — which happens to be completely redundant with the authorization"},{"line_number":171,"context_line":"context provided to services by keystonemiddleware.auth_token using the"},{"line_number":172,"context_line":"client\u0027s authentication token. It\u0027s also far less cacheable than a URL that is"},{"line_number":173,"context_line":"neither tenant nor user specific, which is important given that every client"},{"line_number":174,"context_line":"needs access to consume the service catalog prior to nearly every API request."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_0acab419","line":173,"range":{"start_line":173,"start_character":8,"end_line":173,"end_character":14},"in_reply_to":"9f6a8fd7_963fd085","updated":"2018-04-24 20:28:22.000000000","message":"Done","commit_id":"10a8bab1057ad749a6c28543a5c06887d5fe048c"}]}
