summaryrefslogtreecommitdiff
path: root/designateclient/v2/zones.py
diff options
context:
space:
mode:
Diffstat (limited to 'designateclient/v2/zones.py')
-rw-r--r--designateclient/v2/zones.py36
1 files changed, 34 insertions, 2 deletions
diff --git a/designateclient/v2/zones.py b/designateclient/v2/zones.py
index 7e862a7..209d4f0 100644
--- a/designateclient/v2/zones.py
+++ b/designateclient/v2/zones.py
@@ -62,12 +62,18 @@ class ZoneController(V2Controller):
return self._patch(url, data=values)
- def delete(self, zone):
+ def delete(self, zone, delete_shares=False):
zone = v2_utils.resolve_by_name(self.list, zone)
url = self.build_url('/zones/%s' % zone)
- return self._delete(url)
+ if delete_shares:
+ headers = {'X-Designate-Delete-Shares': 'true'}
+ _resp, body = self.client.session.delete(url, headers=headers)
+ else:
+ _resp, body = self.client.session.delete(url)
+
+ return body
def abandon(self, zone):
zone = v2_utils.resolve_by_name(self.list, zone)
@@ -166,3 +172,29 @@ class ZoneImportsController(V2Controller):
def delete(self, zone_import_id):
return self._delete('/zones/tasks/imports/%s' % zone_import_id)
+
+
+class ZoneShareController(V2Controller):
+ def create(self, zone, target_project_id):
+ zone_id = v2_utils.resolve_by_name(self.client.zones.list, zone)
+
+ data = {"target_project_id": target_project_id}
+
+ return self._post(f'/zones/{zone_id}/shares', data=data)
+
+ def list(self, zone, criterion=None, marker=None, limit=None):
+ zone_id = v2_utils.resolve_by_name(self.client.zones.list, zone)
+ url = self.build_url(f'/zones/{zone_id}/shares',
+ criterion, marker, limit)
+
+ return self._get(url, response_key='shared_zones')
+
+ def delete(self, zone, shared_zone_id):
+ zone_id = v2_utils.resolve_by_name(self.client.zones.list, zone)
+
+ return self._delete(f'/zones/{zone_id}/shares/{shared_zone_id}')
+
+ def get(self, zone, shared_zone_id):
+ zone_id = v2_utils.resolve_by_name(self.client.zones.list, zone)
+
+ return self._get(f'/zones/{zone_id}/shares/{shared_zone_id}')