Provide option for delete zonefiles on zone delete
This commit provides an header option (hard-delete) for deletion of zonefiles on backend as part of zone delete API. Main patch (in Designate) is: https://review.opendev.org/c/openstack/designate/+/835317 Change-Id: I0080c028466d809f4f5118fec05d9e46b2dfce84
This commit is contained in:
parent
a4f67bc736
commit
483e0d16c6
|
@ -33,6 +33,16 @@ def add_edit_managed_option(parser):
|
|||
)
|
||||
|
||||
|
||||
def add_hard_delete_option(parser):
|
||||
parser.add_argument(
|
||||
'--hard-delete',
|
||||
default=False,
|
||||
action='store_true',
|
||||
help='Delete zone along-with backend zone resources (i.e. files). '
|
||||
'Default: False'
|
||||
)
|
||||
|
||||
|
||||
def add_sudo_project_id_option(parser):
|
||||
parser.add_argument(
|
||||
'--sudo-project-id',
|
||||
|
@ -58,6 +68,10 @@ def set_edit_managed(client, value):
|
|||
client.session.edit_managed = value
|
||||
|
||||
|
||||
def set_hard_delete(client, value):
|
||||
client.session.hard_delete = value
|
||||
|
||||
|
||||
def set_all_common_headers(client, parsed_args):
|
||||
|
||||
if parsed_args.all_projects is not None and \
|
||||
|
@ -72,3 +86,8 @@ def set_all_common_headers(client, parsed_args):
|
|||
if parsed_args.sudo_project_id is not None and \
|
||||
isinstance(parsed_args.sudo_project_id, str):
|
||||
set_sudo_project_id(client, parsed_args.sudo_project_id)
|
||||
|
||||
if hasattr(parsed_args, 'hard_delete') and \
|
||||
parsed_args.hard_delete is not None and \
|
||||
isinstance(parsed_args.hard_delete, bool):
|
||||
set_hard_delete(client, parsed_args.hard_delete)
|
||||
|
|
|
@ -242,6 +242,7 @@ class DeleteZoneCommand(command.ShowOne):
|
|||
parser.add_argument('id', help="Zone ID")
|
||||
|
||||
common.add_all_common_options(parser)
|
||||
common.add_hard_delete_option(parser)
|
||||
|
||||
return parser
|
||||
|
||||
|
|
|
@ -49,6 +49,7 @@ class DesignateAdapter(adapter.LegacyJsonAdapter):
|
|||
self.timeout = kwargs.pop('timeout', None)
|
||||
self.all_projects = kwargs.pop('all_projects', False)
|
||||
self.edit_managed = kwargs.pop('edit_managed', False)
|
||||
self.hard_delete = kwargs.pop('hard_delete', False)
|
||||
self.sudo_project_id = kwargs.pop('sudo_project_id', None)
|
||||
super(self.__class__, self).__init__(*args, **kwargs)
|
||||
|
||||
|
@ -72,6 +73,12 @@ class DesignateAdapter(adapter.LegacyJsonAdapter):
|
|||
str(self.edit_managed)
|
||||
)
|
||||
|
||||
if self.hard_delete:
|
||||
kwargs['headers'].setdefault(
|
||||
'X-Designate-Hard-Delete',
|
||||
str(self.hard_delete)
|
||||
)
|
||||
|
||||
if self.sudo_project_id is not None:
|
||||
kwargs['headers'].setdefault(
|
||||
'X-Auth-Sudo-Project-ID',
|
||||
|
@ -113,7 +120,7 @@ class Client(object):
|
|||
extensions=None, service_type='dns', service_name=None,
|
||||
http_log_debug=False, session=None, auth=None, timeout=None,
|
||||
endpoint_override=None, all_projects=False,
|
||||
edit_managed=False, sudo_project_id=None):
|
||||
edit_managed=False, hard_delete=False, sudo_project_id=None):
|
||||
if session is None:
|
||||
raise ValueError("A session instance is required")
|
||||
|
||||
|
@ -129,6 +136,7 @@ class Client(object):
|
|||
timeout=timeout,
|
||||
all_projects=all_projects,
|
||||
edit_managed=edit_managed,
|
||||
hard_delete=hard_delete,
|
||||
sudo_project_id=sudo_project_id
|
||||
)
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
upgrade:
|
||||
- |
|
||||
Added option``hard-delete`` for zone delete API. This will allow user to
|
||||
delete zone-files on the backend when zone is deleted.
|
Loading…
Reference in New Issue