summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-09-25 14:52:39 +0000
committerGerrit Code Review <review@openstack.org>2014-09-25 14:52:39 +0000
commit941f4a8026b8c5bc4cd034934eaa7cad944d3a81 (patch)
treecbd64292e0e75610ebcfcb0682c00cb81bb424e0
parent57c9682e1c930286ae57b784e4737127a2834a40 (diff)
parente68f77775707628cb18bd3244893500898d4c199 (diff)
downloaddesignate-941f4a8026b8c5bc4cd034934eaa7cad944d3a81.tar.gz
Merge "Prevent update/delete of managed records in v1 API"
-rw-r--r--designate/api/v1/records.py16
-rw-r--r--designate/central/service.py4
2 files changed, 9 insertions, 11 deletions
diff --git a/designate/api/v1/records.py b/designate/api/v1/records.py
index 187060be..81ca056f 100644
--- a/designate/api/v1/records.py
+++ b/designate/api/v1/records.py
@@ -180,14 +180,14 @@ def update_record(domain_id, record_id):
criterion = {'domain_id': domain_id, 'id': record_id}
record = get_central_api().find_record(context, criterion)
+ # Cannot update a managed record via the API.
+ if record['managed'] is True:
+ raise exceptions.BadRequest('Managed records may not be updated')
+
# Find the associated recordset
recordset = get_central_api().get_recordset(
context, domain_id, record.recordset_id)
- # Cannot manually update a SOA record
- if recordset['type'] == 'SOA':
- raise exceptions.BadRequest('SOA records cannot be manually updated.')
-
# Prepare a dict of fields for validation
record_data = record_schema.filter(_format_record_v1(record, recordset))
record_data.update(values)
@@ -232,11 +232,9 @@ def delete_record(domain_id, record_id):
criterion = {'domain_id': domain_id, 'id': record_id}
record = get_central_api().find_record(context, criterion)
- # SOA records cannot be deleted
- recordset = get_central_api().get_recordset(context, domain_id,
- record['recordset_id'])
- if recordset['type'] == 'SOA':
- raise exceptions.BadRequest('SOA records cannot be manually deleted.')
+ # Cannot delete a managed record via the API.
+ if record['managed'] is True:
+ raise exceptions.BadRequest('Managed records may not be deleted')
get_central_api().delete_record(
context, domain_id, record['recordset_id'], record_id)
diff --git a/designate/central/service.py b/designate/central/service.py
index 2cc0335b..8337ffc8 100644
--- a/designate/central/service.py
+++ b/designate/central/service.py
@@ -347,7 +347,7 @@ class Service(service.RPCService):
soa_values = [self._build_soa_record(zone, servers)]
recordlist = objects.RecordList(objects=[
- objects.Record(data=r) for r in soa_values])
+ objects.Record(data=r, managed=True) for r in soa_values])
values = {
'name': zone['name'],
'type': "SOA",
@@ -380,7 +380,7 @@ class Service(service.RPCService):
for s in servers:
ns_values.append(s.name)
recordlist = objects.RecordList(objects=[
- objects.Record(data=r) for r in ns_values])
+ objects.Record(data=r, managed=True) for r in ns_values])
values = {
'name': zone['name'],
'type': "NS",