Merge "Prevent update/delete of managed records in v1 API"

This commit is contained in:
Jenkins
2014-09-25 14:52:39 +00:00
committed by Gerrit Code Review
2 changed files with 9 additions and 11 deletions

View File

@@ -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)

View File

@@ -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",