Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-designateclient for
openSUSE:Factory checked in at 2026-08-09 21:34:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-designateclient (Old)
and /work/SRC/openSUSE:Factory/.python-designateclient.new.16738 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-designateclient"
Sun Aug 9 21:34:40 2026 rev:26 rq:1370107 version:7.0.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-designateclient/python-designateclient.changes
2026-03-10 17:53:53.728991282 +0100
+++
/work/SRC/openSUSE:Factory/.python-designateclient.new.16738/python-designateclient.changes
2026-08-09 21:36:58.365579148 +0200
@@ -1,0 +2,21 @@
+Thu Aug 6 20:01:09 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 7.0.0:
+ * Add --status filter option to zone transfer request list
+ * Add Zone nameserver request to client
+ * Add dns limit list CLI command
+ * Add --attributes flag to zone import create command
+ * Add pagination support to zone task list methods
+ * Fix tld list command filters not being applied
+ * Add support for GET /v2/quotas/ endpoint
+ * Update packaging configuration
+ * Migrate setup configuration to pyproject.toml
+ * Include status code and body in non-JSON error responses
+ * Add missing filter options to list commands
+ * Fix "floatingip" to "floating IP" in ptr record help text
+ * Make email optional when creating zone
+ * Update master for stable/2026.1
+ * Drop redundant type/attribute check
+ * Remove old checks for Python 2-3 compatibility
+
+-------------------------------------------------------------------
Old:
----
python_designateclient-6.4.0.tar.gz
New:
----
python_designateclient-7.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-designateclient.spec ++++++
--- /var/tmp/diff_new_pack.9X5Ewi/_old 2026-08-09 21:36:58.977599987 +0200
+++ /var/tmp/diff_new_pack.9X5Ewi/_new 2026-08-09 21:36:58.977599987 +0200
@@ -18,7 +18,7 @@
%global pythons %{primary_python}
Name: python-designateclient
-Version: 6.4.0
+Version: 7.0.0
Release: 0
Summary: OpenStack DNS as a Service - Client
License: Apache-2.0
++++++ python_designateclient-6.4.0.tar.gz ->
python_designateclient-7.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_designateclient-6.4.0/AUTHORS
new/python_designateclient-7.0.0/AUTHORS
--- old/python_designateclient-6.4.0/AUTHORS 2026-02-24 15:34:05.000000000
+0100
+++ new/python_designateclient-7.0.0/AUTHORS 2026-07-01 13:49:32.000000000
+0200
@@ -66,6 +66,7 @@
Patrick Galbraith <[email protected]>
Paul Glass <[email protected]>
Pavel Kirpichyov <[email protected]>
+Pavlo Shchelokovskyy <[email protected]>
Pradeep Kumar Singh <[email protected]>
Rahman Syed <[email protected]>
Reddy A, Penchal (pr8721) <[email protected]>
@@ -91,6 +92,7 @@
Vieri <[email protected]>
Vu Cong Tuan <[email protected]>
abhishekkekane <[email protected]>
+ahnhyun <[email protected]>
algerwang <[email protected]>
ashish-kumar-gupta <[email protected]>
cao.yuan <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_designateclient-6.4.0/ChangeLog
new/python_designateclient-7.0.0/ChangeLog
--- old/python_designateclient-6.4.0/ChangeLog 2026-02-24 15:34:05.000000000
+0100
+++ new/python_designateclient-7.0.0/ChangeLog 2026-07-01 13:49:32.000000000
+0200
@@ -1,9 +1,30 @@
CHANGES
=======
+7.0.0
+-----
+
+* Add --status filter option to zone transfer request list
+* Add Zone nameserver request to client
+* Add dns limit list CLI command
+* Add --attributes flag to zone import create command
+* Add pagination support to zone task list methods
+* Fix tld list command filters not being applied
+* Add support for GET /v2/quotas/ endpoint
+* Update packaging configuration
+* Migrate setup configuration to pyproject.toml
+* Include status code and body in non-JSON error responses
+* Add missing filter options to list commands
+* Fix "floatingip" to "floating IP" in ptr record help text
+* Make email optional when creating zone
+* Update master for stable/2026.1
+* Drop redundant type/attribute check
+* Remove old checks for Python 2-3 compatibility
+
6.4.0
-----
+* Add unit tests for QuotasController
* reno: Update master for unmaintained/2024.1
* Remove remaining Python 3.9 support
* Update master for stable/2025.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_designateclient-6.4.0/PKG-INFO
new/python_designateclient-7.0.0/PKG-INFO
--- old/python_designateclient-6.4.0/PKG-INFO 2026-02-24 15:34:06.070713500
+0100
+++ new/python_designateclient-7.0.0/PKG-INFO 2026-07-01 13:49:32.143751600
+0200
@@ -1,15 +1,15 @@
Metadata-Version: 2.4
Name: python-designateclient
-Version: 6.4.0
+Version: 7.0.0
Summary: OpenStack DNS-as-a-Service - Client
-Home-page: https://docs.openstack.org/python-designateclient/latest
-Author: OpenStack
-Author-email: [email protected]
-License: Apache License, Version 2.0
+Author-email: OpenStack <[email protected]>
+License-Expression: Apache-2.0
+Project-URL: Bug Tracker, https://bugs.launchpad.net/python-designateclient/
+Project-URL: Documentation,
https://docs.openstack.org/python-designateclient/latest
+Project-URL: Source Code, https://opendev.org/openstack/python-designateclient
Classifier: Environment :: OpenStack
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
-Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: Implementation :: CPython
@@ -21,6 +21,7 @@
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: Name Service (DNS)
Requires-Python: >=3.10
+Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: cliff!=2.9.0,>=2.8.0
Requires-Dist: jsonschema>=3.2.0
@@ -32,13 +33,8 @@
Requires-Dist: requests>=2.14.2
Requires-Dist: stevedore>=1.20.0
Requires-Dist: debtcollector>=1.2.0
-Dynamic: author
-Dynamic: author-email
-Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
-Dynamic: requires-python
-Dynamic: summary
=====================================
Python bindings to the Designate API
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/designateclient/hacking/checks.py
new/python_designateclient-7.0.0/designateclient/hacking/checks.py
--- old/python_designateclient-6.4.0/designateclient/hacking/checks.py
2026-02-24 15:32:49.000000000 +0100
+++ new/python_designateclient-7.0.0/designateclient/hacking/checks.py
2026-07-01 13:49:06.000000000 +0200
@@ -22,8 +22,6 @@
# D704: Found import of %s. This oslo library has been graduated!
# D705: timeutils.utcnow() must be used instead of datetime.%s()
# D706: Don't translate debug level logs
-# D707: basestring is not Python3-compatible, use str instead.
-# D708: Do not use xrange. Use range for large loops.
# D709: LOG.audit is deprecated, please use LOG.info!
# D710: LOG.warn() is not allowed. Use LOG.warning()
# D711: Don't use backslashes for line continuation.
@@ -128,21 +126,6 @@
@core.flake8ext
-def check_no_basestring(logical_line):
- if re.search(r"\bbasestring\b", logical_line):
- msg = ("D707: basestring is not Python3-compatible, use "
- "str instead.")
- yield (0, msg)
-
-
[email protected]
-def check_python3_xrange(logical_line):
- if re.search(r"\bxrange\s*\(", logical_line):
- yield (0, "D708: Do not use xrange. Use range for "
- "large loops.")
-
-
[email protected]
def check_no_log_audit(logical_line):
"""Ensure that we are not using LOG.audit messages
Plans are in place going forward as discussed in the following
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/designateclient/tests/osc/v2/test_tlds.py
new/python_designateclient-7.0.0/designateclient/tests/osc/v2/test_tlds.py
--- old/python_designateclient-6.4.0/designateclient/tests/osc/v2/test_tlds.py
1970-01-01 01:00:00.000000000 +0100
+++ new/python_designateclient-7.0.0/designateclient/tests/osc/v2/test_tlds.py
2026-07-01 13:49:06.000000000 +0200
@@ -0,0 +1,67 @@
+# 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.
+
+from unittest import mock
+
+from osc_lib.tests import utils
+
+from designateclient.v2 import base
+from designateclient.v2.cli import tlds
+
+
+class TestDesignateListTLDs(utils.TestCommand):
+ def setUp(self):
+ super().setUp()
+ self.app.client_manager.dns = mock.MagicMock()
+ self.cmd = tlds.ListTLDsCommand(self.app, None)
+ self.dns_client = self.app.client_manager.dns
+
+ def test_list_tlds(self):
+ arg_list = []
+ verify_args = []
+
+ result = base.DesignateList()
+ result.extend([
+ {'id': '1', 'name': 'com', 'description': None},
+ {'id': '2', 'name': 'org', 'description': None},
+ ])
+
+ self.dns_client.tlds.list.return_value = result
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_args)
+ columns, data = self.cmd.take_action(parsed_args)
+
+ results = list(data)
+
+ self.assertEqual(2, len(results))
+ self.dns_client.tlds.list.assert_called_once_with(criterion={})
+
+ def test_list_tlds_with_name_filter(self):
+ arg_list = ['--name', 'com']
+ verify_args = [('name', 'com')]
+
+ result = base.DesignateList()
+ result.extend([
+ {'id': '1', 'name': 'com', 'description': None},
+ ])
+
+ self.dns_client.tlds.list.return_value = result
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_args)
+ columns, data = self.cmd.take_action(parsed_args)
+
+ results = list(data)
+
+ self.assertEqual(1, len(results))
+ self.dns_client.tlds.list.assert_called_once_with(
+ criterion={'name': 'com'}
+ )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/designateclient/tests/osc/v2/test_zone.py
new/python_designateclient-7.0.0/designateclient/tests/osc/v2/test_zone.py
--- old/python_designateclient-6.4.0/designateclient/tests/osc/v2/test_zone.py
2026-02-24 15:32:49.000000000 +0100
+++ new/python_designateclient-7.0.0/designateclient/tests/osc/v2/test_zone.py
2026-07-01 13:49:06.000000000 +0200
@@ -12,6 +12,7 @@
from unittest import mock
+from osc_lib import exceptions as osc_exc
from osc_lib.tests import utils
from designateclient.tests.osc import resources
@@ -46,6 +47,22 @@
self.assertEqual(17, len(results))
+ def test_create_primary_zone_no_email(self):
+ arg_list = [
+ 'example.devstack.org.',
+ ]
+ verify_args = [
+ ('name', 'example.devstack.org.'),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arg_list, verify_args)
+ exc = self.assertRaises(
+ osc_exc.CommandError,
+ self.cmd.take_action,
+ parsed_args,
+ )
+ self.assertIn("Zone type PRIMARY requires --email", str(exc))
+
class TestDesignateListZones(utils.TestCommand):
def setUp(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/designateclient/tests/v2/test_limits.py
new/python_designateclient-7.0.0/designateclient/tests/v2/test_limits.py
--- old/python_designateclient-6.4.0/designateclient/tests/v2/test_limits.py
2026-02-24 15:32:49.000000000 +0100
+++ new/python_designateclient-7.0.0/designateclient/tests/v2/test_limits.py
2026-07-01 13:49:06.000000000 +0200
@@ -16,7 +16,7 @@
from designateclient.tests import v2
-class TestLimits(v2.APIV2TestCase, v2.CrudMixin):
+class TestLimits(v2.APIV2TestCase):
def test_get(self):
ref = {"max_zones": "foo"}
self.stub_url("GET", parts=["limits"], json=ref)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/designateclient/tests/v2/test_quotas.py
new/python_designateclient-7.0.0/designateclient/tests/v2/test_quotas.py
--- old/python_designateclient-6.4.0/designateclient/tests/v2/test_quotas.py
1970-01-01 01:00:00.000000000 +0100
+++ new/python_designateclient-7.0.0/designateclient/tests/v2/test_quotas.py
2026-07-01 13:49:06.000000000 +0200
@@ -0,0 +1,55 @@
+# Copyright 2025 Red Hat
+#
+# 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.
+import uuid
+
+from designateclient.tests import v2
+
+
+class TestQuotas(v2.APIV2TestCase, v2.CrudMixin):
+ RESOURCE = 'quotas'
+
+ def test_list(self):
+ ref = {"zones": 100}
+
+ self.stub_url("GET", parts=[self.RESOURCE], json=ref)
+
+ response = self.client.quotas.list()
+ self.assertEqual(ref, response)
+
+ def test_list_with_project_id(self):
+ project_id = uuid.uuid4().hex
+ ref = {"zones": 100}
+
+ self.stub_url("GET", parts=[self.RESOURCE, project_id], json=ref)
+
+ response = self.client.quotas.list(project_id)
+ self.assertEqual(ref, response)
+
+ def test_update(self):
+ project_id = uuid.uuid4().hex
+ ref = {"zones": 100}
+
+ self.stub_url("PATCH", parts=[self.RESOURCE, project_id], json=ref)
+
+ values = {"zones": 100}
+ self.client.quotas.update(project_id, values)
+ self.assertRequestBodyIs(json=values)
+
+ def test_reset(self):
+ project_id = uuid.uuid4().hex
+
+ self.stub_url("DELETE", parts=[self.RESOURCE, project_id])
+
+ self.client.quotas.reset(project_id)
+ self.assertRequestBodyIs(None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/designateclient/tests/v2/test_zones.py
new/python_designateclient-7.0.0/designateclient/tests/v2/test_zones.py
--- old/python_designateclient-6.4.0/designateclient/tests/v2/test_zones.py
2026-02-24 15:32:49.000000000 +0100
+++ new/python_designateclient-7.0.0/designateclient/tests/v2/test_zones.py
2026-07-01 13:49:06.000000000 +0200
@@ -99,6 +99,19 @@
self.assertList(items, listed)
self.assertQueryStringIs("")
+ def test_nameservers(self):
+ nameservers = {"nameservers": [
+ {"priority": 1, "hostname": "ns1.devstack.org."}
+ ]}
+ zone = self.new_ref()
+
+ parts = ["zones", zone["id"], "nameservers"]
+ self.stub_url('GET', parts=parts, json=nameservers)
+
+ response = self.client.zones.nameservers(zone["id"])
+
+ self.assertList(nameservers["nameservers"], response)
+
def test_update(self):
ref = self.new_ref()
@@ -218,6 +231,26 @@
self.client.zone_transfers.list_requests()
self.assertRequestBodyIs("")
+ def test_list_requests_with_pagination(self):
+ items = [
+ {
+ "id": uuid.uuid4().hex,
+ "zone_id": uuid.uuid4().hex,
+ "target_project_id": uuid.uuid4().hex,
+ "status": "ACTIVE"
+ }
+ ]
+
+ parts = ["zones", "tasks", "transfer_requests"]
+ self.stub_url('GET', parts=parts, json={"transfer_requests": items})
+
+ response = self.client.zone_transfers.list_requests(
+ marker=uuid.uuid4().hex,
+ limit=10
+ )
+ self.assertEqual(items, response)
+ self.assertQueryStringContains(limit="10")
+
def test_update_request(self):
transfer = "098bee04-fe30-4a83-8ccd-e0c496755816"
project = "098bee04-fe30-4a83-8ccd-e0c496755817"
@@ -286,6 +319,25 @@
self.client.zone_transfers.list_accepts()
self.assertRequestBodyIs("")
+ def test_list_accepts_with_pagination(self):
+ items = [
+ {
+ "id": uuid.uuid4().hex,
+ "zone_transfer_request_id": uuid.uuid4().hex,
+ "status": "COMPLETE"
+ }
+ ]
+
+ parts = ["zones", "tasks", "transfer_accepts"]
+ self.stub_url('GET', parts=parts, json={"transfer_accepts": items})
+
+ response = self.client.zone_transfers.list_accepts(
+ marker=uuid.uuid4().hex,
+ limit=5
+ )
+ self.assertEqual(items, response)
+ self.assertQueryStringContains(limit="5")
+
class TestZoneExports(v2.APIV2TestCase, v2.CrudMixin):
def new_ref(self, **kwargs):
@@ -327,9 +379,24 @@
self.stub_url('GET', parts=parts, json={"exports": items})
listed = self.client.zone_exports.list()
- self.assertList(items, listed["exports"])
+ self.assertList(items, listed)
self.assertQueryStringIs("")
+ def test_list_exports_with_pagination(self):
+ items = [
+ self.new_ref()
+ ]
+
+ parts = ["zones", "tasks", "exports"]
+ self.stub_url('GET', parts=parts, json={"exports": items})
+
+ response = self.client.zone_exports.list(
+ marker=uuid.uuid4().hex,
+ limit=20
+ )
+ self.assertList(items, response)
+ self.assertQueryStringContains(limit="20")
+
def test_delete_export(self):
ref = self.new_ref()
@@ -371,6 +438,23 @@
self.client.zone_imports.create(zonefile)
self.assertRequestBodyIs(body=zonefile)
+ def test_create_import_with_attributes(self):
+ zonefile = '$ORIGIN example.com'
+ attributes = {'pool_id': '794ccc2c-d751-44fe-b57f-8894c9f5c842'}
+
+ parts = ["zones", "tasks", "imports"]
+ self.stub_url('POST', parts=parts, json=self.new_ref())
+
+ self.client.zone_imports.create(zonefile, attributes=attributes)
+ self.assertRequestBodyIs(json={
+ 'zonefile': zonefile,
+ 'attributes': attributes,
+ })
+ self.assertEqual(
+ 'application/json',
+ self.requests.last_request.headers['Content-Type']
+ )
+
def test_get_import(self):
ref = self.new_ref()
@@ -391,9 +475,24 @@
self.stub_url('GET', parts=parts, json={"imports": items})
listed = self.client.zone_imports.list()
- self.assertList(items, listed["imports"])
+ self.assertList(items, listed)
self.assertQueryStringIs("")
+ def test_list_imports_with_pagination(self):
+ items = [
+ self.new_ref()
+ ]
+
+ parts = ["zones", "tasks", "imports"]
+ self.stub_url('GET', parts=parts, json={"imports": items})
+
+ response = self.client.zone_imports.list(
+ marker=uuid.uuid4().hex,
+ limit=15
+ )
+ self.assertList(items, response)
+ self.assertQueryStringContains(limit="15")
+
def test_delete_import(self):
ref = self.new_ref()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/designateclient/v2/cli/blacklists.py
new/python_designateclient-7.0.0/designateclient/v2/cli/blacklists.py
--- old/python_designateclient-6.4.0/designateclient/v2/cli/blacklists.py
2026-02-24 15:32:49.000000000 +0100
+++ new/python_designateclient-7.0.0/designateclient/v2/cli/blacklists.py
2026-07-01 13:49:06.000000000 +0200
@@ -39,6 +39,9 @@
def get_parser(self, prog_name):
parser = super().get_parser(prog_name)
+ parser.add_argument('--pattern', help='Blacklist Pattern',
+ required=False)
+
common.add_all_common_options(parser)
return parser
@@ -47,8 +50,12 @@
client = self.app.client_manager.dns
common.set_all_common_headers(client, parsed_args)
+ criterion = {}
+ if parsed_args.pattern is not None:
+ criterion['pattern'] = parsed_args.pattern
+
cols = self.columns
- data = get_all(client.blacklists.list)
+ data = get_all(client.blacklists.list, criterion)
return cols, (utils.get_item_properties(s, cols) for s in data)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/designateclient/v2/cli/limits.py
new/python_designateclient-7.0.0/designateclient/v2/cli/limits.py
--- old/python_designateclient-6.4.0/designateclient/v2/cli/limits.py
1970-01-01 01:00:00.000000000 +0100
+++ new/python_designateclient-7.0.0/designateclient/v2/cli/limits.py
2026-07-01 13:49:06.000000000 +0200
@@ -0,0 +1,34 @@
+# 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.
+
+from osc_lib.command import command
+
+from designateclient.v2.cli import common
+
+
+class ListLimitsCommand(command.Lister):
+ """List DNS limits"""
+
+ columns = ['Limit', 'Value']
+
+ def get_parser(self, prog_name):
+ parser = super().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.limits.get()
+
+ return self.columns, sorted(data.items())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/designateclient/v2/cli/reverse.py
new/python_designateclient-7.0.0/designateclient/v2/cli/reverse.py
--- old/python_designateclient-6.4.0/designateclient/v2/cli/reverse.py
2026-02-24 15:32:49.000000000 +0100
+++ new/python_designateclient-7.0.0/designateclient/v2/cli/reverse.py
2026-07-01 13:49:06.000000000 +0200
@@ -32,7 +32,7 @@
class ListFloatingIPCommand(command.Lister):
- """List floatingip ptr records"""
+ """List floating IP ptr records"""
columns = ['id', 'ptrdname', 'description', 'ttl']
@@ -53,7 +53,7 @@
class ShowFloatingIPCommand(command.ShowOne):
- """Show floatingip ptr record details"""
+ """Show floating IP ptr record details"""
def get_parser(self, prog_name):
parser = super().get_parser(prog_name)
@@ -74,7 +74,7 @@
class SetFloatingIPCommand(command.ShowOne):
- """Set floatingip ptr record"""
+ """Set floating IP ptr record"""
def get_parser(self, prog_name):
parser = super().get_parser(prog_name)
@@ -122,7 +122,7 @@
class UnsetFloatingIPCommand(command.Command):
- """Unset floatingip ptr record"""
+ """Unset floating IP ptr record"""
def get_parser(self, prog_name):
parser = super().get_parser(prog_name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/designateclient/v2/cli/tlds.py
new/python_designateclient-7.0.0/designateclient/v2/cli/tlds.py
--- old/python_designateclient-6.4.0/designateclient/v2/cli/tlds.py
2026-02-24 15:32:49.000000000 +0100
+++ new/python_designateclient-7.0.0/designateclient/v2/cli/tlds.py
2026-07-01 13:49:06.000000000 +0200
@@ -41,8 +41,6 @@
parser.add_argument('--name', help='TLD NAME')
- parser.add_argument('--description', help='TLD Description')
-
common.add_all_common_options(parser)
return parser
@@ -51,7 +49,11 @@
client = self.app.client_manager.dns
common.set_all_common_headers(client, parsed_args)
- data = get_all(client.tlds.list)
+ criterion = {}
+ if parsed_args.name is not None:
+ criterion['name'] = parsed_args.name
+
+ data = get_all(client.tlds.list, criterion)
cols = self.columns
return cols, (utils.get_item_properties(s, cols) for s in data)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/designateclient/v2/cli/zones.py
new/python_designateclient-7.0.0/designateclient/v2/cli/zones.py
--- old/python_designateclient-6.4.0/designateclient/v2/cli/zones.py
2026-02-24 15:32:49.000000000 +0100
+++ new/python_designateclient-7.0.0/designateclient/v2/cli/zones.py
2026-07-01 13:49:06.000000000 +0200
@@ -140,7 +140,8 @@
parser = super().get_parser(prog_name)
parser.add_argument('name', help='Zone Name')
- parser.add_argument('--email', help='Zone Email', required=True)
+ parser.add_argument('--email',
+ help='Zone Email. Required for PRIMARY zone type')
parser.add_argument('--type', help='Zone Type',
choices=['PRIMARY', 'SECONDARY'],
default='PRIMARY')
@@ -171,7 +172,7 @@
except ValueError:
raise osc_exc.CommandError(
f"Attribute '{attr}' is in an incorrect format. "
- "Attributes are <key>:<value> formated"
+ "Attributes are <key>:<value> formatted"
)
if parsed_args.type == 'PRIMARY':
@@ -256,7 +257,7 @@
parser.add_argument('--delete-shares', default=False,
action='store_true',
- help='Delete existing zone shares. Default: False')
+ help='Delete existing zone shares.')
common.add_all_common_options(parser)
common.add_hard_delete_option(parser)
@@ -267,19 +268,37 @@
client = self.app.client_manager.dns
common.set_all_common_headers(client, parsed_args)
- delete_shares = False
- if (hasattr(parsed_args, 'delete_shares') and
- parsed_args.delete_shares is not None and
- isinstance(parsed_args.delete_shares, bool)):
- delete_shares = parsed_args.delete_shares
-
- data = client.zones.delete(parsed_args.id, delete_shares=delete_shares)
+ data = client.zones.delete(
+ parsed_args.id, delete_shares=parsed_args.delete_shares)
LOG.info('Zone %s was deleted', parsed_args.id)
_format_zone(data)
return zip(*sorted(data.items()))
+class ListZoneNameserversCommand(command.Lister):
+ """List Zone Nameservers"""
+
+ columns = ['hostname', 'priority']
+
+ def get_parser(self, prog_name):
+ parser = super().get_parser(prog_name)
+
+ parser.add_argument('id', help='Zone ID or 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.zones.nameservers(parsed_args.id)
+
+ cols = self.columns
+ return cols, (utils.get_item_properties(s, cols) for s in data)
+
+
class AbandonZoneCommand(command.Command):
"""Abandon a zone"""
def get_parser(self, prog_name):
@@ -385,6 +404,9 @@
parser = super().get_parser(
prog_name)
+ parser.add_argument('--status', help='Zone Transfer Request Status',
+ required=False)
+
common.add_all_common_options(parser)
return parser
@@ -393,7 +415,11 @@
client = self.app.client_manager.dns
common.set_all_common_headers(client, parsed_args)
- data = client.zone_transfers.list_requests()
+ criterion = {}
+ if parsed_args.status is not None:
+ criterion['status'] = parsed_args.status
+
+ data = get_all(client.zone_transfers.list_requests, criterion)
cols = self.columns
return cols, (utils.get_item_properties(s, cols) for s in data)
@@ -513,6 +539,10 @@
parser = super().get_parser(
prog_name)
+ parser.add_argument('--status',
+ help='Zone Transfer Accept Status',
+ required=False)
+
common.add_all_common_options(parser)
return parser
@@ -521,7 +551,11 @@
client = self.app.client_manager.dns
common.set_all_common_headers(client, parsed_args)
- data = client.zone_transfers.list_accepts()
+ criterion = {}
+ if parsed_args.status is not None:
+ criterion['status'] = parsed_args.status
+
+ data = get_all(client.zone_transfers.list_accepts, criterion)
cols = self.columns
return cols, (utils.get_item_properties(s, cols) for s in data)
@@ -587,6 +621,10 @@
parser = super().get_parser(
prog_name)
+ parser.add_argument('--status', help='Zone Export Status',
+ required=False)
+ parser.add_argument('--zone-id', help='Zone ID', required=False)
+
common.add_all_common_options(parser)
return parser
@@ -595,11 +633,16 @@
client = self.app.client_manager.dns
common.set_all_common_headers(client, parsed_args)
- data = client.zone_exports.list()
+ criterion = {}
+ if parsed_args.status is not None:
+ criterion['status'] = parsed_args.status
+ if parsed_args.zone_id is not None:
+ criterion['zone_id'] = parsed_args.zone_id
+
+ data = get_all(client.zone_exports.list, criterion)
cols = self.columns
- return cols, (utils.get_item_properties(s, cols)
- for s in data['exports'])
+ return cols, (utils.get_item_properties(s, cols) for s in data)
class ShowZoneExportCommand(command.ShowOne):
@@ -679,6 +722,8 @@
parser.add_argument('zone_file_path',
help='Path to a zone file', type=str)
+ parser.add_argument('--attributes', help='Zone Attributes',
+ nargs='+')
common.add_all_common_options(parser)
@@ -691,7 +736,20 @@
with open(parsed_args.zone_file_path) as f:
zone_file_contents = f.read()
- data = client.zone_imports.create(zone_file_contents)
+ attributes = None
+ if parsed_args.attributes:
+ attributes = {}
+ for attr in parsed_args.attributes:
+ try:
+ k, v = attr.split(':')
+ attributes[k] = v
+ except ValueError:
+ raise osc_exc.CommandError(
+ "Attribute '%s' is in an incorrect format. "
+ "Attributes are <key>:<value> formatted" % attr
+ )
+
+ data = client.zone_imports.create(zone_file_contents, attributes)
_format_zone_import_record(data)
LOG.info('Zone Import %s was created', data['id'])
@@ -714,6 +772,12 @@
parser = super().get_parser(
prog_name)
+ parser.add_argument('--status', help='Zone Import Status',
+ required=False)
+ parser.add_argument('--zone-id', help='Zone ID', required=False)
+ parser.add_argument('--message', help='Zone Import Message',
+ required=False)
+
common.add_all_common_options(parser)
return parser
@@ -722,11 +786,18 @@
client = self.app.client_manager.dns
common.set_all_common_headers(client, parsed_args)
- data = client.zone_imports.list()
+ criterion = {}
+ if parsed_args.status is not None:
+ criterion['status'] = parsed_args.status
+ if parsed_args.zone_id is not None:
+ criterion['zone_id'] = parsed_args.zone_id
+ if parsed_args.message is not None:
+ criterion['message'] = parsed_args.message
+
+ data = get_all(client.zone_imports.list, criterion)
cols = self.columns
- return cols, (utils.get_item_properties(s, cols)
- for s in data['imports'])
+ return cols, (utils.get_item_properties(s, cols) for s in data)
class ShowZoneImportCommand(command.ShowOne):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/designateclient/v2/client.py
new/python_designateclient-7.0.0/designateclient/v2/client.py
--- old/python_designateclient-6.4.0/designateclient/v2/client.py
2026-02-24 15:32:49.000000000 +0100
+++ new/python_designateclient-7.0.0/designateclient/v2/client.py
2026-07-01 13:49:06.000000000 +0200
@@ -98,7 +98,10 @@
try:
response_payload = response.json()
except ValueError:
- response_payload = {}
+ response_payload = {
+ 'code': response.status_code,
+ 'message': response.text,
+ }
body = response.text
if response.status_code == 400:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/designateclient/v2/quotas.py
new/python_designateclient-7.0.0/designateclient/v2/quotas.py
--- old/python_designateclient-6.4.0/designateclient/v2/quotas.py
2026-02-24 15:32:49.000000000 +0100
+++ new/python_designateclient-7.0.0/designateclient/v2/quotas.py
2026-07-01 13:49:06.000000000 +0200
@@ -17,7 +17,9 @@
class QuotasController(V2Controller):
- def list(self, project_id):
+ def list(self, project_id=None):
+ if project_id is None:
+ return self._get('/quotas')
return self._get(f'/quotas/{project_id}')
def update(self, project_id, values):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/designateclient/v2/zones.py
new/python_designateclient-7.0.0/designateclient/v2/zones.py
--- old/python_designateclient-6.4.0/designateclient/v2/zones.py
2026-02-24 15:32:49.000000000 +0100
+++ new/python_designateclient-7.0.0/designateclient/v2/zones.py
2026-07-01 13:49:06.000000000 +0200
@@ -55,6 +55,12 @@
return self._get(f'/zones/{zone}')
+ def nameservers(self, zone):
+ zone = v2_utils.resolve_by_name(self.list, zone)
+
+ return self._get('/zones/%s/nameservers' % zone,
+ response_key='nameservers')
+
def update(self, zone, values):
zone = v2_utils.resolve_by_name(self.list, zone)
@@ -116,8 +122,9 @@
url = f'/zones/tasks/transfer_requests/{transfer_id}'
return self._get(url)
- def list_requests(self):
- url = '/zones/tasks/transfer_requests'
+ def list_requests(self, criterion=None, marker=None, limit=None):
+ url = self.build_url('/zones/tasks/transfer_requests', criterion,
+ marker, limit)
return self._get(url, response_key='transfer_requests')
def update_request(self, transfer_id, values):
@@ -141,8 +148,9 @@
url = f'/zones/tasks/transfer_accepts/{accept_id}'
return self._get(url)
- def list_accepts(self):
- url = '/zones/tasks/transfer_accepts'
+ def list_accepts(self, criterion=None, marker=None, limit=None):
+ url = self.build_url('/zones/tasks/transfer_accepts', criterion,
+ marker, limit)
return self._get(url, response_key='transfer_accepts')
@@ -155,8 +163,9 @@
def get_export_record(self, zone_export_id):
return self._get(f'/zones/tasks/exports/{zone_export_id}')
- def list(self):
- return self._get('/zones/tasks/exports')
+ def list(self, criterion=None, marker=None, limit=None):
+ url = self.build_url('/zones/tasks/exports', criterion, marker, limit)
+ return self._get(url, response_key='exports')
def delete(self, zone_export_id):
return self._delete(f'/zones/tasks/exports/{zone_export_id}')
@@ -167,15 +176,26 @@
class ZoneImportsController(V2Controller):
- def create(self, zone_file_contents):
- return self._post('/zones/tasks/imports', data=zone_file_contents,
- headers={'Content-Type': 'text/dns'})
+ def create(self, zone_file_contents, attributes=None):
+ if attributes:
+ data = {
+ 'zonefile': zone_file_contents,
+ 'attributes': attributes,
+ }
+ headers = {'Content-Type': 'application/json'}
+ else:
+ data = zone_file_contents
+ headers = {'Content-Type': 'text/dns'}
+
+ return self._post('/zones/tasks/imports', data=data,
+ headers=headers)
def get_import_record(self, zone_import_id):
return self._get(f'/zones/tasks/imports/{zone_import_id}')
- def list(self):
- return self._get('/zones/tasks/imports')
+ def list(self, criterion=None, marker=None, limit=None):
+ url = self.build_url('/zones/tasks/imports', criterion, marker, limit)
+ return self._get(url, response_key='imports')
def delete(self, zone_import_id):
return self._delete(f'/zones/tasks/imports/{zone_import_id}')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_designateclient-6.4.0/pyproject.toml
new/python_designateclient-7.0.0/pyproject.toml
--- old/python_designateclient-6.4.0/pyproject.toml 1970-01-01
01:00:00.000000000 +0100
+++ new/python_designateclient-7.0.0/pyproject.toml 2026-07-01
13:49:06.000000000 +0200
@@ -0,0 +1,105 @@
+[build-system]
+requires = ["pbr>=6.1.1"]
+build-backend = "pbr.build"
+
+[project]
+name = "python-designateclient"
+description = "OpenStack DNS-as-a-Service - Client"
+readme = {file = "README.rst", content-type = "text/x-rst"}
+license = "Apache-2.0"
+requires-python = ">=3.10"
+authors = [
+ {name = "OpenStack", email = "[email protected]"},
+]
+classifiers = [
+ "Environment :: OpenStack",
+ "Intended Audience :: Information Technology",
+ "Intended Audience :: System Administrators",
+ "Operating System :: POSIX :: Linux",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: Implementation :: CPython",
+ "Programming Language :: Python :: 3 :: Only",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
+ "Programming Language :: Python :: 3.13",
+ "Topic :: Internet :: Name Service (DNS)",
+]
+dynamic = ["version", "dependencies"]
+
+[project.urls]
+"Bug Tracker" = "https://bugs.launchpad.net/python-designateclient/"
+"Documentation" = "https://docs.openstack.org/python-designateclient/latest"
+"Source Code" = "https://opendev.org/openstack/python-designateclient"
+
+[project.entry-points."designateclient.versions"]
+2 = "designateclient.v2.client:Client"
+
+[project.entry-points."openstack.cli.extension"]
+dns = "designateclient.osc.plugin"
+
+[project.entry-points."openstack.dns.v2"]
+zone_blacklist_create =
"designateclient.v2.cli.blacklists:CreateBlacklistCommand"
+zone_blacklist_list = "designateclient.v2.cli.blacklists:ListBlacklistsCommand"
+zone_blacklist_show = "designateclient.v2.cli.blacklists:ShowBlacklistCommand"
+zone_blacklist_set = "designateclient.v2.cli.blacklists:SetBlacklistCommand"
+zone_blacklist_delete =
"designateclient.v2.cli.blacklists:DeleteBlacklistCommand"
+tld_create = "designateclient.v2.cli.tlds:CreateTLDCommand"
+tld_list = "designateclient.v2.cli.tlds:ListTLDsCommand"
+tld_show = "designateclient.v2.cli.tlds:ShowTLDCommand"
+tld_set = "designateclient.v2.cli.tlds:SetTLDCommand"
+tld_delete = "designateclient.v2.cli.tlds:DeleteTLDCommand"
+zone_create = "designateclient.v2.cli.zones:CreateZoneCommand"
+zone_list = "designateclient.v2.cli.zones:ListZonesCommand"
+zone_nameservers_list =
"designateclient.v2.cli.zones:ListZoneNameserversCommand"
+zone_show = "designateclient.v2.cli.zones:ShowZoneCommand"
+zone_set = "designateclient.v2.cli.zones:SetZoneCommand"
+zone_delete = "designateclient.v2.cli.zones:DeleteZoneCommand"
+zone_abandon = "designateclient.v2.cli.zones:AbandonZoneCommand"
+zone_axfr = "designateclient.v2.cli.zones:AXFRZoneCommand"
+zone_move = "designateclient.v2.cli.zones:PoolMoveZoneCommand"
+zone_export_create = "designateclient.v2.cli.zones:ExportZoneCommand"
+zone_export_list = "designateclient.v2.cli.zones:ListZoneExportsCommand"
+zone_export_show = "designateclient.v2.cli.zones:ShowZoneExportCommand"
+zone_export_delete = "designateclient.v2.cli.zones:DeleteZoneExportCommand"
+zone_export_showfile = "designateclient.v2.cli.zones:ShowZoneExportFileCommand"
+zone_import_create = "designateclient.v2.cli.zones:ImportZoneCommand"
+zone_import_list = "designateclient.v2.cli.zones:ListZoneImportsCommand"
+zone_import_show = "designateclient.v2.cli.zones:ShowZoneImportCommand"
+zone_import_delete = "designateclient.v2.cli.zones:DeleteZoneImportCommand"
+zone_transfer_request_create =
"designateclient.v2.cli.zones:CreateTransferRequestCommand"
+zone_transfer_request_list =
"designateclient.v2.cli.zones:ListTransferRequestsCommand"
+zone_transfer_request_show =
"designateclient.v2.cli.zones:ShowTransferRequestCommand"
+zone_transfer_request_set =
"designateclient.v2.cli.zones:SetTransferRequestCommand"
+zone_transfer_request_delete =
"designateclient.v2.cli.zones:DeleteTransferRequestCommand"
+zone_transfer_accept_request =
"designateclient.v2.cli.zones:AcceptTransferRequestCommand"
+zone_transfer_accept_list =
"designateclient.v2.cli.zones:ListTransferAcceptsCommand"
+zone_transfer_accept_show =
"designateclient.v2.cli.zones:ShowTransferAcceptCommand"
+zone_share_create = "designateclient.v2.cli.zones:ShareZoneCommand"
+zone_share_list = "designateclient.v2.cli.zones:ListSharedZonesCommand"
+zone_share_show = "designateclient.v2.cli.zones:ShowSharedZoneCommand"
+zone_share_delete = "designateclient.v2.cli.zones:DeleteSharedZoneCommand"
+recordset_create = "designateclient.v2.cli.recordsets:CreateRecordSetCommand"
+recordset_list = "designateclient.v2.cli.recordsets:ListRecordSetsCommand"
+recordset_show = "designateclient.v2.cli.recordsets:ShowRecordSetCommand"
+recordset_set = "designateclient.v2.cli.recordsets:SetRecordSetCommand"
+recordset_delete = "designateclient.v2.cli.recordsets:DeleteRecordSetCommand"
+ptr_record_list = "designateclient.v2.cli.reverse:ListFloatingIPCommand"
+ptr_record_show = "designateclient.v2.cli.reverse:ShowFloatingIPCommand"
+ptr_record_set = "designateclient.v2.cli.reverse:SetFloatingIPCommand"
+ptr_record_unset = "designateclient.v2.cli.reverse:UnsetFloatingIPCommand"
+dns_service_list =
"designateclient.v2.cli.service_statuses:ListServiceStatusesCommand"
+dns_service_show =
"designateclient.v2.cli.service_statuses:ShowServiceStatusCommand"
+dns_quota_list = "designateclient.v2.cli.quotas:ListQuotasCommand"
+dns_quota_set = "designateclient.v2.cli.quotas:SetQuotasCommand"
+dns_quota_reset = "designateclient.v2.cli.quotas:ResetQuotasCommand"
+tsigkey_create = "designateclient.v2.cli.tsigkeys:CreateTSIGKeyCommand"
+tsigkey_list = "designateclient.v2.cli.tsigkeys:ListTSIGKeysCommand"
+tsigkey_show = "designateclient.v2.cli.tsigkeys:ShowTSIGKeyCommand"
+tsigkey_set = "designateclient.v2.cli.tsigkeys:SetTSIGKeyCommand"
+tsigkey_delete = "designateclient.v2.cli.tsigkeys:DeleteTSIGKeyCommand"
+dns_limit_list = "designateclient.v2.cli.limits:ListLimitsCommand"
+
+[tool.setuptools.packages.find]
+include = ["designateclient*"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/python_designateclient.egg-info/PKG-INFO
new/python_designateclient-7.0.0/python_designateclient.egg-info/PKG-INFO
--- old/python_designateclient-6.4.0/python_designateclient.egg-info/PKG-INFO
2026-02-24 15:34:05.000000000 +0100
+++ new/python_designateclient-7.0.0/python_designateclient.egg-info/PKG-INFO
2026-07-01 13:49:32.000000000 +0200
@@ -1,15 +1,15 @@
Metadata-Version: 2.4
Name: python-designateclient
-Version: 6.4.0
+Version: 7.0.0
Summary: OpenStack DNS-as-a-Service - Client
-Home-page: https://docs.openstack.org/python-designateclient/latest
-Author: OpenStack
-Author-email: [email protected]
-License: Apache License, Version 2.0
+Author-email: OpenStack <[email protected]>
+License-Expression: Apache-2.0
+Project-URL: Bug Tracker, https://bugs.launchpad.net/python-designateclient/
+Project-URL: Documentation,
https://docs.openstack.org/python-designateclient/latest
+Project-URL: Source Code, https://opendev.org/openstack/python-designateclient
Classifier: Environment :: OpenStack
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
-Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: Implementation :: CPython
@@ -21,6 +21,7 @@
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: Name Service (DNS)
Requires-Python: >=3.10
+Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: cliff!=2.9.0,>=2.8.0
Requires-Dist: jsonschema>=3.2.0
@@ -32,13 +33,8 @@
Requires-Dist: requests>=2.14.2
Requires-Dist: stevedore>=1.20.0
Requires-Dist: debtcollector>=1.2.0
-Dynamic: author
-Dynamic: author-email
-Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
-Dynamic: requires-python
-Dynamic: summary
=====================================
Python bindings to the Designate API
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/python_designateclient.egg-info/SOURCES.txt
new/python_designateclient-7.0.0/python_designateclient.egg-info/SOURCES.txt
---
old/python_designateclient-6.4.0/python_designateclient.egg-info/SOURCES.txt
2026-02-24 15:34:06.000000000 +0100
+++
new/python_designateclient-7.0.0/python_designateclient.egg-info/SOURCES.txt
2026-07-01 13:49:32.000000000 +0200
@@ -6,6 +6,7 @@
ChangeLog
LICENSE
README.rst
+pyproject.toml
python-designateclient.sublime-project
requirements.txt
setup.cfg
@@ -52,12 +53,14 @@
designateclient/tests/osc/resources/zone_list.json
designateclient/tests/osc/v2/__init__.py
designateclient/tests/osc/v2/test_recordsets.py
+designateclient/tests/osc/v2/test_tlds.py
designateclient/tests/osc/v2/test_zone.py
designateclient/tests/v2/__init__.py
designateclient/tests/v2/test_blacklists.py
designateclient/tests/v2/test_client.py
designateclient/tests/v2/test_limits.py
designateclient/tests/v2/test_nameservers.py
+designateclient/tests/v2/test_quotas.py
designateclient/tests/v2/test_recordsets.py
designateclient/tests/v2/test_reverse.py
designateclient/tests/v2/test_service_statuses.py
@@ -83,6 +86,7 @@
designateclient/v2/cli/__init__.py
designateclient/v2/cli/blacklists.py
designateclient/v2/cli/common.py
+designateclient/v2/cli/limits.py
designateclient/v2/cli/quotas.py
designateclient/v2/cli/recordsets.py
designateclient/v2/cli/reverse.py
@@ -119,19 +123,27 @@
releasenotes/notes/.placeholder
releasenotes/notes/Add-shared-zones-support-4be565f3d1c6356c.yaml
releasenotes/notes/add-hard-delete-option-for-zone-delete-e16652c8e72fc023.yaml
+releasenotes/notes/bug-1927892-a3f8c4e2b7d91065.yaml
releasenotes/notes/bug-1940544-9ed7805341dec1ba.yaml
+releasenotes/notes/bug-1978713-1e1f6d9a991c2c4f.yaml
+releasenotes/notes/bug-2131519-zone-task-pagination-7e4a2b91c3d80f56.yaml
+releasenotes/notes/dns-limit-list-command-b5fabebf76e7e8eb.yaml
releasenotes/notes/drop-py2-c4e50d006fa4446c.yaml
releasenotes/notes/drop-python-3-6-and-3-7-7d815c897c330d9c.yaml
releasenotes/notes/quota-commands-7ff037bddae95771.yaml
releasenotes/notes/remove-api-v1-4e507128b344082b.yaml
releasenotes/notes/remove-py38-355959306e686af7.yaml
releasenotes/notes/remove-records-argument-8eda058e3bf028ca.yaml
+releasenotes/notes/zone-create-command-email-is-optional-bug-2143824-71b816f91ce045b1.yaml
+releasenotes/notes/zone-import-attributes-1166c129d39186db.yaml
+releasenotes/notes/zone-nameservers-list-command-60b986968d714b2b.yaml
releasenotes/source/2023.1.rst
releasenotes/source/2023.2.rst
releasenotes/source/2024.1.rst
releasenotes/source/2024.2.rst
releasenotes/source/2025.1.rst
releasenotes/source/2025.2.rst
+releasenotes/source/2026.1.rst
releasenotes/source/conf.py
releasenotes/source/index.rst
releasenotes/source/newton.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/python_designateclient.egg-info/entry_points.txt
new/python_designateclient-7.0.0/python_designateclient.egg-info/entry_points.txt
---
old/python_designateclient-6.4.0/python_designateclient.egg-info/entry_points.txt
2026-02-24 15:34:05.000000000 +0100
+++
new/python_designateclient-7.0.0/python_designateclient.egg-info/entry_points.txt
2026-07-01 13:49:32.000000000 +0200
@@ -5,6 +5,7 @@
dns = designateclient.osc.plugin
[openstack.dns.v2]
+dns_limit_list = designateclient.v2.cli.limits:ListLimitsCommand
dns_quota_list = designateclient.v2.cli.quotas:ListQuotasCommand
dns_quota_reset = designateclient.v2.cli.quotas:ResetQuotasCommand
dns_quota_set = designateclient.v2.cli.quotas:SetQuotasCommand
@@ -49,6 +50,7 @@
zone_import_show = designateclient.v2.cli.zones:ShowZoneImportCommand
zone_list = designateclient.v2.cli.zones:ListZonesCommand
zone_move = designateclient.v2.cli.zones:PoolMoveZoneCommand
+zone_nameservers_list = designateclient.v2.cli.zones:ListZoneNameserversCommand
zone_set = designateclient.v2.cli.zones:SetZoneCommand
zone_share_create = designateclient.v2.cli.zones:ShareZoneCommand
zone_share_delete = designateclient.v2.cli.zones:DeleteSharedZoneCommand
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/python_designateclient.egg-info/pbr.json
new/python_designateclient-7.0.0/python_designateclient.egg-info/pbr.json
--- old/python_designateclient-6.4.0/python_designateclient.egg-info/pbr.json
2026-02-24 15:34:05.000000000 +0100
+++ new/python_designateclient-7.0.0/python_designateclient.egg-info/pbr.json
2026-07-01 13:49:32.000000000 +0200
@@ -1 +1 @@
-{"git_version": "891ee88", "is_release": true}
\ No newline at end of file
+{"git_version": "944e373", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/releasenotes/notes/bug-1927892-a3f8c4e2b7d91065.yaml
new/python_designateclient-7.0.0/releasenotes/notes/bug-1927892-a3f8c4e2b7d91065.yaml
---
old/python_designateclient-6.4.0/releasenotes/notes/bug-1927892-a3f8c4e2b7d91065.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python_designateclient-7.0.0/releasenotes/notes/bug-1927892-a3f8c4e2b7d91065.yaml
2026-07-01 13:49:06.000000000 +0200
@@ -0,0 +1,14 @@
+---
+features:
+ - Adds ``--status`` and ``--zone-id`` filter options to the
+ ``zone export list`` command.
+ - Adds ``--status``, ``--zone-id``, and ``--message`` filter options to the
+ ``zone import list`` command.
+ - Adds ``--status`` filter option to the ``zone transfer accept list``
+ command.
+fixes:
+ - Wires up the existing ``--pattern`` filter option in the
+ ``dns blacklist list`` command so it is actually passed to the API.
+ - Wires up the existing ``--name`` filter option in the ``tld list``
+ command so it is actually passed to the API. Removes the
+ ``--description`` filter which is not supported by the API.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/releasenotes/notes/bug-1978713-1e1f6d9a991c2c4f.yaml
new/python_designateclient-7.0.0/releasenotes/notes/bug-1978713-1e1f6d9a991c2c4f.yaml
---
old/python_designateclient-6.4.0/releasenotes/notes/bug-1978713-1e1f6d9a991c2c4f.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python_designateclient-7.0.0/releasenotes/notes/bug-1978713-1e1f6d9a991c2c4f.yaml
2026-07-01 13:49:06.000000000 +0200
@@ -0,0 +1,4 @@
+---
+features:
+ - Adds a ``--status`` filter option to the ``zone transfer request list``
+ command, allowing users to filter zone transfer requests by status.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/releasenotes/notes/bug-2131519-zone-task-pagination-7e4a2b91c3d80f56.yaml
new/python_designateclient-7.0.0/releasenotes/notes/bug-2131519-zone-task-pagination-7e4a2b91c3d80f56.yaml
---
old/python_designateclient-6.4.0/releasenotes/notes/bug-2131519-zone-task-pagination-7e4a2b91c3d80f56.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python_designateclient-7.0.0/releasenotes/notes/bug-2131519-zone-task-pagination-7e4a2b91c3d80f56.yaml
2026-07-01 13:49:06.000000000 +0200
@@ -0,0 +1,17 @@
+---
+features:
+ - Zone task list methods (``zone_transfers.list_requests()``,
+ ``zone_transfers.list_accepts()``, ``zone_exports.list()``, and
+ ``zone_imports.list()``) now support pagination parameters
+ (``criterion``, ``marker``, ``limit``), matching the pattern used
+ by other v2 controllers.
+ - CLI list commands for zone exports, zone imports, and zone transfer
+ accepts now automatically paginate through all results using
+ ``get_all()``.
+upgrade:
+ - |
+ ``zone_exports.list()`` and ``zone_imports.list()`` now return a list
+ of items directly instead of the raw API response dict. Code that
+ previously accessed ``result["exports"]`` or ``result["imports"]``
+ should use the return value directly. This aligns these methods with
+ all other v2 list controllers which already use ``response_key``.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/releasenotes/notes/dns-limit-list-command-b5fabebf76e7e8eb.yaml
new/python_designateclient-7.0.0/releasenotes/notes/dns-limit-list-command-b5fabebf76e7e8eb.yaml
---
old/python_designateclient-6.4.0/releasenotes/notes/dns-limit-list-command-b5fabebf76e7e8eb.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python_designateclient-7.0.0/releasenotes/notes/dns-limit-list-command-b5fabebf76e7e8eb.yaml
2026-07-01 13:49:06.000000000 +0200
@@ -0,0 +1,4 @@
+---
+features:
+ - Adds a ``dns limit list`` CLI command to display the DNS service
+ limits (``GET /limits``).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/releasenotes/notes/zone-create-command-email-is-optional-bug-2143824-71b816f91ce045b1.yaml
new/python_designateclient-7.0.0/releasenotes/notes/zone-create-command-email-is-optional-bug-2143824-71b816f91ce045b1.yaml
---
old/python_designateclient-6.4.0/releasenotes/notes/zone-create-command-email-is-optional-bug-2143824-71b816f91ce045b1.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python_designateclient-7.0.0/releasenotes/notes/zone-create-command-email-is-optional-bug-2143824-71b816f91ce045b1.yaml
2026-07-01 13:49:06.000000000 +0200
@@ -0,0 +1,6 @@
+---
+fixes:
+ - |
+ "--email" is no longer an effectively required argument when creating zone.
+ It is now only required for PRIMARY zone type, and is silently ignored
+ for SECONDARY zone type.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/releasenotes/notes/zone-import-attributes-1166c129d39186db.yaml
new/python_designateclient-7.0.0/releasenotes/notes/zone-import-attributes-1166c129d39186db.yaml
---
old/python_designateclient-6.4.0/releasenotes/notes/zone-import-attributes-1166c129d39186db.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python_designateclient-7.0.0/releasenotes/notes/zone-import-attributes-1166c129d39186db.yaml
2026-07-01 13:49:06.000000000 +0200
@@ -0,0 +1,9 @@
+---
+features:
+ - |
+ Added ``--attributes`` option to ``openstack zone import create`` command.
+ This allows users to pass zone attributes (e.g. ``pool_id``) when
+ importing a zonefile, using the same ``key:value`` format as
+ ``openstack zone create``. When attributes are provided, the client sends
+ the request as ``application/json`` instead of ``text/dns``. Existing
+ behavior without ``--attributes`` is unchanged.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/releasenotes/notes/zone-nameservers-list-command-60b986968d714b2b.yaml
new/python_designateclient-7.0.0/releasenotes/notes/zone-nameservers-list-command-60b986968d714b2b.yaml
---
old/python_designateclient-6.4.0/releasenotes/notes/zone-nameservers-list-command-60b986968d714b2b.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python_designateclient-7.0.0/releasenotes/notes/zone-nameservers-list-command-60b986968d714b2b.yaml
2026-07-01 13:49:06.000000000 +0200
@@ -0,0 +1,4 @@
+---
+features:
+ - Adds a ``zone nameservers list`` CLI command to list the
+ nameservers assigned to a zone (``GET /zones/{zone_id}/nameservers``).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/releasenotes/source/2026.1.rst
new/python_designateclient-7.0.0/releasenotes/source/2026.1.rst
--- old/python_designateclient-6.4.0/releasenotes/source/2026.1.rst
1970-01-01 01:00:00.000000000 +0100
+++ new/python_designateclient-7.0.0/releasenotes/source/2026.1.rst
2026-07-01 13:49:06.000000000 +0200
@@ -0,0 +1,6 @@
+===========================
+2026.1 Series Release Notes
+===========================
+
+.. release-notes::
+ :branch: stable/2026.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_designateclient-6.4.0/releasenotes/source/index.rst
new/python_designateclient-7.0.0/releasenotes/source/index.rst
--- old/python_designateclient-6.4.0/releasenotes/source/index.rst
2026-02-24 15:32:49.000000000 +0100
+++ new/python_designateclient-7.0.0/releasenotes/source/index.rst
2026-07-01 13:49:06.000000000 +0200
@@ -6,6 +6,7 @@
:maxdepth: 1
unreleased
+ 2026.1
2025.2
2025.1
2024.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_designateclient-6.4.0/setup.cfg
new/python_designateclient-7.0.0/setup.cfg
--- old/python_designateclient-6.4.0/setup.cfg 2026-02-24 15:34:06.071713400
+0100
+++ new/python_designateclient-7.0.0/setup.cfg 2026-07-01 13:49:32.143751600
+0200
@@ -1,108 +1,5 @@
[metadata]
name = python-designateclient
-description = OpenStack DNS-as-a-Service - Client
-long_description = file: README.rst
-license = Apache License, Version 2.0
-author = OpenStack
-author_email = [email protected]
-url = https://docs.openstack.org/python-designateclient/latest
-python_requires = >=3.10
-classifiers =
- Environment :: OpenStack
- Intended Audience :: Information Technology
- Intended Audience :: System Administrators
- License :: OSI Approved :: Apache Software License
- Operating System :: POSIX :: Linux
- Programming Language :: Python
- Programming Language :: Python :: Implementation :: CPython
- Programming Language :: Python :: 3 :: Only
- Programming Language :: Python :: 3
- Programming Language :: Python :: 3.10
- Programming Language :: Python :: 3.11
- Programming Language :: Python :: 3.12
- Programming Language :: Python :: 3.13
- Topic :: Internet :: Name Service (DNS)
-
-[files]
-packages =
- designateclient
-
-[entry_points]
-designateclient.versions =
- 2 = designateclient.v2.client:Client
-openstack.cli.extension =
- dns = designateclient.osc.plugin
-openstack.dns.v2 =
- zone_blacklist_create =
designateclient.v2.cli.blacklists:CreateBlacklistCommand
- zone_blacklist_list =
designateclient.v2.cli.blacklists:ListBlacklistsCommand
- zone_blacklist_show =
designateclient.v2.cli.blacklists:ShowBlacklistCommand
- zone_blacklist_set =
designateclient.v2.cli.blacklists:SetBlacklistCommand
- zone_blacklist_delete =
designateclient.v2.cli.blacklists:DeleteBlacklistCommand
-
- tld_create = designateclient.v2.cli.tlds:CreateTLDCommand
- tld_list = designateclient.v2.cli.tlds:ListTLDsCommand
- tld_show = designateclient.v2.cli.tlds:ShowTLDCommand
- tld_set = designateclient.v2.cli.tlds:SetTLDCommand
- tld_delete = designateclient.v2.cli.tlds:DeleteTLDCommand
-
- zone_create = designateclient.v2.cli.zones:CreateZoneCommand
- zone_list = designateclient.v2.cli.zones:ListZonesCommand
- zone_show = designateclient.v2.cli.zones:ShowZoneCommand
- zone_set = designateclient.v2.cli.zones:SetZoneCommand
- zone_delete = designateclient.v2.cli.zones:DeleteZoneCommand
-
- zone_abandon = designateclient.v2.cli.zones:AbandonZoneCommand
- zone_axfr = designateclient.v2.cli.zones:AXFRZoneCommand
- zone_move = designateclient.v2.cli.zones:PoolMoveZoneCommand
-
- zone_export_create = designateclient.v2.cli.zones:ExportZoneCommand
- zone_export_list = designateclient.v2.cli.zones:ListZoneExportsCommand
- zone_export_show = designateclient.v2.cli.zones:ShowZoneExportCommand
- zone_export_delete =
designateclient.v2.cli.zones:DeleteZoneExportCommand
- zone_export_showfile =
designateclient.v2.cli.zones:ShowZoneExportFileCommand
-
- zone_import_create = designateclient.v2.cli.zones:ImportZoneCommand
- zone_import_list = designateclient.v2.cli.zones:ListZoneImportsCommand
- zone_import_show = designateclient.v2.cli.zones:ShowZoneImportCommand
- zone_import_delete =
designateclient.v2.cli.zones:DeleteZoneImportCommand
-
- zone_transfer_request_create =
designateclient.v2.cli.zones:CreateTransferRequestCommand
- zone_transfer_request_list =
designateclient.v2.cli.zones:ListTransferRequestsCommand
- zone_transfer_request_show =
designateclient.v2.cli.zones:ShowTransferRequestCommand
- zone_transfer_request_set =
designateclient.v2.cli.zones:SetTransferRequestCommand
- zone_transfer_request_delete =
designateclient.v2.cli.zones:DeleteTransferRequestCommand
- zone_transfer_accept_request =
designateclient.v2.cli.zones:AcceptTransferRequestCommand
- zone_transfer_accept_list =
designateclient.v2.cli.zones:ListTransferAcceptsCommand
- zone_transfer_accept_show =
designateclient.v2.cli.zones:ShowTransferAcceptCommand
-
- zone_share_create = designateclient.v2.cli.zones:ShareZoneCommand
- zone_share_list = designateclient.v2.cli.zones:ListSharedZonesCommand
- zone_share_show = designateclient.v2.cli.zones:ShowSharedZoneCommand
- zone_share_delete = designateclient.v2.cli.zones:DeleteSharedZoneCommand
-
- recordset_create =
designateclient.v2.cli.recordsets:CreateRecordSetCommand
- recordset_list = designateclient.v2.cli.recordsets:ListRecordSetsCommand
- recordset_show = designateclient.v2.cli.recordsets:ShowRecordSetCommand
- recordset_set = designateclient.v2.cli.recordsets:SetRecordSetCommand
- recordset_delete =
designateclient.v2.cli.recordsets:DeleteRecordSetCommand
-
- ptr_record_list = designateclient.v2.cli.reverse:ListFloatingIPCommand
- ptr_record_show = designateclient.v2.cli.reverse:ShowFloatingIPCommand
- ptr_record_set = designateclient.v2.cli.reverse:SetFloatingIPCommand
- ptr_record_unset = designateclient.v2.cli.reverse:UnsetFloatingIPCommand
-
- dns_service_list =
designateclient.v2.cli.service_statuses:ListServiceStatusesCommand
- dns_service_show =
designateclient.v2.cli.service_statuses:ShowServiceStatusCommand
-
- dns_quota_list = designateclient.v2.cli.quotas:ListQuotasCommand
- dns_quota_set = designateclient.v2.cli.quotas:SetQuotasCommand
- dns_quota_reset = designateclient.v2.cli.quotas:ResetQuotasCommand
-
- tsigkey_create = designateclient.v2.cli.tsigkeys:CreateTSIGKeyCommand
- tsigkey_list = designateclient.v2.cli.tsigkeys:ListTSIGKeysCommand
- tsigkey_show = designateclient.v2.cli.tsigkeys:ShowTSIGKeyCommand
- tsigkey_set = designateclient.v2.cli.tsigkeys:SetTSIGKeyCommand
- tsigkey_delete = designateclient.v2.cli.tsigkeys:DeleteTSIGKeyCommand
[egg_info]
tag_build =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_designateclient-6.4.0/tox.ini
new/python_designateclient-7.0.0/tox.ini
--- old/python_designateclient-6.4.0/tox.ini 2026-02-24 15:32:49.000000000
+0100
+++ new/python_designateclient-7.0.0/tox.ini 2026-07-01 13:49:06.000000000
+0200
@@ -100,8 +100,6 @@
D704 = checks:no_import_graduated_oslo_libraries
D705 = checks:use_timeutils_utcnow
D706 = checks:no_translate_debug_logs
- D707 = checks:check_no_basestring
- D708 = checks:check_python3_xrange
D709 = checks:check_no_log_audit
D710 = checks:check_no_log_warn
D711 = checks:check_line_continuation_no_backslash