Merge "pyupgrade changes for Python3.8+"

This commit is contained in:
Zuul 2023-11-23 18:15:42 +00:00 committed by Gerrit Code Review
commit 732cd520d4
54 changed files with 459 additions and 459 deletions

View File

@ -24,7 +24,7 @@ from oslo_serialization import jsonutils
from designateclient import exceptions
class Controller(object, metaclass=abc.ABCMeta):
class Controller(metaclass=abc.ABCMeta):
def __init__(self, client):
self.client = client
@ -38,10 +38,10 @@ class Controller(object, metaclass=abc.ABCMeta):
params['limit'] = limit
q = parse.urlencode(params) if params else ''
return '%(url)s%(params)s' % {
'url': url,
'params': '?%s' % q
}
return '{url}{params}'.format(
url=url,
params=f'?{q}'
)
def _serialize(self, kwargs):
headers = kwargs.get('headers')
@ -122,13 +122,14 @@ class CrudController(Controller, metaclass=abc.ABCMeta):
def get_versions():
mgr = extension.ExtensionManager('designateclient.versions')
return dict([(ep.name, ep.plugin) for ep in mgr.extensions])
return {ep.name: ep.plugin for ep in mgr.extensions}
def Client(version, *args, **kwargs): # noqa
versions = get_versions()
if version not in versions:
msg = 'Version %s is not supported, use one of (%s)' % (
version, list(versions.keys()))
msg = 'Version {} is not supported, use one of ({})'.format(
version, list(versions.keys())
)
raise exceptions.UnsupportedVersion(msg)
return versions[version](*args, **kwargs)

View File

@ -19,7 +19,7 @@ class Base(Exception):
def __init__(self, message=None):
if not message:
message = self.__class__.__name__
super(Base, self).__init__(message)
super().__init__(message)
class UnsupportedVersion(Base):
@ -44,7 +44,7 @@ class RemoteError(Base):
self.errors = errors
self.request_id = request_id
super(RemoteError, self).__init__(err_message)
super().__init__(err_message)
def _get_error_message(self, _message, _type, _errors):
# Try to get a useful error msg if 'message' has nothing

View File

