diff options
author | Manish Honap <mmhonap@gmail.com> | 2022-03-26 01:43:28 +0530 |
---|---|---|
committer | Michael Johnson <johnsomor@gmail.com> | 2023-01-30 03:44:37 +0000 |
commit | 483e0d16c6b357a610634ad5f7db9ab61b41d353 (patch) | |
tree | af7e0b8cc31c81c413a23e7fe50e635235936205 | |
parent | a4f67bc736ae6c0a53c2d945ff585a3761cb94c3 (diff) | |
download | python-designateclient-483e0d16c6b357a610634ad5f7db9ab61b41d353.tar.gz |
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
-rw-r--r-- | designateclient/v2/cli/common.py | 19 | ||||
-rw-r--r-- | designateclient/v2/cli/zones.py | 1 | ||||
-rw-r--r-- | designateclient/v2/client.py | 10 | ||||
-rw-r--r-- | releasenotes/notes/add-hard-delete-option-for-zone-delete-e16652c8e72fc023.yaml | 5 |
4 files changed, 34 insertions, 1 deletions
diff --git a/designateclient/v2/cli/common.py b/designateclient/v2/cli/common.py index 59dd008..f8dbdfa 100644 --- a/designateclient/v2/cli/common.py +++ b/designateclient/v2/cli/common.py @@ -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) diff --git a/designateclient/v2/cli/zones.py b/designateclient/v2/cli/zones.py index 6d059c6..f326232 100644 --- a/designateclient/v2/cli/zones.py +++ b/designateclient/v2/cli/zones.py @@ -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 diff --git a/designateclient/v2/client.py b/designateclient/v2/client.py index 0508535..4463506 100644 --- a/designateclient/v2/client.py +++ b/designateclient/v2/client.py @@ -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 ) diff --git a/releasenotes/notes/add-hard-delete-option-for-zone-delete-e16652c8e72fc023.yaml b/releasenotes/notes/add-hard-delete-option-for-zone-delete-e16652c8e72fc023.yaml new file mode 100644 index 0000000..2dade89 --- /dev/null +++ b/releasenotes/notes/add-hard-delete-option-for-zone-delete-e16652c8e72fc023.yaml @@ -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. |