mirror of
https://github.com/thegeeklab/corenetworks.git
synced 2024-11-21 21:20:38 +00:00
add zone methods
This commit is contained in:
parent
87d2de8a11
commit
3d60d511d1
@ -28,6 +28,7 @@ class CoreNetworks():
|
||||
self.__user_agent = "Core Networks Python API {version}".format(
|
||||
version=corenetworks.__version__
|
||||
)
|
||||
self.auto_commit = auto_commit
|
||||
|
||||
self._schema = {
|
||||
"type": "object",
|
||||
@ -101,6 +102,37 @@ class CoreNetworks():
|
||||
|
||||
self._auth = CoreNetworksBasicAuth(user, password, self.__endpoint)
|
||||
|
||||
# ZONES
|
||||
|
||||
def zones(self):
|
||||
"""
|
||||
Get the list of DNS zones.
|
||||
|
||||
Args: None
|
||||
|
||||
Returns:
|
||||
list: List of zones.
|
||||
|
||||
"""
|
||||
result = self.__rest_helper("/dnszones/", method="GET")
|
||||
|
||||
return self.__normalize(result)
|
||||
|
||||
def zone(self, zone):
|
||||
"""
|
||||
Get details about a DNS zone.
|
||||
|
||||
Args:
|
||||
zone (str): Name of the target DNS zone.
|
||||
|
||||
Returns:
|
||||
list: List of zones.
|
||||
|
||||
"""
|
||||
result = self.__rest_helper("/dnszones/{zone}".format(zone=zone), method="GET")
|
||||
|
||||
return self.__normalize(result)
|
||||
|
||||
# RECORDS
|
||||
|
||||
def records(self, zone, params={}):
|
||||
@ -154,6 +186,9 @@ class CoreNetworks():
|
||||
|
||||
result = self.records(zone=zone, params=params)
|
||||
|
||||
if self.auto_commit:
|
||||
self.commit(zone=zone)
|
||||
|
||||
return self.__normalize(result)
|
||||
|
||||
def delete_record(self, zone, params):
|
||||
@ -189,6 +224,9 @@ class CoreNetworks():
|
||||
"/dnszones/{zone}/records/delete".format(zone=zone), data=params, method="POST"
|
||||
)
|
||||
|
||||
if self.auto_commit:
|
||||
self.commit(zone=zone)
|
||||
|
||||
return self.__normalize(result)
|
||||
|
||||
def commit(self, zone):
|
||||
|
@ -39,6 +39,31 @@ def test_request_error(requests_mock, client):
|
||||
assert client.commit(zone="example.com")
|
||||
|
||||
|
||||
def test_zones(requests_mock, client):
|
||||
requests_mock.get(
|
||||
"https://beta.api.core-networks.de/dnszones/",
|
||||
text='[{"name":"example.com","type":"master"}]'
|
||||
)
|
||||
|
||||
resp = client.zones()
|
||||
assert resp == [{"name": "example.com", "type": "master"}]
|
||||
|
||||
|
||||
def test_zone(requests_mock, client):
|
||||
requests_mock.get(
|
||||
"https://beta.api.core-networks.de/dnszones/example.com",
|
||||
json={
|
||||
"active": True,
|
||||
"dnssec": True,
|
||||
"name": "example.com",
|
||||
"type": "master"
|
||||
}
|
||||
)
|
||||
|
||||
resp = client.zone("example.com")
|
||||
assert resp == {"active": True, "dnssec": True, "name": "example.com", "type": "master"}
|
||||
|
||||
|
||||
def test_records(requests_mock, client):
|
||||
requests_mock.get(
|
||||
"https://beta.api.core-networks.de/dnszones/example.com/records/",
|
||||
@ -58,7 +83,6 @@ def test_records(requests_mock, client):
|
||||
}]
|
||||
|
||||
resp = client.records(zone="example.com")
|
||||
|
||||
assert resp == exp
|
||||
|
||||
|
||||
@ -95,7 +119,7 @@ def test_filter_records(requests_mock, client):
|
||||
assert resp == [{"type": "A", "ttl": 1800, "name": "test", "data": "127.0.0.1"}]
|
||||
|
||||
|
||||
def test_add_record(requests_mock, client):
|
||||
def test_add_record(requests_mock, client, mocker):
|
||||
requests_mock.post(
|
||||
"https://beta.api.core-networks.de/dnszones/example.com/records/",
|
||||
text=records_post_callback,
|
||||
@ -105,18 +129,18 @@ def test_add_record(requests_mock, client):
|
||||
text=records_get_callback,
|
||||
)
|
||||
|
||||
resp = client.add_record(
|
||||
zone="example.com", params={
|
||||
"type": "A",
|
||||
"ttl": 1800,
|
||||
"name": "test",
|
||||
"data": "127.0.0.1"
|
||||
}
|
||||
)
|
||||
record = {"type": "A", "ttl": 1800, "name": "test", "data": "127.0.0.1"}
|
||||
|
||||
resp = client.add_record(zone="example.com", params=record)
|
||||
assert resp == [{"type": "A", "ttl": 1800, "name": "test", "data": "127.0.0.1"}]
|
||||
|
||||
mocker.patch.object(client, "commit")
|
||||
client.auto_commit = True
|
||||
client.add_record(zone="example.com", params=record)
|
||||
client.commit.assert_called_once()
|
||||
|
||||
def test_delete_record(requests_mock, client):
|
||||
|
||||
def test_delete_record(requests_mock, client, mocker):
|
||||
requests_mock.post(
|
||||
"https://beta.api.core-networks.de/dnszones/example.com/records/delete",
|
||||
text=records_post_callback,
|
||||
@ -132,6 +156,13 @@ def test_delete_record(requests_mock, client):
|
||||
})
|
||||
assert forced == []
|
||||
|
||||
mocker.patch.object(client, "commit")
|
||||
client.auto_commit = True
|
||||
client.delete_record(zone="example.com", params={
|
||||
"type": "A",
|
||||
})
|
||||
client.commit.assert_called_once()
|
||||
|
||||
|
||||
def test_delete_record_invalid(requests_mock, client):
|
||||
requests_mock.post(
|
||||
|
Loading…
Reference in New Issue
Block a user