Exemplo n.º 1
0
    def list_record_sets(self,
                         zone_id,
                         start_from=None,
                         max_items=None,
                         record_name_filter=None,
                         **kwargs):
        """
        Retrieve record_sets in a zone.

        :param zone_id: the zone to retrieve
        :param start_from: the start key of the page
        :param max_items: the page limit
        :param record_name_filter: only returns record_sets whose names contain filter string
        :return: the content of the response
        """
        args = []
        if start_from:
            args.append(u'startFrom={0}'.format(start_from))
        if max_items is not None:
            args.append(u'maxItems={0}'.format(max_items))
        if record_name_filter:
            args.append(u'recordNameFilter={0}'.format(record_name_filter))

        url = urljoin(
            self.index_url,
            u'/zones/{0}/recordsets'.format(zone_id)) + u'?' + u'&'.join(args)

        response, data = self.__make_request(url, u'GET', self.headers,
                                             **kwargs)
        return ListRecordSetsResponse.from_dict(data)
def test_list_record_sets(mocked_responses, vinyldns_client):
    lrr = ListRecordSetsResponse(record_set_values, 'start', 'next', 100, '*')
    mocked_responses.add(
        responses.GET,
        'http://test.com/zones/{0}/recordsets?startFrom=start&maxItems=100&recordNameFilter=*'
        .format(forward_zone.id),
        body=to_json_string(lrr),
        status=200)
    r = vinyldns_client.list_record_sets(forward_zone.id, 'start', 100, '*')
    assert r.start_from == lrr.start_from
    assert r.next_id == lrr.next_id
    assert r.record_name_filter == lrr.record_name_filter
    assert r.max_items == lrr.max_items
    for l, r in zip(r.record_sets, lrr.record_sets):
        check_record_sets_are_equal(l, r)
def test_list_record_set_response_serdes():
    a = ListRecordSetsResponse(record_sets=record_set_values,
                               start_from='some-start',
                               next_id='next',
                               max_items=100,
                               record_name_filter='foo*')
    s = to_json_string(a)
    b = from_json_string(s, ListRecordSetsResponse.from_dict)

    assert a.start_from == b.start_from
    assert a.next_id == b.next_id
    assert a.max_items == b.max_items
    assert a.record_name_filter == b.record_name_filter
    assert len(a.record_sets) == len(b.record_sets)
    for l, r in zip(a.record_sets, b.record_sets):
        check_record_sets_are_equal(l, r)
Exemplo n.º 4
0
    def search_record_sets(self,
                           start_from=None,
                           max_items=None,
                           record_name_filter=None,
                           record_type_filter=None,
                           record_owner_group_filter=None,
                           name_sort=None,
                           **kwargs):
        """
        Retrieves a list of RecordSets globally in the VinylDNS database based on search criteria.
        A minimum of two alpha-numeric characters is required.

        :param start_from: the start key of the page
        :param max_items: the page limit
        :param record_name_filter: only returns record_sets whose names contain filter string
        :param record_type_filter: only returns record_sets whose type is present in the given list
        :param record_owner_group_filter: only returns record_sets belonging to the given owner
        :param name_sort: sort the results as per given order
        :return: the content of the response
        """
        args = []
        if start_from is not None:
            args.append(u'startFrom={0}'.format(start_from))
        if max_items is not None:
            args.append(u'maxItems={0}'.format(max_items))
        if record_name_filter is not None:
            args.append(u'recordNameFilter={0}'.format(record_name_filter))
        if record_type_filter is not None:
            for record_type in record_type_filter:
                args.append(u'recordTypeFilter[]={0}'.format(record_type))
        if record_owner_group_filter is not None:
            args.append(u'recordOwnerGroupFilter={0}'.format(
                record_owner_group_filter))
        if name_sort is not None:
            args.append(u'nameSort={0}'.format(name_sort))

        url = urljoin(self.index_url, u'/recordsets') + u'?' + u'&'.join(args)

        response, data = self.__make_request(url, u'GET', self.headers,
                                             **kwargs)
        return ListRecordSetsResponse.from_dict(data)
Exemplo n.º 5
0
def test_search_record_sets(mocked_responses, vinyldns_client):
    lrr = ListRecordSetsResponse(record_set_values, 'start', 'next', 100, '*')
    all_record_types = list(record_sets.keys())
    record_type_filter = ''
    for record_type in all_record_types:
        record_type_filter += '&recordTypeFilter[]={0}'.format(record_type)
    mocked_responses.add(
        responses.GET,
        'http://test.com/recordsets?startFrom=start&maxItems=100&recordNameFilter=*'
        + record_type_filter +
        '&recordOwnerGroupFilter=owner-group-id&nameSort=DESC',
        body=to_json_string(lrr),
        status=200)
    r = vinyldns_client.search_record_sets('start', 100, '*', all_record_types,
                                           'owner-group-id', 'DESC')
    assert r.start_from == lrr.start_from
    assert r.next_id == lrr.next_id
    assert r.record_name_filter == lrr.record_name_filter
    assert r.max_items == lrr.max_items
    for l, r in zip(r.record_sets, lrr.record_sets):
        check_record_sets_are_equal(l, r)