summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManish Honap <mmhonap@gmail.com>2022-03-26 01:43:28 +0530
committerMichael Johnson <johnsomor@gmail.com>2023-01-30 03:44:37 +0000
commit483e0d16c6b357a610634ad5f7db9ab61b41d353 (patch)
treeaf7e0b8cc31c81c413a23e7fe50e635235936205
parenta4f67bc736ae6c0a53c2d945ff585a3761cb94c3 (diff)
downloadpython-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.py19
-rw-r--r--designateclient/v2/cli/zones.py1
-rw-r--r--designateclient/v2/client.py10
-rw-r--r--releasenotes/notes/add-hard-delete-option-for-zone-delete-e16652c8e72fc023.yaml5
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.