)]}'
{"goals/rocky/pagination_links.rst":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"968d0475ed8d26677b3123a7ac0da3f47dc81edd","unresolved":false,"context_lines":[{"line_number":9,"context_line":"consistent across all of the OpenStack services, with resource lists"},{"line_number":10,"context_line":"that support pagination at least supporting ``marker`` and ``limit``"},{"line_number":11,"context_line":"query parameters. This is very good and allows API consumers to interact"},{"line_number":12,"context_line":"with paginated responses consistently."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"The way that a service indicates to the API consumer that a particular"},{"line_number":15,"context_line":"list of resources that has been returned is incomplete and in need of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_92b3934d","line":12,"updated":"2018-01-16 17:55:20.000000000","message":"This can be tricky for keystone depending on the configuration. Some LDAP backends don\u0027t guarantee results are returned in the same order twice. \n\nThis has been discussed across communication mediums a few different times, but here are a couple cases:\n\nhttps://bugs.launchpad.net/keystone/+bug/1009023\nhttps://bugs.launchpad.net/keystone/+bug/1451402","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"0888ed71e5955b6f632f32b95dd05f29be8ac1e1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"consistent across all of the OpenStack services, with resource lists"},{"line_number":10,"context_line":"that support pagination at least supporting ``marker`` and ``limit``"},{"line_number":11,"context_line":"query parameters. This is very good and allows API consumers to interact"},{"line_number":12,"context_line":"with paginated responses consistently."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"The way that a service indicates to the API consumer that a particular"},{"line_number":15,"context_line":"list of resources that has been returned is incomplete and in need of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_c6129a62","line":12,"in_reply_to":"7f96bb07_92b3934d","updated":"2018-01-17 16:21:25.000000000","message":"I\u0027ll try to rework the phrasing here. The intent is not that people need to add pagination to resources. It\u0027s only that if resources are paginated, pagination links need to be provided.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"f397c288cd99e30ca2d760c73510470d7cd1a5a1","unresolved":false,"context_lines":[{"line_number":24,"context_line":"This goal is about ensuring that, at a minimum, at least one mechanism is"},{"line_number":25,"context_line":"used for every paginated collection in OpenStack. It is **not** about"},{"line_number":26,"context_line":"changing or aligning existing paginated collections to all use the same"},{"line_number":27,"context_line":"mechanism."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The following are the list of mechanisms for communicating pagination links,"},{"line_number":30,"context_line":"in order of preference. A description of each follows."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_1b0f342f","line":27,"updated":"2018-01-10 22:09:51.000000000","message":"Do you foresee that being a goal later?","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"0888ed71e5955b6f632f32b95dd05f29be8ac1e1","unresolved":false,"context_lines":[{"line_number":24,"context_line":"This goal is about ensuring that, at a minimum, at least one mechanism is"},{"line_number":25,"context_line":"used for every paginated collection in OpenStack. It is **not** about"},{"line_number":26,"context_line":"changing or aligning existing paginated collections to all use the same"},{"line_number":27,"context_line":"mechanism."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The following are the list of mechanisms for communicating pagination links,"},{"line_number":30,"context_line":"in order of preference. A description of each follows."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_896ca5ce","line":27,"in_reply_to":"7f96bb07_1b0f342f","updated":"2018-01-17 16:21:25.000000000","message":"Maybe? But the semantics of that future state is something we\u0027d need a longer conversation about.\n\nMy personal preference would be to stipulate that we always return a RFC 5988 Link header, since that can be added to every resource of every service and it can be added without introducing service-specific api negotiation  logic into the mix.\n\nHowever, there is also a strong desire from the API-SIG POV to have complete representation present in JSON bodies, thus the preference for the top-level \u0027links\u0027 key in the json body for new API calls.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"f397c288cd99e30ca2d760c73510470d7cd1a5a1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"header as it ensures the entire representation of a given object is"},{"line_number":39,"context_line":"fully contained within the response body. However, there are some resource"},{"line_number":40,"context_line":"collections that cannot add links to the response body and therefore can"},{"line_number":41,"context_line":"only return a ``Link`` header."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Adding RFC 5988 Link headers to responses that also contain links"},{"line_number":44,"context_line":"in the response body is not required, but is optionally a nice thing to do"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_4883b005","line":41,"updated":"2018-01-10 22:09:51.000000000","message":"What is an example of a type of resource in our APIs where the links can or should only be included in the headers?","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"60631eccdae8471999507716621ac4f39ef6327b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"header as it ensures the entire representation of a given object is"},{"line_number":39,"context_line":"fully contained within the response body. However, there are some resource"},{"line_number":40,"context_line":"collections that cannot add links to the response body and therefore can"},{"line_number":41,"context_line":"only return a ``Link`` header."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Adding RFC 5988 Link headers to responses that also contain links"},{"line_number":44,"context_line":"in the response body is not required, but is optionally a nice thing to do"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_4620caf7","line":41,"in_reply_to":"7f96bb07_00645fe3","updated":"2018-01-17 15:56:35.000000000","message":"We did, and as far as I can recall that\u0027s always been the case. It\u0027s something that a lot of us argued against when discussing http://specs.openstack.org/openstack/api-wg/guidelines/api_interoperability.html  . The conclusion was that we cannot sufficiently trust clients to silently ignore things they don\u0027t expect, so \"Adding or removing a property in a resource representation in either a request or a response.\" was added as a rule.\n\nI agree this is a huge constraint, but the reasoning surrounding it is pretty sound.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"8e92a023e02e4b1c8dabe36ff8ab76f933a8d659","unresolved":false,"context_lines":[{"line_number":38,"context_line":"header as it ensures the entire representation of a given object is"},{"line_number":39,"context_line":"fully contained within the response body. However, there are some resource"},{"line_number":40,"context_line":"collections that cannot add links to the response body and therefore can"},{"line_number":41,"context_line":"only return a ``Link`` header."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Adding RFC 5988 Link headers to responses that also contain links"},{"line_number":44,"context_line":"in the response body is not required, but is optionally a nice thing to do"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_482157fb","line":41,"in_reply_to":"7f96bb07_185164d9","updated":"2018-01-11 18:29:07.000000000","message":"Why does where we put the data have anything to do with how we version the API?","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"0888ed71e5955b6f632f32b95dd05f29be8ac1e1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"header as it ensures the entire representation of a given object is"},{"line_number":39,"context_line":"fully contained within the response body. However, there are some resource"},{"line_number":40,"context_line":"collections that cannot add links to the response body and therefore can"},{"line_number":41,"context_line":"only return a ``Link`` header."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Adding RFC 5988 Link headers to responses that also contain links"},{"line_number":44,"context_line":"in the response body is not required, but is optionally a nice thing to do"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_69b91913","line":41,"in_reply_to":"7f96bb07_4620caf7","updated":"2018-01-17 16:21:25.000000000","message":"I concur.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"f12a3d52dea3567c7d4ee952a13ac7f7531ce014","unresolved":false,"context_lines":[{"line_number":38,"context_line":"header as it ensures the entire representation of a given object is"},{"line_number":39,"context_line":"fully contained within the response body. However, there are some resource"},{"line_number":40,"context_line":"collections that cannot add links to the response body and therefore can"},{"line_number":41,"context_line":"only return a ``Link`` header."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Adding RFC 5988 Link headers to responses that also contain links"},{"line_number":44,"context_line":"in the response body is not required, but is optionally a nice thing to do"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_8bf655f9","line":41,"in_reply_to":"7f96bb07_482157fb","updated":"2018-01-12 19:30:52.000000000","message":"Because changing the response body is an API break. Headers, in contrast, are always expected to be fluid, as proxies, etc., can change headers. Adding a header does not break the API.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"93278306e75790a6119656ef2b52380bd1f74e90","unresolved":false,"context_lines":[{"line_number":38,"context_line":"header as it ensures the entire representation of a given object is"},{"line_number":39,"context_line":"fully contained within the response body. However, there are some resource"},{"line_number":40,"context_line":"collections that cannot add links to the response body and therefore can"},{"line_number":41,"context_line":"only return a ``Link`` header."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Adding RFC 5988 Link headers to responses that also contain links"},{"line_number":44,"context_line":"in the response body is not required, but is optionally a nice thing to do"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_185164d9","line":41,"in_reply_to":"7f96bb07_4883b005","updated":"2018-01-11 18:07:47.000000000","message":"Adding links to APIs that don\u0027t support microversions would be considered a breaking change. The best way to add the links then would be via the header.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"0888ed71e5955b6f632f32b95dd05f29be8ac1e1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"header as it ensures the entire representation of a given object is"},{"line_number":39,"context_line":"fully contained within the response body. However, there are some resource"},{"line_number":40,"context_line":"collections that cannot add links to the response body and therefore can"},{"line_number":41,"context_line":"only return a ``Link`` header."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Adding RFC 5988 Link headers to responses that also contain links"},{"line_number":44,"context_line":"in the response body is not required, but is optionally a nice thing to do"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_c9f14d03","line":41,"in_reply_to":"7f96bb07_4883b005","updated":"2018-01-17 16:21:25.000000000","message":"Swift container listings. There is no place to put the links because the resource returned is a list, not a dict.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"89bfec18dd9df194c4665f4afdb634a2d20eae6e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"header as it ensures the entire representation of a given object is"},{"line_number":39,"context_line":"fully contained within the response body. However, there are some resource"},{"line_number":40,"context_line":"collections that cannot add links to the response body and therefore can"},{"line_number":41,"context_line":"only return a ``Link`` header."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Adding RFC 5988 Link headers to responses that also contain links"},{"line_number":44,"context_line":"in the response body is not required, but is optionally a nice thing to do"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_00645fe3","line":41,"in_reply_to":"7f96bb07_8bf655f9","updated":"2018-01-12 20:48:33.000000000","message":"I didn\u0027t think we categorized adding things to the response body as a \"break\" though.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"60631eccdae8471999507716621ac4f39ef6327b","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        \"rel\": \"next\""},{"line_number":93,"context_line":"      }"},{"line_number":94,"context_line":"    ]"},{"line_number":95,"context_line":"  }"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"links directly in response body"},{"line_number":98,"context_line":"-------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_86581288","line":95,"updated":"2018-01-17 15:56:35.000000000","message":"I agree that we should consider the presence of this style as meeting the need for pagination, but nobody should be doing this when adding new stuff.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"10801c18e0cbb85e34b3f30daf206f6c540990f3","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        \"rel\": \"next\""},{"line_number":93,"context_line":"      }"},{"line_number":94,"context_line":"    ]"},{"line_number":95,"context_line":"  }"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"links directly in response body"},{"line_number":98,"context_line":"-------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f93b717_0a447fb6","line":95,"in_reply_to":"5f93b717_8a5acf27","updated":"2018-01-26 16:27:28.000000000","message":"I think by \u0027new stuff\u0027 here we should likely mean new services. I certainly don\u0027t think that nova should use servers_links for some of its resources and links for others. That would make things worse. However, if nova did a v3, I think thatshould do links.\n\nOTOH - I could also see nova doing a microversion to switch **ALL** of the links dicts to being \u0027links\u0027 rather than \u0027server_links\u0027 - but that seems like a bigger effort potentially, and stil probably doesn\u0027t make anyone\u0027s life actually better.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"0888ed71e5955b6f632f32b95dd05f29be8ac1e1","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        \"rel\": \"next\""},{"line_number":93,"context_line":"      }"},{"line_number":94,"context_line":"    ]"},{"line_number":95,"context_line":"  }"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"links directly in response body"},{"line_number":98,"context_line":"-------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_a6742ed0","line":95,"in_reply_to":"7f96bb07_86581288","updated":"2018-01-17 16:21:25.000000000","message":"Yes. I agree. Will reword to be stronger.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6992163978bbab1bcc252b522b52d7d9ea7eb46a","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        \"rel\": \"next\""},{"line_number":93,"context_line":"      }"},{"line_number":94,"context_line":"    ]"},{"line_number":95,"context_line":"  }"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"links directly in response body"},{"line_number":98,"context_line":"-------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f93b717_8a5acf27","line":95,"in_reply_to":"7f96bb07_a6742ed0","updated":"2018-01-26 16:05:33.000000000","message":"\u003e but nobody should be doing this when adding new stuff.\n\nI\u0027ve often wondered about this link name structure too and know it\u0027s legacy, but for consistency sake we\u0027ve still been following this pattern for new microversions in nova that add paging support, like for 2.58 and 2.59 in Queens. So within a project I\u0027m not sure if we should be consistent or do the new thing.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"60631eccdae8471999507716621ac4f39ef6327b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"  {"},{"line_number":108,"context_line":"    \"images\": [],"},{"line_number":109,"context_line":"    \"next\": \"https://image.example.com/v2/images?marker\u003dmarker\u0026limit\u003dlimit\""},{"line_number":110,"context_line":"  }"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":".. note::"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_26cd7e30","line":110,"updated":"2018-01-17 15:56:35.000000000","message":"nor this","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"0888ed71e5955b6f632f32b95dd05f29be8ac1e1","unresolved":false,"context_lines":[{"line_number":107,"context_line":"  {"},{"line_number":108,"context_line":"    \"images\": [],"},{"line_number":109,"context_line":"    \"next\": \"https://image.example.com/v2/images?marker\u003dmarker\u0026limit\u003dlimit\""},{"line_number":110,"context_line":"  }"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":".. note::"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_064f2293","line":110,"in_reply_to":"7f96bb07_26cd7e30","updated":"2018-01-17 16:21:25.000000000","message":"Dear god no.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"ffa3fa4d38ec4c4a7c7180fffc341636738d69fe","unresolved":false,"context_lines":[{"line_number":123,"context_line":"called `Link`, separated by commas. For example, the first example would"},{"line_number":124,"context_line":"have the following header:"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":".. code-block::"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"  Link: \u003chttps://example.com/v1/resources?marker\u003dmarker\u0026limit\u003dlimit\u003e; rel\u003d\"next\""},{"line_number":129,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_9747694c","line":126,"updated":"2018-01-12 09:23:48.000000000","message":"Error in \"code-block\" directive: 1 argument(s) required, 0 supplied.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6992163978bbab1bcc252b522b52d7d9ea7eb46a","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"  pagination-links"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Completion Criteria"},{"line_number":139,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"#. A tempest pagination helper function that can detect and handle all four"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f93b717_8a816f4d","line":138,"updated":"2018-01-26 16:05:33.000000000","message":"Do you expect that as part of this, all resources add paging support? If so, I\u0027d need to do an audit in nova of which ones don\u0027t have paging support, because it could be quite a few (at least volume attachments, virtual interface (port) attachments, etc).","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"10801c18e0cbb85e34b3f30daf206f6c540990f3","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"  pagination-links"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Completion Criteria"},{"line_number":139,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"#. A tempest pagination helper function that can detect and handle all four"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f93b717_eada7315","line":138,"in_reply_to":"5f93b717_8a816f4d","updated":"2018-01-26 16:27:28.000000000","message":"Absolutely not - it should really get called out explicitly as a non-goal. There are resources that simply cannot be paginated (keystone ldap backends cannot do pagination). This is more about making sure that IF a resource is paginated, that the consumer get usable information.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"60631eccdae8471999507716621ac4f39ef6327b","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"#. A tempest pagination helper function that can detect and handle all four"},{"line_number":142,"context_line":"   mechanisms."},{"line_number":143,"context_line":"#. A tempest test for every paginated collection that uses the helper"},{"line_number":144,"context_line":"   function."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_c6e85a7d","line":143,"updated":"2018-01-17 15:56:35.000000000","message":"Why tempest? What\u0027s insufficient about an in-tree functional test?","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"10801c18e0cbb85e34b3f30daf206f6c540990f3","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"#. A tempest pagination helper function that can detect and handle all four"},{"line_number":142,"context_line":"   mechanisms."},{"line_number":143,"context_line":"#. A tempest test for every paginated collection that uses the helper"},{"line_number":144,"context_line":"   function."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f93b717_4a684720","line":143,"in_reply_to":"5f93b717_4aaa87d2","updated":"2018-01-26 16:27:28.000000000","message":"Ok - totally fair. Do we think we should have any sort of shared-implementation of the consumption logic code?","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6992163978bbab1bcc252b522b52d7d9ea7eb46a","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"#. A tempest pagination helper function that can detect and handle all four"},{"line_number":142,"context_line":"   mechanisms."},{"line_number":143,"context_line":"#. A tempest test for every paginated collection that uses the helper"},{"line_number":144,"context_line":"   function."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f93b717_4aaa87d2","line":143,"in_reply_to":"7f96bb07_8927c5ca","updated":"2018-01-26 16:05:33.000000000","message":"Agree with Chris. For example, a few years ago there was a push from the QA team to stop putting so much stuff into Tempest if it could be tested within a single project, i.e. anything related to flavors in nova, since those don\u0027t require integration with other services. So for things nova can test in-tree functionally (just need a running service, DB and API), we test stuff like that in-tree and don\u0027t rely on Tempest (again, the 2.58 and 2.59 API microversions already mentioned are good examples). Plus then for co-gating projects, we don\u0027t need to be running all of these extra project-specific tempest tests for every change when a nova change isn\u0027t going to break project foo\u0027s foo_links resource paging.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c46ce5f5eb7c53fcec9a485b296b16e5a6e28478","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"#. A tempest pagination helper function that can detect and handle all four"},{"line_number":142,"context_line":"   mechanisms."},{"line_number":143,"context_line":"#. A tempest test for every paginated collection that uses the helper"},{"line_number":144,"context_line":"   function."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_8927c5ca","line":143,"in_reply_to":"7f96bb07_a622eeb7","updated":"2018-01-17 16:26:03.000000000","message":"I can buy all those reasons, but I\u0027m not sure that it should be built into this goal. There have been some projects which are trying to minimise their use of tempest.","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"0888ed71e5955b6f632f32b95dd05f29be8ac1e1","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"#. A tempest pagination helper function that can detect and handle all four"},{"line_number":142,"context_line":"   mechanisms."},{"line_number":143,"context_line":"#. A tempest test for every paginated collection that uses the helper"},{"line_number":144,"context_line":"   function."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f96bb07_a622eeb7","line":143,"in_reply_to":"7f96bb07_c6e85a7d","updated":"2018-01-17 16:21:25.000000000","message":"I\u0027d personally like to see working pagination links for each paginated resources be a thing that we can promote into DefCore. But - I\u0027m not going to die on that particular hill.\n\nThe other reason I thought tempest is that then we can implement the basic consumption logic once and use that to prove that each service\u0027s resource listing complies.\n\nAlternately we could implement such a function in oslo-test or maybe even in keystoneauth\u0027s test fixtures ... but if we can make a base test in tempest, then wouldn\u0027t it be easy enough to add instances of it in people\u0027s tempest plugins?","commit_id":"7c60195f6cfaddd5980d3ea59e4540880bac4997"}]}