@ -45,7 +45,7 @@ def build_option_string(options):
"--email 'me@example.com' --name 'example.com.'
"""
return " ".join("{0} '{1}'".format(flag, value)
return " ".join(f"{flag} '{value}'"
for flag, value in options.items()
if value is not None)
@ -72,18 +72,18 @@ def build_flags_string(flags):
return " ".join(flags.keys())
class ZoneCommands(object):
class ZoneCommands:
"""This is a mixin that provides zone commands to DesignateCLI"""
def zone_list(self, *args, **kwargs):
return self.parsed_cmd('zone list', ListModel, *args, **kwargs)
def zone_show(self, id, *args, **kwargs):
return self.parsed_cmd('zone show %s' % id, FieldValueModel, *args,
return self.parsed_cmd(f'zone show {id}', FieldValueModel, *args,
**kwargs)
def zone_delete(self, id, *args, **kwargs):
return self.parsed_cmd('zone delete %s' % id, FieldValueModel, *args,
return self.parsed_cmd(f'zone delete {id}', FieldValueModel, *args,
**kwargs)
def zone_create(self, name, email=None, ttl=None, description=None,
@ -95,7 +95,7 @@ class ZoneCommands(object):
"--masters": masters,
"--type": type,
})
cmd = 'zone create {0} {1}'.format(name, options_str)
cmd = f'zone create {name} {options_str}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def zone_set(self, id, email=None, ttl=None, description=None,
@ -107,11 +107,11 @@ class ZoneCommands(object):
"--masters": masters,
"--type": type,
})
cmd = 'zone set {0} {1}'.format(id, options_str)
cmd = f'zone set {id} {options_str}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
class ZoneTransferCommands(object):
class ZoneTransferCommands:
"""A mixin for DesignateCLI to add zone transfer commands"""
def zone_transfer_request_list(self, *args, **kwargs):
@ -124,21 +124,20 @@ class ZoneTransferCommands(object):
"--target-project-id": target_project_id,
"--description": description,
})
cmd = 'zone transfer request create {0} {1}'.format(
zone_id, options_str)
cmd = f'zone transfer request create {zone_id} {options_str}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def zone_transfer_request_show(self, id, *args, **kwargs):
cmd = 'zone transfer request show {0}'.format(id)
cmd = f'zone transfer request show {id}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def zone_transfer_request_set(self, id, description=None, *args, **kwargs):
options_str = build_option_string({"--description": description})
cmd = 'zone transfer request set {0} {1}'.format(options_str, id)
cmd = f'zone transfer request set {options_str} {id}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def zone_transfer_request_delete(self, id, *args, **kwargs):
cmd = 'zone transfer request delete {0}'.format(id)
cmd = f'zone transfer request delete {id}'
return self.parsed_cmd(cmd, *args, **kwargs)
def zone_transfer_accept_request(self, id, key, *args, **kwargs):
@ -146,11 +145,11 @@ class ZoneTransferCommands(object):
"--transfer-id": id,
"--key": key,
})
cmd = 'zone transfer accept request {0}'.format(options_str)
cmd = f'zone transfer accept request {options_str}'
return self.parsed_cmd(cmd, *args, **kwargs)
def zone_transfer_accept_show(self, id, *args, **kwargs):
cmd = 'zone transfer accept show {0}'.format(id)
cmd = f'zone transfer accept show {id}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def zone_transfer_accept_list(self, *args, **kwargs):
@ -158,7 +157,7 @@ class ZoneTransferCommands(object):
return self.parsed_cmd(cmd, ListModel, *args, **kwargs)
class ZoneExportCommands(object):
class ZoneExportCommands:
"""A mixin for DesignateCLI to add zone export commands"""
def zone_export_list(self, *args, **kwargs):
@ -166,24 +165,23 @@ class ZoneExportCommands(object):
return self.parsed_cmd(cmd, ListModel, *args, **kwargs)
def zone_export_create(self, zone_id, *args, **kwargs):
cmd = 'zone export create {0}'.format(
zone_id)
cmd = f'zone export create {zone_id}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def zone_export_show(self, zone_export_id, *args, **kwargs):
cmd = 'zone export show {0}'.format(zone_export_id)
cmd = f'zone export show {zone_export_id}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def zone_export_delete(self, zone_export_id, *args, **kwargs):
cmd = 'zone export delete {0}'.format(zone_export_id)
cmd = f'zone export delete {zone_export_id}'
return self.parsed_cmd(cmd, *args, **kwargs)
def zone_export_showfile(self, zone_export_id, *args, **kwargs):
cmd = 'zone export showfile {0}'.format(zone_export_id)
cmd = f'zone export showfile {zone_export_id}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
class ZoneImportCommands(object):
class ZoneImportCommands:
"""A mixin for DesignateCLI to add zone import commands"""
def zone_import_list(self, *args, **kwargs):
@ -191,26 +189,26 @@ class ZoneImportCommands(object):
return self.parsed_cmd(cmd, ListModel, *args, **kwargs)
def zone_import_create(self, zone_file_path, *args, **kwargs):
cmd = 'zone import create {0}'.format(zone_file_path)
cmd = f'zone import create {zone_file_path}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def zone_import_show(self, zone_import_id, *args, **kwargs):
cmd = 'zone import show {0}'.format(zone_import_id)
cmd = f'zone import show {zone_import_id}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def zone_import_delete(self, zone_import_id, *args, **kwargs):
cmd = 'zone import delete {0}'.format(zone_import_id)
cmd = f'zone import delete {zone_import_id}'
return self.parsed_cmd(cmd, *args, **kwargs)
class RecordsetCommands(object):
class RecordsetCommands:
def recordset_show(self, zone_id, id, *args, **kwargs):
cmd = 'recordset show {0} {1}'.format(zone_id, id)
cmd = f'recordset show {zone_id} {id}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def recordset_list(self, zone_id, *args, **kwargs):
cmd = 'recordset list {0}'.format(zone_id)
cmd = f'recordset list {zone_id}'
return self.parsed_cmd(cmd, ListModel, *args, **kwargs)
def recordset_create(self, zone_id, name, records=None, type=None,
@ -221,7 +219,7 @@ class RecordsetCommands(object):
'--description': description,
'--ttl': ttl,
})
cmd = 'recordset create {0} {1} {2}'.format(zone_id, name, options_str)
cmd = f'recordset create {zone_id} {name} {options_str}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def recordset_set(self, zone_id, id, records=None, type=None,
@ -237,33 +235,32 @@ class RecordsetCommands(object):
'--no-description': no_description,
'--no-ttl': no_ttl,
})
cmd = 'recordset set {0} {1} {2} {3}'.format(
zone_id, id, flags_str, options_str)
cmd = f'recordset set {zone_id} {id} {flags_str} {options_str}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def recordset_delete(self, zone_id, id, *args, **kwargs):
cmd = 'recordset delete {0} {1}'.format(zone_id, id)
cmd = f'recordset delete {zone_id} {id}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
class TLDCommands(object):
class TLDCommands:
def tld_list(self, *args, **kwargs):
return self.parsed_cmd('tld list', ListModel, *args, **kwargs)
def tld_show(self, id, *args, **kwargs):
return self.parsed_cmd('tld show {0}'.format(id), FieldValueModel,
return self.parsed_cmd(f'tld show {id}', FieldValueModel,
*args, **kwargs)
def tld_delete(self, id, *args, **kwargs):
return self.parsed_cmd('tld delete {0}'.format(id), *args, **kwargs)
return self.parsed_cmd(f'tld delete {id}', *args, **kwargs)
def tld_create(self, name, description=None, *args, **kwargs):
options_str = build_option_string({
'--name': name,
'--description': description,
})
cmd = 'tld create {0}'.format(options_str)
cmd = f'tld create {options_str}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def tld_set(self, id, name=None, description=None, no_description=False,
@ -273,20 +270,20 @@ class TLDCommands(object):
'--description': description,
})
flags_str = build_flags_string({'--no-description': no_description})
cmd = 'tld set {0} {1} {2}'.format(id, options_str, flags_str)
cmd = f'tld set {id} {options_str} {flags_str}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
class TSIGKeyCommands(object):
class TSIGKeyCommands:
def tsigkey_list(self, *args, **kwargs):
return self.parsed_cmd('tsigkey list', ListModel, *args, **kwargs)
def tsigkey_show(self, id, *args, **kwargs):
return self.parsed_cmd('tsigkey show {0}'.format(id), FieldValueModel,
return self.parsed_cmd(f'tsigkey show {id}', FieldValueModel,
*args, **kwargs)
def tsigkey_delete(self, id, *args, **kwargs):
return self.parsed_cmd('tsigkey delete {0}'.format(id), *args,
return self.parsed_cmd(f'tsigkey delete {id}', *args,
**kwargs)
def tsigkey_create(self, name, algorithm, secret, scope, resource_id,
@ -298,7 +295,7 @@ class TSIGKeyCommands(object):
'--scope': scope,
'--resource-id': resource_id,
})
cmd = 'tsigkey create {0}'.format(options_str)
cmd = f'tsigkey create {options_str}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def tsigkey_set(self, id, name=None, algorithm=None, secret=None,
@ -310,11 +307,11 @@ class TSIGKeyCommands(object):
'--secret': secret,
'--scope': scope,
})
cmd = 'tsigkey set {0} {1}'.format(id, options_str)
cmd = f'tsigkey set {id} {options_str}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
class BlacklistCommands(object):
class BlacklistCommands:
def zone_blacklist_list(self, *args, **kwargs):
cmd = 'zone blacklist list'
return self.parsed_cmd(cmd, ListModel, *args, **kwargs)
@ -325,7 +322,7 @@ class BlacklistCommands(object):
'--pattern': pattern,
'--description': description,
})
cmd = 'zone blacklist create {0}'.format(options_str)
cmd = f'zone blacklist create {options_str}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def zone_blacklist_set(self, id, pattern=None, description=None,
@ -335,35 +332,34 @@ class BlacklistCommands(object):
'--description': description,
})
flags_str = build_flags_string({'--no-description': no_description})
cmd = 'zone blacklist set {0} {1} {2}'.format(id, options_str,
flags_str)
cmd = f'zone blacklist set {id} {options_str} {flags_str}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def zone_blacklist_show(self, id, *args, **kwargs):
cmd = 'zone blacklist show {0}'.format(id)
cmd = f'zone blacklist show {id}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def zone_blacklist_delete(self, id, *args, **kwargs):
cmd = 'zone blacklist delete {0}'.format(id)
cmd = f'zone blacklist delete {id}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
class SharedZoneCommands(object):
class SharedZoneCommands:
def shared_zone_show(self, zone_id, shared_zone_id, *args, **kwargs):
cmd = 'zone share show {0} {1}'.format(zone_id, shared_zone_id)
cmd = f'zone share show {zone_id} {shared_zone_id}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def shared_zone_list(self, zone_id, *args, **kwargs):
cmd = 'zone share list {0}'.format(zone_id)
cmd = f'zone share list {zone_id}'
return self.parsed_cmd(cmd, ListModel, *args, **kwargs)
def share_zone(self, zone_id, target_project_id, *args, **kwargs):
cmd = 'zone share create {0} {1}'.format(zone_id, target_project_id)
cmd = f'zone share create {zone_id} {target_project_id}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
def unshare_zone(self, zone_id, shared_zone_id, *args, **kwargs):
cmd = 'zone share delete {0} {1}'.format(zone_id, shared_zone_id)
cmd = f'zone share delete {zone_id} {shared_zone_id}'
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
@ -375,7 +371,7 @@ class DesignateCLI(base.CLIClient, ZoneCommands, ZoneTransferCommands,
_CLIENTS = None
def __init__(self, *args, **kwargs):
super(DesignateCLI, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)
# grab the project id. this is used for zone transfer requests
resp = FieldValueModel(self.openstack('token issue'))
self.project_id = resp.project_id
@ -421,7 +417,7 @@ class DesignateCLI(base.CLIClient, ZoneCommands, ZoneTransferCommands,
clients = self.get_clients()
if user in clients:
return clients[user]
raise Exception("User '{0}' does not exist".format(user))
raise Exception(f"User '{user}' does not exist")
def parsed_cmd(self, cmd, model=None, *args, **kwargs):
if self.using_auth_override:

View File

@ -18,40 +18,43 @@ import string
def random_digits(n=8):
return "".join([random.choice(string.digits) for _ in range(n)])
return ''.join([random.choice(string.digits) for _ in range(n)])
def random_tld(name='testtld'):
return "{0}{1}".format(name, random_digits())
return f'{name}{random_digits()}'
def random_tsigkey_name(name='testtsig'):
return "{0}{1}".format(name, random_digits())
return f'{name}{random_digits()}'
def random_tsigkey_secret(name='test-secret'):
return "{0}-{1}".format(name, random_digits(254 - len(name)))
return f'{name}-{random_digits(254 - len(name))}'
def random_zone_name(name='testdomain', tld='com'):
return "{0}{1}.{2}.".format(name, random_digits(), tld)
return f'{name}{random_digits()}.{tld}.'
def random_a_recordset_name(zone_name, recordset_name='testrecord'):
return "{0}{1}.{2}".format(recordset_name, random_digits(), zone_name)
return f'{recordset_name}{random_digits()}.{zone_name}'
def random_blacklist(name='testblacklist'):
return '{0}{1}'.format(name, random_digits())
return f'{name}{random_digits()}'
def random_zone_file(name='testzoneimport'):
return ("$ORIGIN {0}{1}.com.\n"
"$TTL 300\n"
"{0}{1}.com. 300 IN SOA ns.{0}{1}.com. "
"nsadmin.{0}{1}.com. 42 42 42 42 42\n"
"{0}{1}.com. 300 IN NS ns.{0}{1}.com.\n"
"{0}{1}.com. 300 IN MX 10 mail.{0}{1}.com.\n"
"ns.{0}{1}.com. 300 IN A 10.0.0.1\n"
"mail.{0}{1}.com. 300 IN A 10.0.0.2\n".format(name,
random_digits()))
return (
'$ORIGIN {0}{1}.com.\n'
'$TTL 300\n'
'{0}{1}.com. 300 IN SOA ns.{0}{1}.com. '
'nsadmin.{0}{1}.com. 42 42 42 42 42\n'
'{0}{1}.com. 300 IN NS ns.{0}{1}.com.\n'
'{0}{1}.com. 300 IN MX 10 mail.{0}{1}.com.\n'
'ns.{0}{1}.com. 300 IN A 10.0.0.1\n'
'mail.{0}{1}.com. 300 IN A 10.0.0.2\n'.format(
name, random_digits()
)
)

View File

@ -16,7 +16,7 @@ limitations under the License.
from tempest.lib.cli import output_parser
class Model(object):
class Model:
def __str__(self):
return str(self.__dict__)

View File

@ -28,7 +28,7 @@ class BaseFixture(fixtures.Fixture):
def __init__(self, user='default', *args, **kwargs):
"""args/kwargs are forwarded to a create method on DesignateCLI"""
super(BaseFixture, self).__init__()
super().__init__()
self.args = args
self.kwargs = kwargs
self.client = DesignateCLI.as_user(user)
@ -39,7 +39,7 @@ class BaseFixture(fixtures.Fixture):
# with an artificial SetupError, which produces bad error messages.
# This just logs those stack traces to stderr for easier debugging.
try:
super(BaseFixture, self).setUp()
super().setUp()
except MultipleExceptions as e:
for i, exc_info in enumerate(e.args):
print('--- printing MultipleExceptions traceback {} of {} ---'
@ -52,7 +52,7 @@ class ZoneFixture(BaseFixture):
"""See DesignateCLI.zone_create for __init__ args"""
def _setUp(self):
super(ZoneFixture, self)._setUp()
super()._setUp()
self.zone = self.client.zone_create(*self.args, **self.kwargs)
self.addCleanup(self.cleanup_zone, self.client, self.zone.id)
@ -69,7 +69,7 @@ class TransferRequestFixture(BaseFixture):
def __init__(self, zone, user='default', target_user='alt', *args,
**kwargs):
super(TransferRequestFixture, self).__init__(user, *args, **kwargs)
super().__init__(user, *args, **kwargs)
self.zone = zone
self.target_client = DesignateCLI.as_user(target_user)
@ -78,7 +78,7 @@ class TransferRequestFixture(BaseFixture):
self.kwargs['target_project_id'] = self.target_client.project_id
def _setUp(self):
super(TransferRequestFixture, self)._setUp()
super()._setUp()
self.transfer_request = self.client.zone_transfer_request_create(
zone_id=self.zone.id,
*self.args, **self.kwargs
@ -101,11 +101,11 @@ class ExportFixture(BaseFixture):
"""See DesignateCLI.zone_export_create for __init__ args"""
def __init__(self, zone, user='default', *args, **kwargs):
super(ExportFixture, self).__init__(user, *args, **kwargs)
super().__init__(user, *args, **kwargs)
self.zone = zone
def _setUp(self):
super(ExportFixture, self)._setUp()
super()._setUp()
self.zone_export = self.client.zone_export_create(
zone_id=self.zone.id,
*self.args, **self.kwargs
@ -126,11 +126,11 @@ class ImportFixture(BaseFixture):
"""See DesignateCLI.zone_import_create for __init__ args"""
def __init__(self, zone_file_contents, user='default', *args, **kwargs):
super(ImportFixture, self).__init__(user, *args, **kwargs)
super().__init__(user, *args, **kwargs)
self.zone_file_contents = zone_file_contents
def _setUp(self):
super(ImportFixture, self)._setUp()
super()._setUp()
with tempfile.NamedTemporaryFile() as f:
f.write(self.zone_file_contents)
@ -158,7 +158,7 @@ class RecordsetFixture(BaseFixture):
"""See DesignateCLI.recordset_create for __init__ args"""
def _setUp(self):
super(RecordsetFixture, self)._setUp()
super()._setUp()
self.recordset = self.client.recordset_create(
*self.args, **self.kwargs)
self.addCleanup(self.cleanup_recordset, self.client,
@ -176,10 +176,10 @@ class TLDFixture(BaseFixture):
"""See DesignateCLI.tld_create for __init__ args"""
def __init__(self, user='admin', *args, **kwargs):
super(TLDFixture, self).__init__(user=user, *args, **kwargs)
super().__init__(user=user, *args, **kwargs)
def _setUp(self):
super(TLDFixture, self)._setUp()
super()._setUp()
self.tld = self.client.tld_create(*self.args, **self.kwargs)
self.addCleanup(self.cleanup_tld, self.client, self.tld.id)
@ -195,10 +195,10 @@ class TSIGKeyFixture(BaseFixture):
"""See DesignateCLI.tsigkey_create for __init__ args"""
def __init__(self, user='admin', *args, **kwargs):
super(TSIGKeyFixture, self).__init__(user=user, *args, **kwargs)
super().__init__(user=user, *args, **kwargs)
def _setUp(self):
super(TSIGKeyFixture, self)._setUp()
super()._setUp()
self.tsigkey = self.client.tsigkey_create(*self.args, **self.kwargs)
self.addCleanup(self.cleanup_tsigkey(self.client, self.tsigkey.id))
@ -214,10 +214,10 @@ class BlacklistFixture(BaseFixture):
"""See DesignateCLI.zone_blacklist_create for __init__ args"""
def __init__(self, user='admin', *args, **kwargs):
super(BlacklistFixture, self).__init__(user=user, *args, **kwargs)
super().__init__(user=user, *args, **kwargs)
def _setUp(self):
super(BlacklistFixture, self)._setUp()
super()._setUp()
self.blacklist = self.client.zone_blacklist_create(*self.args,
**self.kwargs)
self.addCleanup(self.cleanup_blacklist, self.client, self.blacklist.id)
@ -234,11 +234,11 @@ class SharedZoneFixture(BaseFixture):
"""See DesignateCLI.recordset_create for __init__ args"""
def __init__(self, zone, *args, **kwargs):
super(SharedZoneFixture, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)
self.zone = zone
def _setUp(self):
super(SharedZoneFixture, self)._setUp()
super()._setUp()
self.zone_share = self.client.zone_share(zone_id=self.zone.id,
*self.args, **self.kwargs)
self.addCleanup(self.cleanup_shared_zone, self.client, self.zone.id,

View File

@ -23,7 +23,7 @@ from designateclient.functionaltests.v2.fixtures import BlacklistFixture
class TestBlacklist(BaseDesignateTest):
def setUp(self):
super(TestBlacklist, self).setUp()
super().setUp()
pattern = random_blacklist()
self.blacklist = self.useFixture(BlacklistFixture(
pattern=pattern,

View File

@ -25,7 +25,7 @@ from designateclient.functionaltests.v2.fixtures import ZoneFixture
class TestRecordset(BaseDesignateTest):
def setUp(self):
super(TestRecordset, self).setUp()
super().setUp()
self.ensure_tld_exists('com')
self.zone = self.useFixture(ZoneFixture(
name=random_zone_name(),

View File

@ -23,7 +23,7 @@ from designateclient.functionaltests.v2.fixtures import ZoneFixture
class TestSharedZone(BaseDesignateTest):
def setUp(self):
super(TestSharedZone, self).setUp()
super().setUp()
self.ensure_tld_exists('com')
fixture = self.useFixture(ZoneFixture(
name=random_zone_name(),

View File

@ -23,7 +23,7 @@ from designateclient.functionaltests.v2.fixtures import TLDFixture
class TestTld(BaseDesignateTest):
def setUp(self):
super(TestTld, self).setUp()
super().setUp()
tld_name = random_tld()
self.tld = self.useFixture(TLDFixture(
name=tld_name,

View File

@ -25,7 +25,7 @@ from designateclient.functionaltests.v2.fixtures import ZoneFixture
class TestTSIGKey(BaseDesignateTest):
def setUp(self):
super(TestTSIGKey, self).setUp()
super().setUp()
self.ensure_tsigkey_exists('com')
self.zone = self.useFixture(ZoneFixture(
name=random_zone_name(),

View File

@ -23,7 +23,7 @@ from designateclient.functionaltests.v2.fixtures import ZoneFixture
class TestZone(BaseDesignateTest):
def setUp(self):
super(TestZone, self).setUp()
super().setUp()
self.ensure_tld_exists('com')
self.fixture = self.useFixture(ZoneFixture(
name=random_zone_name(),
@ -61,7 +61,7 @@ class TestZone(BaseDesignateTest):
def test_zone_set(self):
ttl = int(self.zone.ttl) + 123
email = 'updated{0}'.format(self.zone.email)
email = f'updated{self.zone.email}'
description = 'new description'
zone = self.clients.zone_set(self.zone.id, ttl=ttl, email=email,
@ -71,8 +71,9 @@ class TestZone(BaseDesignateTest):
self.assertEqual(description, zone.description)
def test_invalid_option_on_zone_create(self):
cmd = 'zone create %s --invalid "not a valid option"'.format(
random_zone_name())
cmd = 'zone create {} --invalid "not a valid option"'.format(
random_zone_name()
)
self.assertRaises(CommandFailed, self.clients.openstack, cmd)
def test_invalid_zone_command(self):
@ -83,7 +84,7 @@ class TestZone(BaseDesignateTest):
class TestsPassingZoneFlags(BaseDesignateTest):
def setUp(self):
super(TestsPassingZoneFlags, self).setUp()
super().setUp()
self.ensure_tld_exists('com')
def test_zone_create_primary_with_all_args(self):

View File

@ -24,7 +24,7 @@ from designateclient.functionaltests.v2.fixtures import ZoneFixture
class TestZoneExport(BaseDesignateTest):
def setUp(self):
super(TestZoneExport, self).setUp()
super().setUp()
self.ensure_tld_exists('com')
fixture = self.useFixture(ZoneFixture(
name=random_zone_name(),

View File

@ -23,7 +23,7 @@ from designateclient.functionaltests.v2.fixtures import ImportFixture
class TestZoneImport(BaseDesignateTest):
def setUp(self):
super(TestZoneImport, self).setUp()
super().setUp()
self.ensure_tld_exists('com')
self.zone_file_contents = random_zone_file()

View File

@ -27,7 +27,7 @@ from designateclient.functionaltests.v2.fixtures import ZoneFixture
class TestZoneTransferRequest(BaseDesignateTest):
def setUp(self):
super(TestZoneTransferRequest, self).setUp()
super().setUp()
self.ensure_tld_exists('com')
fixture = self.useFixture(ZoneFixture(
name=random_zone_name(),
@ -92,7 +92,7 @@ class TestZoneTransferRequest(BaseDesignateTest):
class TestZoneTransferAccept(BaseDesignateTest):
def setUp(self):
super(TestZoneTransferAccept, self).setUp()
super().setUp()
self.ensure_tld_exists('com')
fixture = self.useFixture(ZoneFixture(
name=random_zone_name(),

View File

@ -35,7 +35,7 @@ class TestCase(test.BaseTestCase):
def setUp(self):
"""Run before each test method to initialize test environment."""
super(TestCase, self).setUp()
super().setUp()
test_timeout = os.environ.get('OS_TEST_TIMEOUT', 0)
try:
test_timeout = int(test_timeout)
@ -74,7 +74,7 @@ class APITestCase(TestCase):
def get_base(self, base_url=None):
if not base_url:
base_url = '%sv%s' % (self.TEST_URL, self.VERSION)
base_url = f'{self.TEST_URL}v{self.VERSION}'
return base_url
def stub_url(self, method, parts=None, base_url=None, json=None, **kwargs):

View File

@ -21,7 +21,7 @@ from designateclient.v2.cli import recordsets
class TestDesignateCreateRecordSets(utils.TestCommand):
def setUp(self):
super(TestDesignateCreateRecordSets, self).setUp()
super().setUp()
self.app.client_manager.dns = mock.MagicMock()
self.cmd = recordsets.CreateRecordSetCommand(self.app, None)
self.dns_client = self.app.client_manager.dns
@ -54,7 +54,7 @@ class TestDesignateCreateRecordSets(utils.TestCommand):
class TestDesignateListRecordSets(utils.TestCommand):
def setUp(self):
super(TestDesignateListRecordSets, self).setUp()
super().setUp()
self.app.client_manager.dns = mock.MagicMock()
self.cmd = recordsets.ListRecordSetsCommand(self.app, None)
self.dns_client = self.app.client_manager.dns

View File

@ -21,7 +21,7 @@ from designateclient.v2.cli import zones
class TestDesignateCreateZone(utils.TestCommand):
def setUp(self):
super(TestDesignateCreateZone, self).setUp()
super().setUp()
self.app.client_manager.dns = mock.MagicMock()
self.cmd = zones.CreateZoneCommand(self.app, None)
self.dns_client = self.app.client_manager.dns
@ -49,7 +49,7 @@ class TestDesignateCreateZone(utils.TestCommand):
class TestDesignateListZones(utils.TestCommand):
def setUp(self):
super(TestDesignateListZones, self).setUp()
super().setUp()
self.app.client_manager.dns = mock.MagicMock()
self.cmd = zones.ListZonesCommand(self.app, None)
self.dns_client = self.app.client_manager.dns

View File

@ -18,7 +18,7 @@ import uuid
from designateclient.tests import base
class CrudMixin(object):
class CrudMixin:
path_prefix = None
def new_ref(self, **kwargs):

View File

@ -22,7 +22,7 @@ class TestBlacklists(v2.APIV2TestCase, v2.CrudMixin):
RESOURCE = 'blacklists'
def new_ref(self, **kwargs):
ref = super(TestBlacklists, self).new_ref(**kwargs)
ref = super().new_ref(**kwargs)
ref.setdefault("pattern", uuid.uuid4().hex)
return ref

View File

@ -32,7 +32,7 @@ class TestRecordSets(v2.APIV2TestCase, v2.CrudMixin):
RESOURCE = 'recordsets'
def new_ref(self, **kwargs):
ref = super(TestRecordSets, self).new_ref(**kwargs)
ref = super().new_ref(**kwargs)
ref.setdefault("name", uuid.uuid4().hex)
ref.setdefault("type", "A")
ref.setdefault("records", ["10.0.0.1"])
@ -49,11 +49,11 @@ class TestRecordSets(v2.APIV2TestCase, v2.CrudMixin):
self.client.recordsets.create(
ZONE,
"%s.%s" % (values["name"], ZONE["name"]),
"{}.{}".format(values["name"], ZONE["name"]),
values["type"],
values["records"])
values["name"] = "%s.%s" % (ref["name"], ZONE["name"])
values["name"] = "{}.{}".format(ref["name"], ZONE["name"])
self.assertRequestBodyIs(json=values)
@patch.object(zones.ZoneController, "get")
@ -70,11 +70,11 @@ class TestRecordSets(v2.APIV2TestCase, v2.CrudMixin):
self.client.recordsets.create(
ZONE["name"],
"%s.%s" % (values["name"], ZONE["name"]),
"{}.{}".format(values["name"], ZONE["name"]),
values["type"],
values["records"])
values["name"] = "%s.%s" % (ref["name"], ZONE["name"])
values["name"] = "{}.{}".format(ref["name"], ZONE["name"])
self.assertRequestBodyIs(json=values)
@patch.object(zones.ZoneController, "get")
@ -95,7 +95,7 @@ class TestRecordSets(v2.APIV2TestCase, v2.CrudMixin):
values["type"],
values["records"])
values["name"] = "%s.%s" % (ref["name"], ZONE["name"])
values["name"] = "{}.{}".format(ref["name"], ZONE["name"])
self.assertRequestBodyIs(json=values)
@patch.object(zones.ZoneController, "list")
@ -112,7 +112,7 @@ class TestRecordSets(v2.APIV2TestCase, v2.CrudMixin):
with testtools.ExpectedException(exceptions.NoUniqueMatch):
self.client.recordsets.create(
ZONE["name"],
"%s.%s" % (values["name"], ZONE["name"]),
"{}.{}".format(values["name"], ZONE["name"]),
values["type"],
values["records"])
@ -127,11 +127,11 @@ class TestRecordSets(v2.APIV2TestCase, v2.CrudMixin):
self.client.recordsets.create(
ZONE["id"],
"%s.%s" % (values["name"], ZONE["name"]),
"{}.{}".format(values["name"], ZONE["name"]),
values["type"],
values["records"])
values["name"] = "%s.%s" % (ref["name"], ZONE["name"])
values["name"] = "{}.{}".format(ref["name"], ZONE["name"])
self.assertRequestBodyIs(json=values)
@patch.object(zones.ZoneController, "get")
@ -152,7 +152,7 @@ class TestRecordSets(v2.APIV2TestCase, v2.CrudMixin):
values["type"],
values["records"])
values["name"] = "%s.%s" % (ref["name"], ZONE["name"])
values["name"] = "{}.{}".format(ref["name"], ZONE["name"])
self.assertRequestBodyIs(json=values)
def test_create_with_description(self):
@ -166,12 +166,12 @@ class TestRecordSets(v2.APIV2TestCase, v2.CrudMixin):
self.client.recordsets.create(
ZONE["id"],
"%s.%s" % (values["name"], ZONE["name"]),
"{}.{}".format(values["name"], ZONE["name"]),
values["type"],
values["records"],
description=values["description"])
values["name"] = "%s.%s" % (ref["name"], ZONE["name"])
values["name"] = "{}.{}".format(ref["name"], ZONE["name"])
self.assertRequestBodyIs(json=values)
def test_create_with_ttl(self):
@ -185,12 +185,12 @@ class TestRecordSets(v2.APIV2TestCase, v2.CrudMixin):
self.client.recordsets.create(
ZONE["id"],
"%s.%s" % (values["name"], ZONE["name"]),
"{}.{}".format(values["name"], ZONE["name"]),
values["type"],
values["records"],
ttl=values["ttl"])
values["name"] = "%s.%s" % (ref["name"], ZONE["name"])
values["name"] = "{}.{}".format(ref["name"], ZONE["name"])
self.assertRequestBodyIs(json=values)
def test_get(self):

View File

@ -17,7 +17,7 @@ import uuid
from designateclient.tests import v2
FIP_ID = '%s:%s' % (str(uuid.uuid4()), "RegionOne")
FIP_ID = '{}:{}'.format(str(uuid.uuid4()), "RegionOne")
class TestFloatingIP(v2.APIV2TestCase, v2.CrudMixin):

View File

@ -20,7 +20,7 @@ class TestServiceStatuses(v2.APIV2TestCase, v2.CrudMixin):
RESOURCE = 'service_statuses'
def new_ref(self, **kwargs):
ref = super(TestServiceStatuses, self).new_ref(**kwargs)
ref = super().new_ref(**kwargs)
ref["name"] = "foo"
return ref

View File

@ -31,7 +31,7 @@ def create_session(timeout=None):
class TestTimeout(v2.APIV2TestCase, v2.CrudMixin):
def setUp(self):
super(TestTimeout, self).setUp()
super().setUp()
# Mock methods in KeyStone's Session
self._saved_methods = (
@ -56,7 +56,7 @@ class TestTimeout(v2.APIV2TestCase, v2.CrudMixin):
self.mock_send_request = keystone_session.Session._send_request
def tearDown(self):
super(TestTimeout, self).tearDown()
super().tearDown()
(
keystone_session.Session.get_auth_headers,
keystone_session.Session.get_endpoint,

View File

@ -22,7 +22,7 @@ class TestTlds(v2.APIV2TestCase, v2.CrudMixin):
RESOURCE = 'tlds'
def new_ref(self, **kwargs):
ref = super(TestTlds, self).new_ref(**kwargs)
ref = super().new_ref(**kwargs)
ref.setdefault("name", uuid.uuid4().hex)
return ref

View File

@ -22,7 +22,7 @@ class TestTSIGKeys(v2.APIV2TestCase, v2.CrudMixin):
RESOURCE = 'tsigkeys'
def new_ref(self, **kwargs):
ref = super(TestTSIGKeys, self).new_ref(**kwargs)
ref = super().new_ref(**kwargs)
ref.setdefault("name", uuid.uuid4().hex)
ref.setdefault("algorithm", "hmac-sha256")
ref.setdefault("secret", uuid.uuid4().hex)

View File

@ -23,7 +23,7 @@ class TestZones(v2.APIV2TestCase, v2.CrudMixin):
RESOURCE = 'zones'
def new_ref(self, **kwargs):
ref = super(TestZones, self).new_ref(**kwargs)
ref = super().new_ref(**kwargs)
ref.setdefault("name", uuid.uuid4().hex)
ref.setdefault("type", "PRIMARY")
return ref
@ -278,7 +278,7 @@ class TestZoneTransfers(v2.APIV2TestCase, v2.CrudMixin):
class TestZoneExports(v2.APIV2TestCase, v2.CrudMixin):
def new_ref(self, **kwargs):
ref = super(TestZoneExports, self).new_ref(**kwargs)
ref = super().new_ref(**kwargs)
ref.setdefault("zone_id", uuid.uuid4().hex)
ref.setdefault("created_at", time.strftime("%c"))
ref.setdefault("updated_at", time.strftime("%c"))
@ -342,7 +342,7 @@ class TestZoneExports(v2.APIV2TestCase, v2.CrudMixin):
class TestZoneImports(v2.APIV2TestCase, v2.CrudMixin):
def new_ref(self, **kwargs):
ref = super(TestZoneImports, self).new_ref(**kwargs)
ref = super().new_ref(**kwargs)
ref.setdefault("zone_id", uuid.uuid4().hex)
ref.setdefault("created_at", time.strftime("%c"))
ref.setdefault("updated_at", time.strftime("%c"))
@ -396,7 +396,7 @@ class TestZoneImports(v2.APIV2TestCase, v2.CrudMixin):
class TestZoneShared(v2.APIV2TestCase, v2.CrudMixin):
def setUp(self):
super(TestZoneShared, self).setUp()
super().setUp()
self.zone_id = str(uuid.uuid4())
self.target_project_id = str(uuid.uuid4())
self.project_id = str(uuid.uuid4())
@ -404,7 +404,7 @@ class TestZoneShared(v2.APIV2TestCase, v2.CrudMixin):
self.updated_at = time.strftime("%c")
def new_ref(self, **kwargs):
ref = super(TestZoneShared, self).new_ref(**kwargs)
ref = super().new_ref(**kwargs)
ref.setdefault("zone_id", self.zone_id)
ref.setdefault("target_project_id", self.target_project_id)
ref.setdefault("project_id", self.project_id)

View File

@ -82,11 +82,11 @@ def find_resourceid_by_name_or_id(resource_client, name_or_id):
candidate_ids = [r['id'] for r in resources if r.get('name') == name_or_id]
if not candidate_ids:
raise exceptions.ResourceNotFound(
'Could not find resource with name "%s"' % name_or_id)
f'Could not find resource with name "{name_or_id}"')
elif len(candidate_ids) > 1:
str_ids = ','.join(candidate_ids)
raise exceptions.NoUniqueMatch(
'Multiple resources with name "%s": %s' % (name_or_id, str_ids))
f'Multiple resources with name "{name_or_id}": {str_ids}')
return candidate_ids[0]
@ -108,4 +108,4 @@ class AdapterWithTimeout(adapter.Adapter):
if self.timeout is not None:
kwargs.setdefault('timeout', self.timeout)
return super(AdapterWithTimeout, self).request(*args, **kwargs)
return super().request(*args, **kwargs)

View File

@ -30,19 +30,19 @@ class BlacklistController(V2Controller):
def list(self, criterion=None, marker=None, limit=None):
url = self.build_url('/blacklists', criterion, marker, limit)
return self._get(url, response_key="blacklists")
return self._get(url, response_key='blacklists')
def get(self, blacklist_id):
url = '/blacklists/%s' % blacklist_id
url = f'/blacklists/{blacklist_id}'
return self._get(url)
def update(self, blacklist_id, values):
url = '/blacklists/%s' % blacklist_id
url = f'/blacklists/{blacklist_id}'
return self._patch(url, data=values)
def delete(self, blacklist_id):
url = '/blacklists/%s' % blacklist_id
url = f'/blacklists/{blacklist_id}'
return self._delete(url)

View File

@ -37,7 +37,7 @@ class ListBlacklistsCommand(command.Lister):
columns = ['id', 'pattern', 'description']
def get_parser(self, prog_name):
parser = super(ListBlacklistsCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
common.add_all_common_options(parser)
@ -56,9 +56,9 @@ class ShowBlacklistCommand(command.ShowOne):
"""Show blacklist details"""
def get_parser(self, prog_name):
parser = super(ShowBlacklistCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="Blacklist ID")
parser.add_argument('id', help='Blacklist ID')
common.add_all_common_options(parser)
@ -76,11 +76,11 @@ class CreateBlacklistCommand(command.ShowOne):
"""Create new blacklist"""
def get_parser(self, prog_name):
parser = super(CreateBlacklistCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('--pattern', help="Blacklist pattern",
parser.add_argument('--pattern', help='Blacklist pattern',
required=True)
parser.add_argument('--description', help="Description")
parser.add_argument('--description', help='Description')
common.add_all_common_options(parser)
@ -101,13 +101,13 @@ class SetBlacklistCommand(command.ShowOne):
"""Set blacklist properties"""
def get_parser(self, prog_name):
parser = super(SetBlacklistCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="Blacklist ID")
parser.add_argument('--pattern', help="Blacklist pattern")
parser.add_argument('id', help='Blacklist ID')
parser.add_argument('--pattern', help='Blacklist pattern')
description_group = parser.add_mutually_exclusive_group()
description_group.add_argument('--description', help="Description")
description_group.add_argument('--description', help='Description')
description_group.add_argument('--no-description', action='store_true')
common.add_all_common_options(parser)
@ -138,9 +138,9 @@ class DeleteBlacklistCommand(command.Command):
"""Delete blacklist"""
def get_parser(self, prog_name):
parser = super(DeleteBlacklistCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="Blacklist ID")
parser.add_argument('id', help='Blacklist ID')
common.add_all_common_options(parser)

View File

@ -39,13 +39,13 @@ class ListQuotasCommand(show.ShowOne):
# columns = ['resource', 'hard_limit']
def get_parser(self, prog_name):
parser = super(ListQuotasCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
common.add_all_common_options(parser)
parser.add_argument(
'--project-id',
help="Project ID Default: current project")
help='Project ID Default: current project')
return parser
@ -70,18 +70,18 @@ class SetQuotasCommand(show.ShowOne):
return itertools.chain(DNS_QUOTAS.items())
def get_parser(self, prog_name):
parser = super(SetQuotasCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
common.add_all_common_options(parser)
parser.add_argument('--project-id', help="Project ID")
parser.add_argument('--project-id', help='Project ID')
for k, v in self._build_options_list():
parser.add_argument(
'--%s' % v,
metavar='<%s>' % v,
f'--{v}',
metavar=f'<{v}>',
dest=k,
type=int,
help='New value for the %s quota' % v,
help=f'New value for the {v} quota',
)
return parser
@ -111,11 +111,11 @@ class ResetQuotasCommand(command.Command):
"""Reset quotas"""
def get_parser(self, prog_name):
parser = super(ResetQuotasCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
common.add_all_common_options(parser)
parser.add_argument('--project-id', help="Project ID")
parser.add_argument('--project-id', help='Project ID')
return parser

View File

@ -48,19 +48,19 @@ class ListRecordSetsCommand(command.Lister):
columns = ['id', 'name', 'type', 'records', 'status', 'action']
def get_parser(self, prog_name):
parser = super(ListRecordSetsCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('--name', help="RecordSet Name", required=False)
parser.add_argument('--type', help="RecordSet Type", required=False)
parser.add_argument('--data', help="RecordSet Record Data",
parser.add_argument('--name', help='RecordSet Name', required=False)
parser.add_argument('--type', help='RecordSet Type', required=False)
parser.add_argument('--data', help='RecordSet Record Data',
required=False)
parser.add_argument('--ttl', help="Time To Live (Seconds)",
parser.add_argument('--ttl', help='Time To Live (Seconds)',
required=False)
parser.add_argument('--description', help="Description",
parser.add_argument('--description', help='Description',
required=False)
parser.add_argument('--status', help="RecordSet Status",
parser.add_argument('--status', help='RecordSet Status',
required=False)
parser.add_argument('--action', help="RecordSet Action",
parser.add_argument('--action', help='RecordSet Action',
required=False)
parser.add_argument('zone_id', help="Zone ID. To list all"
@ -76,25 +76,25 @@ class ListRecordSetsCommand(command.Lister):
criterion = {}
if parsed_args.type is not None:
criterion["type"] = parsed_args.type
criterion['type'] = parsed_args.type
if parsed_args.name is not None:
criterion["name"] = parsed_args.name
criterion['name'] = parsed_args.name
if parsed_args.data is not None:
criterion["data"] = parsed_args.data
criterion['data'] = parsed_args.data
if parsed_args.ttl is not None:
criterion["ttl"] = parsed_args.ttl
criterion['ttl'] = parsed_args.ttl
if parsed_args.description is not None:
criterion["description"] = parsed_args.description
criterion['description'] = parsed_args.description
if parsed_args.status is not None:
criterion["status"] = parsed_args.status
criterion['status'] = parsed_args.status
if parsed_args.action is not None:
criterion["action"] = parsed_args.action
criterion['action'] = parsed_args.action
cols = list(self.columns)
@ -119,10 +119,10 @@ class ShowRecordSetCommand(command.ShowOne):
"""Show recordset details"""
def get_parser(self, prog_name):
parser = super(ShowRecordSetCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('zone_id', help="Zone ID")
parser.add_argument('id', help="RecordSet ID")
parser.add_argument('zone_id', help='Zone ID')
parser.add_argument('id', help='RecordSet ID')
common.add_all_common_options(parser)
@ -143,10 +143,10 @@ class CreateRecordSetCommand(command.ShowOne):
log = logging.getLogger('deprecated')
def get_parser(self, prog_name):
parser = super(CreateRecordSetCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('zone_id', help="Zone ID")
parser.add_argument('name', help="RecordSet Name")
parser.add_argument('zone_id', help='Zone ID')
parser.add_argument('name', help='RecordSet Name')
req_group = parser.add_mutually_exclusive_group(required=True)
req_group.add_argument(
'--records',
@ -154,11 +154,11 @@ class CreateRecordSetCommand(command.ShowOne):
nargs='+')
req_group.add_argument(
'--record',
help="RecordSet Record, repeat if necessary",
help='RecordSet Record, repeat if necessary',
action='append')
parser.add_argument('--type', help="RecordSet Type", required=True)
parser.add_argument('--ttl', type=int, help="Time To Live (Seconds)")
parser.add_argument('--description', help="Description")
parser.add_argument('--type', help='RecordSet Type', required=True)
parser.add_argument('--ttl', type=int, help='Time To Live (Seconds)')
parser.add_argument('--description', help='Description')
common.add_all_common_options(parser)
@ -171,7 +171,7 @@ class CreateRecordSetCommand(command.ShowOne):
all_records = parsed_args.record or parsed_args.records
if parsed_args.records:
self.log.warning(
"Option --records is deprecated, use --record instead.")
'Option --records is deprecated, use --record instead.')
data = client.recordsets.create(
parsed_args.zone_id,
parsed_args.name,
@ -188,10 +188,10 @@ class SetRecordSetCommand(command.ShowOne):
"""Set recordset properties"""
def get_parser(self, prog_name):
parser = super(SetRecordSetCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('zone_id', help="Zone ID")
parser.add_argument('id', help="RecordSet ID")
parser.add_argument('zone_id', help='Zone ID')
parser.add_argument('id', help='RecordSet ID')
req_group = parser.add_mutually_exclusive_group()
req_group.add_argument(
'--records',
@ -199,15 +199,15 @@ class SetRecordSetCommand(command.ShowOne):
nargs='+')
req_group.add_argument(
'--record',
help="RecordSet Record, repeat if necessary",
help='RecordSet Record, repeat if necessary',
action='append')
description_group = parser.add_mutually_exclusive_group()
description_group.add_argument('--description', help="Description")
description_group.add_argument('--description', help='Description')
description_group.add_argument('--no-description', action='store_true')
ttl_group = parser.add_mutually_exclusive_group()
ttl_group.add_argument('--ttl', type=int, help="TTL")
ttl_group.add_argument('--ttl', type=int, help='TTL')
ttl_group.add_argument('--no-ttl', action='store_true')
common.add_all_common_options(parser)
@ -231,7 +231,7 @@ class SetRecordSetCommand(command.ShowOne):
all_records = parsed_args.record or parsed_args.records
if parsed_args.records:
self.log.warning(
"Option --records is deprecated, use --record instead.")
'Option --records is deprecated, use --record instead.')
if all_records:
data['records'] = all_records
@ -253,10 +253,10 @@ class DeleteRecordSetCommand(command.ShowOne):
"""Delete recordset"""
def get_parser(self, prog_name):
parser = super(DeleteRecordSetCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('zone_id', help="Zone ID")
parser.add_argument('id', help="RecordSet ID")
parser.add_argument('zone_id', help='Zone ID')
parser.add_argument('id', help='RecordSet ID')
common.add_all_common_options(parser)
common.add_edit_managed_option(parser)

View File

@ -37,7 +37,7 @@ class ListFloatingIPCommand(command.Lister):
columns = ['id', 'ptrdname', 'description', 'ttl']
def get_parser(self, prog_name):
parser = super(ListFloatingIPCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
common.add_all_common_options(parser)
@ -56,10 +56,10 @@ class ShowFloatingIPCommand(command.ShowOne):
"""Show floatingip ptr record details"""
def get_parser(self, prog_name):
parser = super(ShowFloatingIPCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('floatingip_id', help="Floating IP ID in format "
"region:floatingip_id")
parser.add_argument('floatingip_id', help='Floating IP ID in format '
'region:floatingip_id')
common.add_all_common_options(parser)
@ -77,18 +77,18 @@ class SetFloatingIPCommand(command.ShowOne):
"""Set floatingip ptr record"""
def get_parser(self, prog_name):
parser = super(SetFloatingIPCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('floatingip_id', help="Floating IP ID in format "
"region:floatingip_id")
parser.add_argument('ptrdname', help="PTRD Name")
parser.add_argument('floatingip_id', help='Floating IP ID in format '
'region:floatingip_id')
parser.add_argument('ptrdname', help='PTRD Name')
description_group = parser.add_mutually_exclusive_group()
description_group.add_argument('--description', help="Description")
description_group.add_argument('--description', help='Description')
description_group.add_argument('--no-description', action='store_true')
ttl_group = parser.add_mutually_exclusive_group()
ttl_group.add_argument('--ttl', type=int, help="TTL")
ttl_group.add_argument('--ttl', type=int, help='TTL')
ttl_group.add_argument('--no-ttl', action='store_true')
common.add_all_common_options(parser)
@ -125,10 +125,10 @@ class UnsetFloatingIPCommand(command.Command):
"""Unset floatingip ptr record"""
def get_parser(self, prog_name):
parser = super(UnsetFloatingIPCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('floatingip_id', help="Floating IP ID in format "
"region:floatingip_id")
parser.add_argument('floatingip_id', help='Floating IP ID in format '
'region:floatingip_id')
common.add_all_common_options(parser)

View File

@ -27,10 +27,10 @@ LOG = logging.getLogger(__name__)
def _format_status(status):
status.pop("links", None)
status.pop('links', None)
# Remove unneeded fields for display output formatting
for k in ("capabilities", "stats"):
status[k] = "\n".join(status[k]) if status[k] else "-"
for k in ('capabilities', 'stats'):
status[k] = '\n'.join(status[k]) if status[k] else '-'
return status
@ -41,12 +41,12 @@ class ListServiceStatusesCommand(command.Lister):
'capabilities']
def get_parser(self, prog_name):
parser = super(ListServiceStatusesCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument("--hostname", help="Hostname", required=False)
parser.add_argument("--service_name", help="Service Name",
parser.add_argument('--hostname', help='Hostname', required=False)
parser.add_argument('--service_name', help='Service Name',
required=False)
parser.add_argument("--status", help="Status", required=False)
parser.add_argument('--status', help='Status', required=False)
common.add_all_common_options(parser)
return parser
@ -58,7 +58,7 @@ class ListServiceStatusesCommand(command.Lister):
cols = self.columns
criterion = {}
for i in ["hostname", "service_name", "status"]:
for i in ['hostname', 'service_name', 'status']:
v = getattr(parsed_args, i)
if v is not None:
criterion[i] = v
@ -76,9 +76,9 @@ class ShowServiceStatusCommand(command.ShowOne):
"""Show service status details"""
def get_parser(self, prog_name):
parser = super(ShowServiceStatusCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="Service Status ID")
parser.add_argument('id', help='Service Status ID')
common.add_all_common_options(parser)

View File

@ -37,11 +37,11 @@ class ListTLDsCommand(command.Lister):
columns = ['id', 'name', 'description']
def get_parser(self, prog_name):
parser = super(ListTLDsCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('--name', help="TLD NAME")
parser.add_argument('--name', help='TLD NAME')
parser.add_argument('--description', help="TLD Description")
parser.add_argument('--description', help='TLD Description')
common.add_all_common_options(parser)
@ -61,9 +61,9 @@ class ShowTLDCommand(command.ShowOne):
"""Show tld details"""
def get_parser(self, prog_name):
parser = super(ShowTLDCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="TLD name or ID")
parser.add_argument('id', help='TLD name or ID')
common.add_all_common_options(parser)
@ -81,10 +81,10 @@ class CreateTLDCommand(command.ShowOne):
"""Create new tld"""
def get_parser(self, prog_name):
parser = super(CreateTLDCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('--name', help="TLD Name", required=True)
parser.add_argument('--description', help="Description")
parser.add_argument('--name', help='TLD Name', required=True)
parser.add_argument('--description', help='Description')
common.add_all_common_options(parser)
@ -102,12 +102,12 @@ class SetTLDCommand(command.ShowOne):
"""Set tld properties"""
def get_parser(self, prog_name):
parser = super(SetTLDCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="TLD name or ID")
parser.add_argument('--name', help="TLD Name")
parser.add_argument('id', help='TLD name or ID')
parser.add_argument('--name', help='TLD Name')
description_group = parser.add_mutually_exclusive_group()
description_group.add_argument('--description', help="Description")
description_group.add_argument('--description', help='Description')
description_group.add_argument('--no-description', action='store_true')
common.add_all_common_options(parser)
@ -137,9 +137,9 @@ class DeleteTLDCommand(command.Command):
"""Delete tld"""
def get_parser(self, prog_name):
parser = super(DeleteTLDCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="TLD name or ID")
parser.add_argument('id', help='TLD name or ID')
common.add_all_common_options(parser)

View File

@ -36,12 +36,12 @@ class ListTSIGKeysCommand(command.Lister):
columns = ['id', 'name', 'algorithm', 'secret', 'scope', 'resource_id']
def get_parser(self, prog_name):
parser = super(ListTSIGKeysCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('--name', help="TSIGKey NAME", required=False)
parser.add_argument('--algorithm', help="TSIGKey algorithm",
parser.add_argument('--name', help='TSIGKey NAME', required=False)
parser.add_argument('--algorithm', help='TSIGKey algorithm',
required=False)
parser.add_argument('--scope', help="TSIGKey scope", required=False)
parser.add_argument('--scope', help='TSIGKey scope', required=False)
common.add_all_common_options(parser)
@ -53,11 +53,11 @@ class ListTSIGKeysCommand(command.Lister):
criterion = {}
if parsed_args.name is not None:
criterion["name"] = parsed_args.name
criterion['name'] = parsed_args.name
if parsed_args.algorithm is not None:
criterion["algorithm"] = parsed_args.algorithm
criterion['algorithm'] = parsed_args.algorithm
if parsed_args.scope is not None:
criterion["scope"] = parsed_args.scope
criterion['scope'] = parsed_args.scope
data = get_all(client.tsigkeys.list, criterion)
@ -69,9 +69,9 @@ class ShowTSIGKeyCommand(command.ShowOne):
"""Show tsigkey details"""
def get_parser(self, prog_name):
parser = super(ShowTSIGKeyCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="TSIGKey ID")
parser.add_argument('id', help='TSIGKey ID')
common.add_all_common_options(parser)
@ -89,14 +89,14 @@ class CreateTSIGKeyCommand(command.ShowOne):
"""Create new tsigkey"""
def get_parser(self, prog_name):
parser = super(CreateTSIGKeyCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('--name', help="TSIGKey Name", required=True)
parser.add_argument('--algorithm', help="TSIGKey algorithm",
parser.add_argument('--name', help='TSIGKey Name', required=True)
parser.add_argument('--algorithm', help='TSIGKey algorithm',
required=True)
parser.add_argument('--secret', help="TSIGKey secret", required=True)
parser.add_argument('--scope', help="TSIGKey scope", required=True)
parser.add_argument('--resource-id', help="TSIGKey resource_id",
parser.add_argument('--secret', help='TSIGKey secret', required=True)
parser.add_argument('--scope', help='TSIGKey scope', required=True)
parser.add_argument('--resource-id', help='TSIGKey resource_id',
required=True)
common.add_all_common_options(parser)
@ -117,13 +117,13 @@ class SetTSIGKeyCommand(command.ShowOne):
"""Set tsigkey properties"""
def get_parser(self, prog_name):
parser = super(SetTSIGKeyCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="TSIGKey ID")
parser.add_argument('--name', help="TSIGKey Name")
parser.add_argument('--algorithm', help="TSIGKey algorithm")
parser.add_argument('--secret', help="TSIGKey secret")
parser.add_argument('--scope', help="TSIGKey scope")
parser.add_argument('id', help='TSIGKey ID')
parser.add_argument('--name', help='TSIGKey Name')
parser.add_argument('--algorithm', help='TSIGKey algorithm')
parser.add_argument('--secret', help='TSIGKey secret')
parser.add_argument('--scope', help='TSIGKey scope')
common.add_all_common_options(parser)
@ -153,9 +153,9 @@ class DeleteTSIGKeyCommand(command.Command):
"""Delete tsigkey"""
def get_parser(self, prog_name):
parser = super(DeleteTSIGKeyCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="TSIGKey ID")
parser.add_argument('id', help='TSIGKey ID')
common.add_all_common_options(parser)

View File

@ -29,10 +29,10 @@ LOG = logging.getLogger(__name__)
def _format_zone(zone):
zone.pop('links', None)
zone['masters'] = ", ".join(zone['masters'])
zone['masters'] = ', '.join(zone['masters'])
attrib = ''
for attr in zone['attributes']:
attrib += "%s:%s\n" % (attr, zone['attributes'][attr])
attrib += '{}:{}\n'.format(attr, zone['attributes'][attr])
zone['attributes'] = attrib
@ -50,19 +50,19 @@ class ListZonesCommand(command.Lister):
columns = ['id', 'name', 'type', 'serial', 'status', 'action']
def get_parser(self, prog_name):
parser = super(ListZonesCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('--name', help="Zone Name", required=False)
parser.add_argument('--email', help="Zone Email", required=False)
parser.add_argument('--type', help="Zone Type",
choices=["PRIMARY", "SECONDARY"],
parser.add_argument('--name', help='Zone Name', required=False)
parser.add_argument('--email', help='Zone Email', required=False)
parser.add_argument('--type', help='Zone Type',
choices=['PRIMARY', 'SECONDARY'],
default=None,
required=False)
parser.add_argument('--ttl', help="Time To Live (Seconds)",
parser.add_argument('--ttl', help='Time To Live (Seconds)',
required=False)
parser.add_argument('--description', help="Description",
parser.add_argument('--description', help='Description',
required=False)
parser.add_argument('--status', help="Zone Status", required=False)
parser.add_argument('--status', help='Zone Status', required=False)
common.add_all_common_options(parser)
@ -74,22 +74,22 @@ class ListZonesCommand(command.Lister):
criterion = {}
if parsed_args.type is not None:
criterion["type"] = parsed_args.type
criterion['type'] = parsed_args.type
if parsed_args.name is not None:
criterion["name"] = parsed_args.name
criterion['name'] = parsed_args.name
if parsed_args.ttl is not None:
criterion["ttl"] = parsed_args.ttl
criterion['ttl'] = parsed_args.ttl
if parsed_args.description is not None:
criterion["description"] = parsed_args.description
criterion['description'] = parsed_args.description
if parsed_args.email is not None:
criterion["email"] = parsed_args.email
criterion['email'] = parsed_args.email
if parsed_args.status is not None:
criterion["status"] = parsed_args.status
criterion['status'] = parsed_args.status
data = get_all(client.zones.list, criterion)
@ -105,9 +105,9 @@ class ShowZoneCommand(command.ShowOne):
"""Show zone details"""
def get_parser(self, prog_name):
parser = super(ShowZoneCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="Zone ID")
parser.add_argument('id', help='Zone ID')
common.add_all_common_options(parser)
@ -127,17 +127,17 @@ class CreateZoneCommand(command.ShowOne):
"""Create new zone"""
def get_parser(self, prog_name):
parser = super(CreateZoneCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('name', help="Zone Name")
parser.add_argument('--email', help="Zone Email")
parser.add_argument('--type', help="Zone Type",
choices=["PRIMARY", "SECONDARY"],
parser.add_argument('name', help='Zone Name')
parser.add_argument('--email', help='Zone Email')
parser.add_argument('--type', help='Zone Type',
choices=['PRIMARY', 'SECONDARY'],
default='PRIMARY')
parser.add_argument('--ttl', type=int, help="Time To Live (Seconds)")
parser.add_argument('--description', help="Description")
parser.add_argument('--masters', help="Zone Masters", nargs='+')
parser.add_argument('--attributes', help="Zone Attributes", nargs='+')
parser.add_argument('--ttl', type=int, help='Time To Live (Seconds)')
parser.add_argument('--description', help='Description')
parser.add_argument('--masters', help='Zone Masters', nargs='+')
parser.add_argument('--attributes', help='Zone Attributes', nargs='+')
common.add_all_common_options(parser)
@ -150,36 +150,39 @@ class CreateZoneCommand(command.ShowOne):
payload = {}
if parsed_args.description:
payload["description"] = parsed_args.description
payload['description'] = parsed_args.description
if parsed_args.attributes:
payload["attributes"] = {}
payload['attributes'] = {}
for attr in parsed_args.attributes:
try:
k, v = attr.split(':')
payload["attributes"][k] = v
payload['attributes'][k] = v
except ValueError:
msg = ("Attribute '%s' is in an incorrect format. "
"Attributes are <key>:<value> formated")
raise osc_exc.CommandError(msg % attr)
raise osc_exc.CommandError(
f"Attribute '{attr}' is in an incorrect format. "
"Attributes are <key>:<value> formated"
)
if parsed_args.type == 'PRIMARY':
# email is just for PRIMARY.
if not parsed_args.email:
msg = "Zone type PRIMARY requires --email."
raise osc_exc.CommandError(msg)
raise osc_exc.CommandError(
'Zone type PRIMARY requires --email.'
)
payload["email"] = parsed_args.email
payload['email'] = parsed_args.email
# TTL is just valid for PRIMARY
if parsed_args.ttl is not None:
payload["ttl"] = parsed_args.ttl
payload['ttl'] = parsed_args.ttl
elif parsed_args.type == 'SECONDARY':
payload["masters"] = parsed_args.masters
payload['masters'] = parsed_args.masters
else:
msg = ("Type %s is not supported. Please choose between "
"PRIMARY or SECONDARY")
raise osc_exc.CommandError(msg % parsed_args.type)
raise osc_exc.CommandError(
f'Type {parsed_args.type} is not supported. Please choose '
'between PRIMARY or SECONDARY'
)
data = client.zones.create(
parsed_args.name, parsed_args.type, **payload)
@ -192,16 +195,16 @@ class SetZoneCommand(command.ShowOne):
"""Set zone properties"""
def get_parser(self, prog_name):
parser = super(SetZoneCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="Zone ID")
parser.add_argument('--email', help="Zone Email")
parser.add_argument('--ttl', type=int, help="Time To Live (Seconds)")
parser.add_argument('id', help='Zone ID')
parser.add_argument('--email', help='Zone Email')
parser.add_argument('--ttl', type=int, help='Time To Live (Seconds)')
description_group = parser.add_mutually_exclusive_group()
description_group.add_argument('--description', help="Description")
description_group.add_argument('--description', help='Description')
description_group.add_argument('--no-description', action='store_true')
parser.add_argument('--masters', help="Zone Masters", nargs='+')
parser.add_argument('--masters', help='Zone Masters', nargs='+')
common.add_all_common_options(parser)
@ -237,9 +240,9 @@ class DeleteZoneCommand(command.ShowOne):
"""Delete zone"""
def get_parser(self, prog_name):
parser = super(DeleteZoneCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="Zone ID")
parser.add_argument('id', help='Zone ID')
parser.add_argument('--delete-shares', default=False,
action='store_true',
@ -270,9 +273,9 @@ class DeleteZoneCommand(command.ShowOne):
class AbandonZoneCommand(command.Command):
"""Abandon a zone"""
def get_parser(self, prog_name):
parser = super(AbandonZoneCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="Zone ID")
parser.add_argument('id', help='Zone ID')
common.add_all_common_options(parser)
@ -284,16 +287,16 @@ class AbandonZoneCommand(command.Command):
client.zones.abandon(parsed_args.id)
LOG.info("Z %(zone_id)s abandoned",
{"zone_id": parsed_args.id})
LOG.info('Z %(zone_id)s abandoned',
{'zone_id': parsed_args.id})
class AXFRZoneCommand(command.Command):
"""AXFR a zone"""
def get_parser(self, prog_name):
parser = super(AXFRZoneCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="Zone ID")
parser.add_argument('id', help='Zone ID')
common.add_all_common_options(parser)
@ -305,22 +308,22 @@ class AXFRZoneCommand(command.Command):
client.zones.axfr(parsed_args.id)
LOG.info("Scheduled AXFR for zone %(zone_id)s",
{"zone_id": parsed_args.id})
LOG.info('Scheduled AXFR for zone %(zone_id)s',
{'zone_id': parsed_args.id})
class CreateTransferRequestCommand(command.ShowOne):
"""Create new zone transfer request"""
def get_parser(self, prog_name):
parser = super(CreateTransferRequestCommand, self).get_parser(
parser = super().get_parser(
prog_name)
parser.add_argument('zone_id', help="Zone ID to transfer.",)
parser.add_argument('zone_id', help='Zone ID to transfer.',)
parser.add_argument(
'--target-project-id',
help="Target Project ID to transfer to.")
parser.add_argument('--description', help="Description")
help='Target Project ID to transfer to.')
parser.add_argument('--description', help='Description')
common.add_all_common_options(parser)
@ -343,7 +346,7 @@ class ListTransferRequestsCommand(command.Lister):
'target_project_id', 'status', 'key']
def get_parser(self, prog_name):
parser = super(ListTransferRequestsCommand, self).get_parser(
parser = super().get_parser(
prog_name)
common.add_all_common_options(parser)
@ -364,9 +367,9 @@ class ShowTransferRequestCommand(command.ShowOne):
"""Show Zone Transfer Request Details"""
def get_parser(self, prog_name):
parser = super(ShowTransferRequestCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="Zone Tranfer Request ID")
parser.add_argument('id', help='Zone Tranfer Request ID')
common.add_all_common_options(parser)
@ -385,16 +388,16 @@ class SetTransferRequestCommand(command.ShowOne):
"""Set a Zone Transfer Request"""
def get_parser(self, prog_name):
parser = super(SetTransferRequestCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="Zone Transfer Request ID")
parser.add_argument('id', help='Zone Transfer Request ID')
description_group = parser.add_mutually_exclusive_group()
description_group.add_argument('--description', help="Description")
description_group.add_argument('--description', help='Description')
description_group.add_argument('--no-description', action='store_true')
parser.add_argument(
'--target-project-id',
help="Target Project ID to transfer to.")
help='Target Project ID to transfer to.')
common.add_all_common_options(parser)
@ -421,10 +424,10 @@ class SetTransferRequestCommand(command.ShowOne):
class DeleteTransferRequestCommand(command.Command):
"""Delete a Zone Transfer Request"""
def get_parser(self, prog_name):
parser = super(DeleteTransferRequestCommand, self).get_parser(
parser = super().get_parser(
prog_name)
parser.add_argument('id', help="Zone Transfer Request ID")
parser.add_argument('id', help='Zone Transfer Request ID')
common.add_all_common_options(parser)
@ -443,12 +446,12 @@ class AcceptTransferRequestCommand(command.ShowOne):
"""Accept a Zone Transfer Request"""
def get_parser(self, prog_name):
parser = super(AcceptTransferRequestCommand, self).get_parser(
parser = super().get_parser(
prog_name)
parser.add_argument('--transfer-id', help="Transfer ID", type=str,
parser.add_argument('--transfer-id', help='Transfer ID', type=str,
required=True)
parser.add_argument('--key', help="Transfer Key", type=str,
parser.add_argument('--key', help='Transfer Key', type=str,
required=True)
common.add_all_common_options(parser)
@ -471,7 +474,7 @@ class ListTransferAcceptsCommand(command.Lister):
'zone_transfer_request_id', 'status', 'key']
def get_parser(self, prog_name):
parser = super(ListTransferAcceptsCommand, self).get_parser(
parser = super().get_parser(
prog_name)
common.add_all_common_options(parser)
@ -492,9 +495,9 @@ class ShowTransferAcceptCommand(command.ShowOne):
"""Show Zone Transfer Accept"""
def get_parser(self, prog_name):
parser = super(ShowTransferAcceptCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('id', help="Zone Tranfer Accept ID")
parser.add_argument('id', help='Zone Tranfer Accept ID')
common.add_all_common_options(parser)
@ -513,12 +516,12 @@ class ExportZoneCommand(command.ShowOne):
"""Export a Zone"""
def get_parser(self, prog_name):
parser = super(ExportZoneCommand, self).get_parser(
parser = super().get_parser(
prog_name)
common.add_all_common_options(parser)
parser.add_argument('zone_id', help="Zone ID", type=str)
parser.add_argument('zone_id', help='Zone ID', type=str)
return parser
@ -545,7 +548,7 @@ class ListZoneExportsCommand(command.Lister):
]
def get_parser(self, prog_name):
parser = super(ListZoneExportsCommand, self).get_parser(
parser = super().get_parser(
prog_name)
common.add_all_common_options(parser)
@ -567,10 +570,10 @@ class ShowZoneExportCommand(command.ShowOne):
"""Show a Zone Export"""
def get_parser(self, prog_name):
parser = super(ShowZoneExportCommand, self).get_parser(
parser = super().get_parser(
prog_name)
parser.add_argument('zone_export_id', help="Zone Export ID", type=str)
parser.add_argument('zone_export_id', help='Zone Export ID', type=str)
common.add_all_common_options(parser)
@ -591,10 +594,10 @@ class DeleteZoneExportCommand(command.Command):
"""Delete a Zone Export"""
def get_parser(self, prog_name):
parser = super(DeleteZoneExportCommand, self).get_parser(
parser = super().get_parser(
prog_name)
parser.add_argument('zone_export_id', help="Zone Export ID", type=str)
parser.add_argument('zone_export_id', help='Zone Export ID', type=str)
common.add_all_common_options(parser)
@ -613,10 +616,10 @@ class ShowZoneExportFileCommand(command.ShowOne):
"""Show the zone file for the Zone Export"""
def get_parser(self, prog_name):
parser = super(ShowZoneExportFileCommand, self).get_parser(
parser = super().get_parser(
prog_name)
parser.add_argument('zone_export_id', help="Zone Export ID", type=str)
parser.add_argument('zone_export_id', help='Zone Export ID', type=str)
common.add_all_common_options(parser)
@ -635,11 +638,11 @@ class ImportZoneCommand(command.ShowOne):
"""Import a Zone from a file on the filesystem"""
def get_parser(self, prog_name):
parser = super(ImportZoneCommand, self).get_parser(
parser = super().get_parser(
prog_name)
parser.add_argument('zone_file_path',
help="Path to a zone file", type=str)
help='Path to a zone file', type=str)
common.add_all_common_options(parser)
@ -649,7 +652,7 @@ class ImportZoneCommand(command.ShowOne):
client = self.app.client_manager.dns
common.set_all_common_headers(client, parsed_args)
with open(parsed_args.zone_file_path, 'r') as f:
with open(parsed_args.zone_file_path) as f:
zone_file_contents = f.read()
data = client.zone_imports.create(zone_file_contents)
@ -672,7 +675,7 @@ class ListZoneImportsCommand(command.Lister):
]
def get_parser(self, prog_name):
parser = super(ListZoneImportsCommand, self).get_parser(
parser = super().get_parser(
prog_name)
common.add_all_common_options(parser)
@ -694,10 +697,10 @@ class ShowZoneImportCommand(command.ShowOne):
"""Show a Zone Import"""
def get_parser(self, prog_name):
parser = super(ShowZoneImportCommand, self).get_parser(
parser = super().get_parser(
prog_name)
parser.add_argument('zone_import_id', help="Zone Import ID", type=str)
parser.add_argument('zone_import_id', help='Zone Import ID', type=str)
common.add_all_common_options(parser)
@ -718,10 +721,10 @@ class DeleteZoneImportCommand(command.Command):
"""Delete a Zone Import"""
def get_parser(self, prog_name):
parser = super(DeleteZoneImportCommand, self).get_parser(
parser = super().get_parser(
prog_name)
parser.add_argument('zone_import_id', help="Zone Import ID", type=str)
parser.add_argument('zone_import_id', help='Zone Import ID', type=str)
common.add_all_common_options(parser)
@ -740,7 +743,7 @@ class ShareZoneCommand(command.ShowOne):
"""Share a Zone"""
def get_parser(self, prog_name):
parser = super(ShareZoneCommand, self).get_parser(
parser = super().get_parser(
prog_name)
common.add_all_common_options(parser)
@ -777,7 +780,7 @@ class ListSharedZonesCommand(command.Lister):
]
def get_parser(self, prog_name):
parser = super(ListSharedZonesCommand, self).get_parser(
parser = super().get_parser(
prog_name)
common.add_all_common_options(parser)
@ -812,7 +815,7 @@ class ShowSharedZoneCommand(command.ShowOne):
"""Show Zone Share Details"""
def get_parser(self, prog_name):
parser = super(ShowSharedZoneCommand, self).get_parser(prog_name)
parser = super().get_parser(prog_name)
parser.add_argument('zone', help='The zone name or ID to share.')
parser.add_argument('shared_zone_id',
@ -837,7 +840,7 @@ class DeleteSharedZoneCommand(command.Command):
"""Delete a Zone Share"""
def get_parser(self, prog_name):
parser = super(DeleteSharedZoneCommand, self).get_parser(
parser = super().get_parser(
prog_name)
parser.add_argument('zone', help='The zone name or ID to share.')

View File

@ -116,7 +116,7 @@ class DesignateAdapter(adapter.LegacyJsonAdapter):
return response, body
class Client(object):
class Client:
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,
@ -131,7 +131,7 @@ class Client(object):
region_name=region_name,
service_type=service_type,
interface=endpoint_type.rstrip('URL'),
user_agent='python-designateclient-%s' % version.version_info,
user_agent=f'python-designateclient-{version.version_info}',
version=('2'),
endpoint_override=endpoint_override,
timeout=timeout,

View File

@ -21,6 +21,6 @@ class NameServerController(V2Controller):
def list(self, zone):
zone = v2_utils.resolve_by_name(self.client.zones.list, zone)
url = '/zones/%s/nameservers' % zone
url = f'/zones/{zone}/nameservers'
return self._get(url, response_key='nameservers')

View File

@ -18,10 +18,10 @@ from designateclient.v2.base import V2Controller
class QuotasController(V2Controller):
def list(self, project_id):
return self._get('/quotas/%s' % project_id)
return self._get(f'/quotas/{project_id}')
def update(self, project_id, values):
return self._patch('/quotas/%s' % project_id, data=values)
return self._patch(f'/quotas/{project_id}', data=values)
def reset(self, project_id):
return self._delete('/quotas/%s' % project_id)
return self._delete(f'/quotas/{project_id}')

View File

@ -32,11 +32,11 @@ class RecordSetController(V2Controller):
# We where given a name like "www" vs www.i.io., attempt to fix it on
# the behalf of the actor.
if not name.endswith("."):
if not name.endswith('.'):
if not isinstance(zone_info, dict):
zone_info = self.client.zones.get(zone)
name = "%s.%s" % (name, zone_info["name"])
name = '{}.{}'.format(name, zone_info['name'])
return name, zone_info
@ -57,24 +57,22 @@ class RecordSetController(V2Controller):
data['description'] = description
if zone_info is not None:
zone_id = zone_info["id"]
zone_id = zone_info['id']
else:
zone_id = zone
url = '/zones/%s/recordsets' % zone_id
return self._post(url, data=data)
return self._post(f'/zones/{zone_id}/recordsets', data=data)
def list(self, zone, criterion=None, marker=None, limit=None):
zone = v2_utils.resolve_by_name(self.client.zones.list, zone)
url = self.build_url(
'/zones/%s/recordsets' % zone,
criterion, marker, limit)
f'/zones/{zone}/recordsets', criterion, marker, limit
)
return self._get(url, response_key='recordsets')
def list_all_zones(self, criterion=None, marker=None, limit=None):
url = self.build_url('/recordsets', criterion, marker, limit)
return self._get(url, response_key='recordsets')
@ -83,8 +81,7 @@ class RecordSetController(V2Controller):
zone = v2_utils.resolve_by_name(self.client.zones.list, zone)
recordset = v2_utils.resolve_by_name(self.list, recordset, zone)
url = self.build_url('/zones/%s/recordsets/%s' % (
zone, recordset))
url = self.build_url(f'/zones/{zone}/recordsets/{recordset}')
return self._get(url)
@ -92,7 +89,7 @@ class RecordSetController(V2Controller):
zone = v2_utils.resolve_by_name(self.client.zones.list, zone)
recordset = v2_utils.resolve_by_name(self.list, recordset, zone)
url = '/zones/%s/recordsets/%s' % (zone, recordset)
url = f'/zones/{zone}/recordsets/{recordset}'
return self._put(url, data=values)
@ -100,6 +97,6 @@ class RecordSetController(V2Controller):
zone = v2_utils.resolve_by_name(self.client.zones.list, zone)
recordset = v2_utils.resolve_by_name(self.list, recordset, zone)
url = '/zones/%s/recordsets/%s' % (zone, recordset)
url = f'/zones/{zone}/recordsets/{recordset}'
return self._delete(url)

View File

@ -23,12 +23,12 @@ class FloatingIPController(V2Controller):
}
if description is not None:
data["description"] = description
data['description'] = description
if ttl is not None:
data["ttl"] = ttl
data['ttl'] = ttl
url = '/reverse/floatingips/%s' % floatingip_id
url = f'/reverse/floatingips/{floatingip_id}'
return self._patch(url, data=data)
def list(self, criterion=None):
@ -37,13 +37,13 @@ class FloatingIPController(V2Controller):
return self._get(url, response_key='floatingips')
def get(self, floatingip_id):
url = '/reverse/floatingips/%s' % floatingip_id
url = f'/reverse/floatingips/{floatingip_id}'
return self._get(url)
def unset(self, floatingip_id):
data = {"ptrdname": None}
data = {'ptrdname': None}
url = '/reverse/floatingips/%s' % floatingip_id
url = f'/reverse/floatingips/{floatingip_id}'
return self._patch(url, data=data)

View File

@ -20,9 +20,9 @@ class ServiceStatusesController(base.V2Controller):
def list(self, criterion=None, marker=None, limit=None):
url = self.build_url('/service_statuses', criterion, marker, limit)
return self._get(url, response_key="service_statuses")
return self._get(url, response_key='service_statuses')
def get(self, service_status_id):
url = '/service_statuses/%s' % service_status_id
url = f'/service_statuses/{service_status_id}'
return self._get(url)

View File

@ -24,7 +24,7 @@ class TLDController(V2Controller):
}
if description is not None:
data["description"] = description
data['description'] = description
return self._post('/tlds', data=data)
@ -36,14 +36,14 @@ class TLDController(V2Controller):
def get(self, tld):
tld = v2_utils.resolve_by_name(self.list, tld)
return self._get('/tlds/%s' % tld)
return self._get(f'/tlds/{tld}')
def update(self, tld, values):
tld = v2_utils.resolve_by_name(self.list, tld)
return self._patch('/tlds/%s' % tld, data=values)
return self._patch(f'/tlds/{tld}', data=values)
def delete(self, tld):
tld = v2_utils.resolve_by_name(self.list, tld)
return self._delete('/tlds/%s' % tld)
return self._delete(f'/tlds/{tld}')

View File

@ -37,14 +37,14 @@ class TSIGKeysController(V2Controller):
def get(self, tsigkey):
tsigkey = v2_utils.resolve_by_name(self.list, tsigkey)
return self._get('/tsigkeys/%s' % tsigkey)
return self._get(f'/tsigkeys/{tsigkey}')
def update(self, tsigkey, values):
tsigkey = v2_utils.resolve_by_name(self.list, tsigkey)
return self._patch('/tsigkeys/%s' % tsigkey, data=values)
return self._patch(f'/tsigkeys/{tsigkey}', data=values)
def delete(self, tsigkey):
tsigkey = v2_utils.resolve_by_name(self.list, tsigkey)
return self._delete('/tsigkeys/%s' % tsigkey)
return self._delete(f'/tsigkeys/{tsigkey}')

View File

@ -29,16 +29,17 @@ def resolve_by_name(func, name, *args):
if uuidutils.is_uuid_like(name):
return name
results = func(criterion={"name": "%s" % name}, *args)
results = func(criterion={"name": f"{name}"}, *args)
length = len(results)
if length == 1:
return results[0]["id"]
elif length == 0:
raise exceptions.NotFound("Name %s didn't resolve" % name)
raise exceptions.NotFound(f"Name {name} didn't resolve")
else:
msg = "Multiple matches found for %s, please use ID instead." % name
raise exceptions.NoUniqueMatch(msg)
raise exceptions.NoUniqueMatch(
"Multiple matches found for {name}, please use ID instead."
)
def parse_query_from_url(url):

View File

@ -20,52 +20,52 @@ from designateclient.v2 import utils as v2_utils
class ZoneController(V2Controller):
def create(self, name, type_=None, email=None, description=None, ttl=None,
masters=None, attributes=None):
type_ = type_ or "PRIMARY"
type_ = type_ or 'PRIMARY'
data = {
"name": name,
"type": type_
'name': name,
'type': type_
}
if type_ == "PRIMARY":
if type_ == 'PRIMARY':
if email:
data["email"] = email
data['email'] = email
if ttl is not None:
data["ttl"] = ttl
data['ttl'] = ttl
elif type_ == "SECONDARY" and masters:
data["masters"] = masters
elif type_ == 'SECONDARY' and masters:
data['masters'] = masters
if description is not None:
data["description"] = description
data['description'] = description
if attributes is not None:
data["attributes"] = attributes
data['attributes'] = attributes
return self._post('/zones', data=data)
def list(self, criterion=None, marker=None, limit=None):
url = self.build_url('/zones', criterion, marker, limit)
return self._get(url, response_key="zones")
return self._get(url, response_key='zones')
def get(self, zone):
zone = v2_utils.resolve_by_name(self.list, zone)
return self._get('/zones/%s' % zone)
return self._get(f'/zones/{zone}')
def update(self, zone, values):
zone = v2_utils.resolve_by_name(self.list, zone)
url = self.build_url('/zones/%s' % zone)
url = self.build_url(f'/zones/{zone}')
return self._patch(url, data=values)
def delete(self, zone, delete_shares=False):
zone = v2_utils.resolve_by_name(self.list, zone)
url = self.build_url('/zones/%s' % zone)
url = self.build_url(f'/zones/{zone}')
if delete_shares:
headers = {'X-Designate-Delete-Shares': 'true'}
@ -78,14 +78,14 @@ class ZoneController(V2Controller):
def abandon(self, zone):
zone = v2_utils.resolve_by_name(self.list, zone)
url = '/zones/%s/tasks/abandon' % zone
url = f'/zones/{zone}/tasks/abandon'
self.client.session.post(url)
def axfr(self, zone):
zone = v2_utils.resolve_by_name(self.list, zone)
url = '/zones/%s/tasks/xfr' % zone
url = f'/zones/{zone}/tasks/xfr'
self.client.session.post(url)
@ -95,67 +95,67 @@ class ZoneTransfersController(V2Controller):
zone = v2_utils.resolve_by_name(self.client.zones.list, zone)
data = {
"target_project_id": target_project_id
'target_project_id': target_project_id
}
if description is not None:
data["description"] = description
data['description'] = description
url = '/zones/%s/tasks/transfer_requests' % zone
url = f'/zones/{zone}/tasks/transfer_requests'
return self._post(url, data=data)
def get_request(self, transfer_id):
url = '/zones/tasks/transfer_requests/%s' % transfer_id
url = f'/zones/tasks/transfer_requests/{transfer_id}'
return self._get(url)
def list_requests(self):
url = '/zones/tasks/transfer_requests'
return self._get(url, response_key="transfer_requests")
return self._get(url, response_key='transfer_requests')
def update_request(self, transfer_id, values):
url = '/zones/tasks/transfer_requests/%s' % transfer_id
url = f'/zones/tasks/transfer_requests/{transfer_id}'
return self._patch(url, data=values)
def delete_request(self, transfer_id):
url = '/zones/tasks/transfer_requests/%s' % transfer_id
url = f'/zones/tasks/transfer_requests/{transfer_id}'
self._delete(url)
def accept_request(self, transfer_id, key):
url = '/zones/tasks/transfer_accepts'
data = {
"key": key,
"zone_transfer_request_id": transfer_id
'key': key,
'zone_transfer_request_id': transfer_id
}
return self._post(url, data=data)
def get_accept(self, accept_id):
url = '/zones/tasks/transfer_accepts/%s' % accept_id
url = f'/zones/tasks/transfer_accepts/{accept_id}'
return self._get(url)
def list_accepts(self):
url = '/zones/tasks/transfer_accepts'
return self._get(url, response_key="transfer_accepts")
return self._get(url, response_key='transfer_accepts')
class ZoneExportsController(V2Controller):
def create(self, zone):
zone_id = v2_utils.resolve_by_name(self.client.zones.list, zone)
return self._post('/zones/%s/tasks/export' % zone_id)
return self._post(f'/zones/{zone_id}/tasks/export')
def get_export_record(self, zone_export_id):
return self._get('/zones/tasks/exports/%s' % zone_export_id)
return self._get(f'/zones/tasks/exports/{zone_export_id}')
def list(self):
return self._get('/zones/tasks/exports')
def delete(self, zone_export_id):
return self._delete('/zones/tasks/exports/%s' % zone_export_id)
return self._delete(f'/zones/tasks/exports/{zone_export_id}')
def get_export(self, zone_export_id):
return self._get('/zones/tasks/exports/%s/export' % zone_export_id,
return self._get(f'/zones/tasks/exports/{zone_export_id}/export',
headers={'Accept': 'text/dns'})
@ -165,20 +165,20 @@ class ZoneImportsController(V2Controller):
headers={'Content-Type': 'text/dns'})
def get_import_record(self, zone_import_id):
return self._get('/zones/tasks/imports/%s' % zone_import_id)
return self._get(f'/zones/tasks/imports/{zone_import_id}')
def list(self):
return self._get('/zones/tasks/imports')
def delete(self, zone_import_id):
return self._delete('/zones/tasks/imports/%s' % zone_import_id)
return self._delete(f'/zones/tasks/imports/{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}
data = {'target_project_id': target_project_id}
return self._post(f'/zones/{zone_id}/shares', data=data)

View File

@ -31,7 +31,7 @@ client = client.Client(session=session)
try:
zone = client.zones.create('i.io.', email='i@i.io')
except exceptions.RemoteError:
zone = dict([(z['name'], z) for z in client.zones.list()])['i.io.']
zone = {z['name']: z for z in client.zones.list()}['i.io.']
print("Recordset list...")
for rs in client.recordsets.list(zone['id']):

View File

@ -24,7 +24,7 @@ client = client.Client(session=session)
try:
zone = dict([(z['name'], z) for z in client.zones.list()])['i.io.']
zone = {z['name']: z for z in client.zones.list()}['i.io.']
client.zones.delete(zone['id'])
except exceptions.NotFound:
pass
@ -40,7 +40,7 @@ for rrset in client.recordsets.list(zone['id']):
# Make some A records
www = client.recordsets.create(
zone['id'],
'www.%s' % zone['name'],
'www.{}'.format(zone['name']),
'A',
['10.0.0.1'])
@ -52,7 +52,7 @@ client.recordsets.update(zone['id'], www['id'], values)
cname = client.recordsets.create(
zone['id'],
'my-site.%s' % zone['name'],
'my-site.{}'.format(zone['name']),
'CNAME',
[www['name']])

View File

@ -1,4 +1,3 @@
import logging
import os
@ -27,6 +26,6 @@ client = client.Client(session=session)
try:
zone = client.zones.create('i.io.', email='i@i.io')
except exceptions.RemoteError:
zone = dict([(z['name'], z) for z in client.zones.list()])['i.io.']
zone = {z['name']: z for z in client.zones.list()}['i.io.']
print(client.recordsets.list(zone['id']))

View File

@ -24,13 +24,13 @@ client = client.Client(session=session)
# Primary Zone
primary = client.zones.create(
'primary-%s.io.' % str(uuid.uuid4()),
f'primary-{str(uuid.uuid4())}.io.',
'PRIMARY',
'root@x.com')
# Secondary Zone
slave = client.zones.create(
'secondary-%s.io.' % str(uuid.uuid4()),
f'secondary-{str(uuid.uuid4())}.io.',
'SECONDARY',
masters=["127.0.1.1"])

View File

@ -23,7 +23,7 @@ session = keystone_session.Session(auth=auth)
client = client.Client(session=session)
zone = client.zones.create(
'primary-%s.io.' % str(uuid.uuid4()),
f'primary-{str(uuid.uuid4())}.io.',
'PRIMARY',
'root@x.com')

View File

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
#
# designateclient documentation build configuration file
@ -39,7 +38,7 @@ source_suffix = '.rst'
master_doc = 'index'
# General information about the project.
copyright = u'2012, Managed I.T. 2013-2014, Hewlett-Packard Development Company, L.P.'
copyright = '2012, Managed I.T. 2013-2014, Hewlett-Packard Development Company, L.P.'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.

View File

@ -61,8 +61,8 @@ source_suffix = '.rst'
master_doc = 'index'
# General information about the project.
project = u'Designate Client Release Notes'
copyright = u'2015, Designate Developers'
project = 'Designate Client Release Notes'
copyright = '2015, Designate Developers'
# Release notes are version independent.
# The full version, including alpha/beta/rc tags.
@ -212,9 +212,9 @@ latex_elements = {
# author, documentclass [howto, manual, or own class]).
latex_documents = [
('index', 'DesignateClientReleaseNotes.tex',
u'Designate Client Release Notes '
u'Documentation',
u'Designate Developers', 'manual'),
'Designate Client Release Notes '
'Documentation',
'Designate Developers', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
@ -243,8 +243,8 @@ latex_documents = [
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'designateclientreleasenotes', u'Designate Client Release Notes '
u'Documentation', [u'Designate Developers'], 1)
('index', 'designateclientreleasenotes', 'Designate Client Release Notes '
'Documentation', ['Designate Developers'], 1)
]
# If true, show URL addresses after external links.
@ -258,9 +258,9 @@ man_pages = [
# dir menu entry, description, category)
texinfo_documents = [
('index', 'DesignateClientReleaseNotes',
u'Designate Client Release Notes '
u'Documentation',
u'Designate Developers', 'DesignateClientReleaseNotes',
'Designate Client Release Notes '
'Documentation',
'Designate Developers', 'DesignateClientReleaseNotes',
'One line description of project.',
'Miscellaneous'),
]