This work is licensed under a Creative Commons Attribution 3.0 Unported License. http://creativecommons.org/licenses/by/3.0/legalcode

Zone and Record TotalCount

https://blueprints.launchpad.net/designate/+spec/zone-and-record-totalcount

Problem description

When a user makes a request for a list of zones or records, provide the total count of zones or records that match the given query. The count will ideally be provided when a user makes a request for something like /zones or /records (to limit the need to make multiple queries).

Proposed change

API Changes

This change would not add any new endpoints, but it would modify the data presented by some existing endpoints.

The following examples demonstrate the total_entries value for a generic collection of “resources”. After implementation, this feature will be supported by collections of zones and recordsets.

GET /v2/resources

Example Request:

GET /v2/resources HTTP/1.1
Accept: application/json
Content-Type: application/json

Example Response:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "resources": [{
    "id": "fdd7b0dc-52a3-491e-829f-41d18e1d3ada",
    "created_at": "2014-06-23T18:39:32.000000",
    "....": "...."
  }, {
    "id": "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
    "created_at": "2014-07-08T20:28:19.000000",
    "....": "...."
  }, {
    "id": "460f7531-e381-4773-aff3-06a12fad096d",
    "created_at": "2014-06-04t19:09:17.000000",
    "....": "...."
  }, {
    "id": "40ced622-fc70-498d-9f28-3d3021b19685",
    "created_at": "2014-07-08T16:47:32.000000",
    "....": "...."
  }],
  "links": {
    "self": "https://dns.provider.com/v2/resources?sort_key=id&sort_dir=desc"
  },
  "meta": {
    "total_entries": 4
  }
}

Central Changes

A PagedListObjectMixin class will be added that will support the metadata associated with list pagination. This class will be added as a superclass of the ZonesList and RecordsList classes.

Storage Changes

Any calls to find_domains will also internally call count_domains and add this count to the DomainsList object that is returned.

Any calls to find_records will also internally call count_records and add this count to the RecordsList object that is returned.

Other Changes

None

Alternatives

None

Implementation

Assignee(s)

Primary assignee: jordan-cazamias

Milestones

Target Milestone for completion:
Juno-2

Work Items

  • Agree on spec for API formatting
  • Implement changes