summaryrefslogtreecommitdiff
path: root/designateclient
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-06-30 16:20:37 +0000
committerGerrit Code Review <review@openstack.org>2016-06-30 16:20:38 +0000
commitfd118972b0128dbd65d349a385f4cab7b528217e (patch)
tree4ab4caf3bccf007578c0538409a93f52c3a79108 /designateclient
parentf40bd9c9e00075d4da1d0b90ab62e1f7a2a382fd (diff)
parent3d24d8d3a50db14b7c0d3259f3a1254bfaf49f6a (diff)
downloadpython-designateclient-fd118972b0128dbd65d349a385f4cab7b528217e.tar.gz
Merge "Add global flags to cli"
Diffstat (limited to 'designateclient')
-rw-r--r--designateclient/osc/plugin.py1
-rw-r--r--designateclient/v2/cli/blacklists.py22
-rw-r--r--designateclient/v2/cli/common.py74
-rw-r--r--designateclient/v2/cli/recordsets.py28
-rw-r--r--designateclient/v2/cli/reverse.py12
-rw-r--r--designateclient/v2/cli/service_statuses.py8
-rw-r--r--designateclient/v2/cli/tlds.py17
-rw-r--r--designateclient/v2/cli/zones.py81
-rw-r--r--designateclient/v2/client.py33
-rw-r--r--designateclient/v2/utils.py2
10 files changed, 274 insertions, 4 deletions
diff --git a/designateclient/osc/plugin.py b/designateclient/osc/plugin.py
index fb77696..b88ae30 100644
--- a/designateclient/osc/plugin.py
+++ b/designateclient/osc/plugin.py
@@ -33,6 +33,7 @@ def make_client(instance):
API_NAME, instance._api_version[API_NAME],
API_VERSIONS)
kwargs = oscutils.build_kwargs_dict('endpoint_type', instance._interface)
+
return cls(session=instance.session,
region_name=instance._region_name, **kwargs)
diff --git a/designateclient/v2/cli/blacklists.py b/designateclient/v2/cli/blacklists.py
index 9310841..630bc6d 100644
--- a/designateclient/v2/cli/blacklists.py
+++ b/designateclient/v2/cli/blacklists.py
@@ -22,8 +22,10 @@ from cliff import show
import six
from designateclient import utils
+from designateclient.v2.cli import common
from designateclient.v2.utils import get_all
+
LOG = logging.getLogger(__name__)
@@ -37,8 +39,16 @@ class ListBlacklistsCommand(lister.Lister):
columns = ['id', 'pattern', 'description']
+ def get_parser(self, prog_name):
+ parser = super(ListBlacklistsCommand, self).get_parser(prog_name)
+
+ common.add_all_common_options(parser)
+
+ return parser
+
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
cols = self.columns
data = get_all(client.blacklists.list)
@@ -53,10 +63,13 @@ class ShowBlacklistCommand(show.ShowOne):
parser.add_argument('id', help="Blacklist ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.blacklists.get(parsed_args.id)
_format_blacklist(data)
return six.moves.zip(*sorted(six.iteritems(data)))
@@ -72,10 +85,13 @@ class CreateBlacklistCommand(show.ShowOne):
required=True)
parser.add_argument('--description', help="Description")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.blacklists.create(
parsed_args.pattern, parsed_args.description)
@@ -97,6 +113,8 @@ class SetBlacklistCommand(show.ShowOne):
description_group.add_argument('--description', help="Description")
description_group.add_argument('--no-description', action='store_true')
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
@@ -111,6 +129,7 @@ class SetBlacklistCommand(show.ShowOne):
data['description'] = parsed_args.description
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
updated = client.blacklists.update(parsed_args.id, data)
@@ -126,10 +145,13 @@ class DeleteBlacklistCommand(command.Command):
parser.add_argument('id', help="Blacklist ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
client.blacklists.delete(parsed_args.id)
LOG.info('Blacklist %s was deleted', parsed_args.id)
diff --git a/designateclient/v2/cli/common.py b/designateclient/v2/cli/common.py
new file mode 100644
index 0000000..ca66754
--- /dev/null
+++ b/designateclient/v2/cli/common.py
@@ -0,0 +1,74 @@
+# Copyright 2016 Hewlett Packard Enterprise Development Company LP
+#
+# Author: Graham Hayes <endre.karlson@hp.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+
+def add_all_projects_option(parser):
+ parser.add_argument(
+ '--all-projects',
+ default=False,
+ action='store_true',
+ help='Show results from all projects. Default: False'
+ )
+
+
+def add_edit_managed_option(parser):
+ parser.add_argument(
+ '--edit-managed',
+ default=False,
+ action='store_true',
+ help='Edit resources marked as managed. Default: False'
+ )
+
+
+def add_sudo_project_id_option(parser):
+ parser.add_argument(
+ '--sudo-project-id',
+ default=None,
+ help='Project ID to impersonate for this command. Default: None'
+ )
+
+
+def add_all_common_options(parser):
+ add_all_projects_option(parser)
+ add_edit_managed_option(parser)
+ add_sudo_project_id_option(parser)
+
+
+def set_all_projects(client, value):
+ client.session.all_projects = value
+
+
+def set_sudo_project_id(client, value):
+ client.session.sudo_project_id = value
+
+
+def set_edit_managed(client, value):
+ client.session.edit_managed = value
+
+
+def set_all_common_headers(client, parsed_args):
+
+ if parsed_args.all_projects is not None and \
+ isinstance(parsed_args.all_projects, bool):
+ set_all_projects(client, parsed_args.all_projects)
+
+ if parsed_args.edit_managed is not None and \
+ isinstance(parsed_args.edit_managed, bool):
+ set_edit_managed(client, parsed_args.edit_managed)
+
+ 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)
diff --git a/designateclient/v2/cli/recordsets.py b/designateclient/v2/cli/recordsets.py
index 55f01c5..574401f 100644
--- a/designateclient/v2/cli/recordsets.py
+++ b/designateclient/v2/cli/recordsets.py
@@ -21,8 +21,10 @@ from cliff import show
import six
from designateclient import utils
+from designateclient.v2.cli import common
from designateclient.v2.utils import get_all
+
LOG = logging.getLogger(__name__)
@@ -33,6 +35,14 @@ def _format_recordset(recordset):
return recordset
+def _has_project_id(data):
+ if len(data) < 1:
+ return False
+ if 'project_id' in data[0]:
+ return True
+ return False
+
+
class ListRecordSetsCommand(lister.Lister):
"""List recordsets"""
@@ -57,10 +67,13 @@ class ListRecordSetsCommand(lister.Lister):
parser.add_argument('zone_id', help="Zone ID. To list all"
" recordsets specify 'all'")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
criterion = {}
if parsed_args.type is not None:
@@ -94,6 +107,9 @@ class ListRecordSetsCommand(lister.Lister):
data = get_all(client.recordsets.list, args=[parsed_args.zone_id],
criterion=criterion)
+ if client.session.all_projects and _has_project_id(data):
+ cols.insert(1, 'project_id')
+
for i, rs in enumerate(data):
data[i] = _format_recordset(rs)
@@ -109,10 +125,13 @@ class ShowRecordSetCommand(show.ShowOne):
parser.add_argument('zone_id', help="Zone ID")
parser.add_argument('id', help="RecordSet ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.recordsets.get(parsed_args.zone_id, parsed_args.id)
_format_recordset(data)
@@ -133,10 +152,13 @@ class CreateRecordSetCommand(show.ShowOne):
parser.add_argument('--ttl', type=int, help="Time To Live (Seconds)")
parser.add_argument('--description', help="Description")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.recordsets.create(
parsed_args.zone_id,
@@ -168,6 +190,8 @@ class SetRecordSetCommand(show.ShowOne):
ttl_group.add_argument('--ttl', type=int, help="TTL")
ttl_group.add_argument('--no-ttl', action='store_true')
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
@@ -187,6 +211,7 @@ class SetRecordSetCommand(show.ShowOne):
data['records'] = parsed_args.records
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
updated = client.recordsets.update(
parsed_args.zone_id,
@@ -207,10 +232,13 @@ class DeleteRecordSetCommand(show.ShowOne):
parser.add_argument('zone_id', help="Zone ID")
parser.add_argument('id', help="RecordSet ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.recordsets.delete(parsed_args.zone_id, parsed_args.id)
LOG.info('RecordSet %s was deleted', parsed_args.id)
diff --git a/designateclient/v2/cli/reverse.py b/designateclient/v2/cli/reverse.py
index c8c2baf..1e5b38c 100644
--- a/designateclient/v2/cli/reverse.py
+++ b/designateclient/v2/cli/reverse.py
@@ -22,8 +22,10 @@ from cliff import show
import six
from designateclient import utils
+from designateclient.v2.cli import common
from designateclient.v2.utils import get_all
+
LOG = logging.getLogger(__name__)
@@ -39,6 +41,7 @@ class ListFloatingIPCommand(lister.Lister):
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
cols = self.columns
data = get_all(client.floatingips.list)
@@ -53,10 +56,13 @@ class ShowFloatingIPCommand(show.ShowOne):
parser.add_argument('floatingip_id', help="Floating IP ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.floatingips.get(parsed_args.floatingip_id)
_format_floatingip(data)
return six.moves.zip(*sorted(six.iteritems(data)))
@@ -79,6 +85,8 @@ class SetFloatingIPCommand(show.ShowOne):
ttl_group.add_argument('--ttl', type=int, help="TTL")
ttl_group.add_argument('--no-ttl', action='store_true')
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
@@ -95,6 +103,7 @@ class SetFloatingIPCommand(show.ShowOne):
data['ttl'] = parsed_args.ttl
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
fip = client.floatingips.set(
parsed_args.floatingip_id,
@@ -114,9 +123,12 @@ class UnsetFloatingIPCommand(command.Command):
parser.add_argument('floatingip_id', help="Floating IP ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
client.floatingips.unset(parsed_args.floatingip_id)
LOG.info('FloatingIP PTR %s was unset', parsed_args.floatingip_id)
diff --git a/designateclient/v2/cli/service_statuses.py b/designateclient/v2/cli/service_statuses.py
index 9be0429..9e1ee50 100644
--- a/designateclient/v2/cli/service_statuses.py
+++ b/designateclient/v2/cli/service_statuses.py
@@ -21,8 +21,10 @@ from cliff import show
import six
from designateclient import utils
+from designateclient.v2.cli import common
from designateclient.v2 import utils as v2_utils
+
LOG = logging.getLogger(__name__)
@@ -47,10 +49,13 @@ class ListServiceStatusesCommand(lister.Lister):
parser.add_argument("--service_name", help="Service Name",
required=False)
parser.add_argument("--status", help="Status", required=False)
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
cols = self.columns
@@ -77,10 +82,13 @@ class ShowServiceStatusCommand(show.ShowOne):
parser.add_argument('id', help="Service Status ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.service_statuses.get(parsed_args.id)
_format_status(data)
diff --git a/designateclient/v2/cli/tlds.py b/designateclient/v2/cli/tlds.py
index 9f3dc77..0109ed7 100644
--- a/designateclient/v2/cli/tlds.py
+++ b/designateclient/v2/cli/tlds.py
@@ -22,8 +22,10 @@ from cliff import show
import six
from designateclient import utils
+from designateclient.v2.cli import common
from designateclient.v2.utils import get_all
+
LOG = logging.getLogger(__name__)
@@ -44,10 +46,13 @@ class ListTLDsCommand(lister.Lister):
parser.add_argument('--description', help="TLD Description")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = get_all(client.tlds.list)
@@ -63,10 +68,13 @@ class ShowTLDCommand(show.ShowOne):
parser.add_argument('id', help="TLD ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.tlds.get(parsed_args.id)
_format_tld(data)
return six.moves.zip(*sorted(six.iteritems(data)))
@@ -81,10 +89,13 @@ class CreateTLDCommand(show.ShowOne):
parser.add_argument('--name', help="TLD Name", required=True)
parser.add_argument('--description', help="Description")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.tlds.create(parsed_args.name, parsed_args.description)
_format_tld(data)
return six.moves.zip(*sorted(six.iteritems(data)))
@@ -102,6 +113,8 @@ class SetTLDCommand(show.ShowOne):
description_group.add_argument('--description', help="Description")
description_group.add_argument('--no-description', action='store_true')
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
@@ -116,6 +129,7 @@ class SetTLDCommand(show.ShowOne):
data['description'] = parsed_args.description
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.tlds.update(parsed_args.id, data)
_format_tld(data)
@@ -130,10 +144,13 @@ class DeleteTLDCommand(command.Command):
parser.add_argument('id', help="TLD ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
client.tlds.delete(parsed_args.id)
LOG.info('TLD %s was deleted', parsed_args.id)
diff --git a/designateclient/v2/cli/zones.py b/designateclient/v2/cli/zones.py
index 5bcd1c1..94c8fd8 100644
--- a/designateclient/v2/cli/zones.py
+++ b/designateclient/v2/cli/zones.py
@@ -23,8 +23,10 @@ from osc_lib import exceptions as osc_exc
import six
from designateclient import utils
+from designateclient.v2.cli import common
from designateclient.v2.utils import get_all
+
LOG = logging.getLogger(__name__)
@@ -58,10 +60,15 @@ class ListZonesCommand(lister.Lister):
required=False)
parser.add_argument('--status', help="Zone Status", required=False)
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
+
+ common.set_all_common_headers(client, parsed_args)
criterion = {}
if parsed_args.type is not None:
@@ -85,6 +92,10 @@ class ListZonesCommand(lister.Lister):
data = get_all(client.zones.list, criterion)
cols = self.columns
+
+ if client.session.all_projects:
+ cols.insert(1, 'project_id')
+
return cols, (utils.get_item_properties(s, cols) for s in data)
@@ -96,10 +107,13 @@ class ShowZoneCommand(show.ShowOne):
parser.add_argument('id', help="Zone ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.zones.get(parsed_args.id)
@@ -120,10 +134,13 @@ class CreateZoneCommand(show.ShowOne):
parser.add_argument('--description', help="Description")
parser.add_argument('--masters', help="Zone Masters", nargs='+')
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
payload = {}
@@ -170,10 +187,13 @@ class SetZoneCommand(show.ShowOne):
parser.add_argument('--masters', help="Zone Masters", nargs='+')
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = {}
@@ -205,10 +225,14 @@ class DeleteZoneCommand(show.ShowOne):
parser.add_argument('id', help="Zone ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
+
data = client.zones.delete(parsed_args.id)
LOG.info('Zone %s was deleted', parsed_args.id)
@@ -223,10 +247,13 @@ class AbandonZoneCommand(command.Command):
parser.add_argument('id', help="Zone ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
client.zones.abandon(parsed_args.id)
@@ -241,10 +268,13 @@ class AXFRZoneCommand(command.Command):
parser.add_argument('id', help="Zone ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
client.zones.axfr(parsed_args.id)
@@ -265,10 +295,13 @@ class CreateTransferRequestCommand(show.ShowOne):
help="Target Project ID to transfer to.")
parser.add_argument('--description', help="Description")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.zone_transfers.create_request(
parsed_args.zone_id, parsed_args.target_project_id,
@@ -286,10 +319,13 @@ class ListTransferRequestsCommand(lister.Lister):
parser = super(ListTransferRequestsCommand, self).get_parser(
prog_name)
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.zone_transfers.list_requests()
@@ -305,10 +341,13 @@ class ShowTransferRequestCommand(show.ShowOne):
parser.add_argument('id', help="Zone Tranfer Request ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.zone_transfers.get_request(parsed_args.id)
@@ -326,10 +365,13 @@ class SetTransferRequestCommand(show.ShowOne):
description_group.add_argument('--description', help="Description")
description_group.add_argument('--no-description', action='store_true')
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = {}
@@ -350,10 +392,13 @@ class DeleteTransferRequestCommand(command.Command):
parser.add_argument('id', help="Zone Transfer Request ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
client.zone_transfers.delete_request(parsed_args.id)
@@ -372,10 +417,13 @@ class AcceptTransferRequestCommand(show.ShowOne):
parser.add_argument('--key', help="Transfer Key", type=str,
required=True)
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.zone_transfers.accept_request(
parsed_args.transfer_id, parsed_args.key)
@@ -392,10 +440,13 @@ class ListTransferAcceptsCommand(lister.Lister):
parser = super(ListTransferAcceptsCommand, self).get_parser(
prog_name)
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.zone_transfers.list_requests()
@@ -411,10 +462,13 @@ class ShowTransferAcceptCommand(show.ShowOne):
parser.add_argument('id', help="Zone Tranfer Accept ID")
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.zone_transfers.get_accept(parsed_args.id)
@@ -428,12 +482,15 @@ class ExportZoneCommand(show.ShowOne):
parser = super(ExportZoneCommand, self).get_parser(
prog_name)
+ common.add_all_common_options(parser)
+
parser.add_argument('zone_id', help="Zone ID", type=str)
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.zone_exports.create(parsed_args.zone_id)
_format_zone_export_record(data)
@@ -457,10 +514,13 @@ class ListZoneExportsCommand(lister.Lister):
parser = super(ListZoneExportsCommand, self).get_parser(
prog_name)
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.zone_exports.list()
@@ -478,10 +538,13 @@ class ShowZoneExportCommand(show.ShowOne):
parser.add_argument('zone_export_id', help="Zone Export ID", type=str)
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.zone_exports.get_export_record(
parsed_args.zone_export_id)
@@ -499,10 +562,13 @@ class DeleteZoneExportCommand(command.Command):
parser.add_argument('zone_export_id', help="Zone Export ID", type=str)
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
client.zone_exports.delete(parsed_args.zone_export_id)
@@ -518,10 +584,13 @@ class ShowZoneExportFileCommand(show.ShowOne):
parser.add_argument('zone_export_id', help="Zone Export ID", type=str)
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.zone_exports.get_export(parsed_args.zone_export_id)
@@ -538,10 +607,13 @@ class ImportZoneCommand(show.ShowOne):
parser.add_argument('zone_file_path',
help="Path to a zone file", type=str)
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
with open(parsed_args.zone_file_path, 'r') as f:
zone_file_contents = f.read()
@@ -569,10 +641,13 @@ class ListZoneImportsCommand(lister.Lister):
parser = super(ListZoneImportsCommand, self).get_parser(
prog_name)
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.zone_imports.list()
@@ -590,10 +665,13 @@ class ShowZoneImportCommand(show.ShowOne):
parser.add_argument('zone_import_id', help="Zone Import ID", type=str)
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
data = client.zone_imports.get_import_record(
parsed_args.zone_import_id)
@@ -611,10 +689,13 @@ class DeleteZoneImportCommand(command.Command):
parser.add_argument('zone_import_id', help="Zone Import ID", type=str)
+ common.add_all_common_options(parser)
+
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.dns
+ common.set_all_common_headers(client, parsed_args)
client.zone_imports.delete(parsed_args.zone_import_id)
diff --git a/designateclient/v2/client.py b/designateclient/v2/client.py
index e000fd3..e7eba3b 100644
--- a/designateclient/v2/client.py
+++ b/designateclient/v2/client.py
@@ -41,6 +41,9 @@ class DesignateAdapter(adapter.LegacyJsonAdapter):
"""
def __init__(self, *args, **kwargs):
self.timeout = kwargs.pop('timeout', None)
+ self.all_projects = kwargs.pop('all_projects', False)
+ self.edit_managed = kwargs.pop('edit_managed', False)
+ self.sudo_project_id = kwargs.pop('sudo_project_id', None)
super(self.__class__, self).__init__(*args, **kwargs)
def request(self, *args, **kwargs):
@@ -49,7 +52,27 @@ class DesignateAdapter(adapter.LegacyJsonAdapter):
if self.timeout is not None:
kwargs.setdefault('timeout', self.timeout)
- kwargs.setdefault('headers', {}).setdefault(
+ kwargs.setdefault('headers', {})
+
+ if self.all_projects:
+ kwargs['headers'].setdefault(
+ 'X-Auth-All-Projects',
+ self.all_projects
+ )
+
+ if self.edit_managed:
+ kwargs['headers'].setdefault(
+ 'X-Designate-Edit-Managed-Records',
+ self.edit_managed
+ )
+
+ if self.sudo_project_id is not None:
+ kwargs['headers'].setdefault(
+ 'X-Auth-Sudo-Project-ID',
+ self.sudo_project_id
+ )
+
+ kwargs['headers'].setdefault(
'Content-Type', 'application/json')
response, body = super(self.__class__, self).request(*args, **kwargs)
@@ -78,7 +101,8 @@ class Client(object):
def __init__(self, region_name=None, endpoint_type='publicURL',
extensions=None, service_type='dns', service_name=None,
http_log_debug=False, session=None, auth=None, timeout=None,
- endpoint_override=None):
+ endpoint_override=None, all_projects=False,
+ edit_managed=False, sudo_project_id=None):
if session is None:
raise ValueError("A session instance is required")
@@ -91,7 +115,10 @@ class Client(object):
user_agent='python-designateclient-%s' % version.version_info,
version=('2'),
endpoint_override=endpoint_override,
- timeout=timeout
+ timeout=timeout,
+ all_projects=all_projects,
+ edit_managed=edit_managed,
+ sudo_project_id=sudo_project_id
)
self.blacklists = BlacklistController(self)
diff --git a/designateclient/v2/utils.py b/designateclient/v2/utils.py
index 4a69a55..b56b4ce 100644
--- a/designateclient/v2/utils.py
+++ b/designateclient/v2/utils.py
@@ -77,4 +77,4 @@ def get_all(function, criterion=None, args=None):
else:
break
- return returned_data \ No newline at end of file
+ return returned_data