Hello community,

here is the log from the commit of package python-designateclient for 
openSUSE:Factory checked in at 2018-01-24 15:26:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-designateclient (Old)
 and      /work/SRC/openSUSE:Factory/.python-designateclient.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-designateclient"

Wed Jan 24 15:26:44 2018 rev:10 rq:567260 version:2.8.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-designateclient/python-designateclient.changes
    2017-08-28 15:30:13.810550127 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-designateclient.new/python-designateclient.changes
       2018-01-24 15:26:48.108752579 +0100
@@ -1,0 +2,17 @@
+Mon Jan 15 10:54:09 UTC 2018 - cloud-de...@suse.de
+
+- update to version 2.8.0
+  - Improve recordset create UI
+  - Split doc requirements into their own file
+  - Update reno for stable/pike
+  - Use jobs from designate repo
+  - Remove setting of version/release from releasenotes
+  - Make remote error handling more robust
+  - Update the documentation link for doc migration
+  - Avoid tox_install.sh for constraints support
+  - Update and optimize documentation links
+  - Remove unneeded requirements file
+  - Updated from global requirements
+  - Add tsig key support to python-designateclient
+
+-------------------------------------------------------------------

Old:
----
  python-designateclient-2.7.0.tar.gz

New:
----
  python-designateclient-2.8.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-designateclient.spec ++++++
--- /var/tmp/diff_new_pack.wAi1hu/_old  2018-01-24 15:26:48.716724143 +0100
+++ /var/tmp/diff_new_pack.wAi1hu/_new  2018-01-24 15:26:48.720723956 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-designateclient
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,33 +18,33 @@
 
 %global sname python-designateclient
 Name:           python-designateclient
-Version:        2.7.0
+Version:        2.8.0
 Release:        0
 Summary:        OpenStack DNS as a Service - Client
 License:        Apache-2.0
 Group:          Development/Languages/Python
 Url:            https://launchpad.net/%{sname}
-Source0:        
https://pypi.io/packages/source/p/%{sname}/%{sname}-%{version}.tar.gz
+Source0:        
https://files.pythonhosted.org/packages/source/p/%{sname}/%{sname}-%{version}.tar.gz
 BuildRequires:  openstack-macros
 BuildRequires:  python-devel
-BuildRequires:  python-jsonschema >= 2.0.0
+BuildRequires:  python-jsonschema >= 2.6.0
 BuildRequires:  python-keystoneclient >= 3.8.0
-BuildRequires:  python-mock >= 2.0
+BuildRequires:  python-mock >= 2.0.0
 BuildRequires:  python-oslotest >= 1.10.0
 BuildRequires:  python-pbr >= 2.0.0
-BuildRequires:  python-python-subunit >= 0.0.18
-BuildRequires:  python-requests-mock >= 1.1
+BuildRequires:  python-python-subunit >= 1.0.0
+BuildRequires:  python-requests-mock >= 1.1.0
 BuildRequires:  python-setuptools >= 16.0
 BuildRequires:  python-testrepository >= 0.0.18
-Requires:       python-cliff >= 2.6.0
+Requires:       python-cliff >= 2.8.0
 Requires:       python-debtcollector >= 1.2.0
-Requires:       python-jsonschema >= 2.0.0
-Requires:       python-keystoneauth1 >= 2.21.0
+Requires:       python-jsonschema >= 2.6.0
+Requires:       python-keystoneauth1 >= 3.2.0
 Requires:       python-keystoneclient >= 3.8.0
-Requires:       python-osc-lib >= 1.5.1
-Requires:       python-oslo.utils >= 3.20.0
+Requires:       python-osc-lib >= 1.7.0
+Requires:       python-oslo.utils >= 3.31.0
 Requires:       python-requests >= 2.14.2
-Requires:       python-six >= 1.9.0
+Requires:       python-six >= 1.10.0
 Requires:       python-stevedore >= 1.20.0
 BuildArch:      noarch
 
@@ -53,9 +53,9 @@
 
 %package doc
 Summary:        Documentation for the OpenStack DNS as a Service - Client
-Group:          Documentation
+Group:          Documentation/HTML
 BuildRequires:  python-Sphinx
-BuildRequires:  python-openstackdocstheme >= 1.11.0
+BuildRequires:  python-openstackdocstheme >= 1.17.0
 
 %description doc
 Documentation for the OpenStack DNS as a Service - Client.

++++++ _service ++++++
--- /var/tmp/diff_new_pack.wAi1hu/_old  2018-01-24 15:26:48.748722646 +0100
+++ /var/tmp/diff_new_pack.wAi1hu/_new  2018-01-24 15:26:48.748722646 +0100
@@ -1,8 +1,8 @@
 <services>
   <service mode="disabled" name="renderspec">
-    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/pike/openstack/python-designateclient/python-designateclient.spec.j2</param>
+    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/master/openstack/python-designateclient/python-designateclient.spec.j2</param>
     <param name="output-name">python-designateclient.spec</param>
-    <param 
name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/pike/global-requirements.txt</param>
+    <param 
name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/master/requirements.txt</param>
     <param name="changelog-email">cloud-de...@suse.de</param>
     <param 
name="changelog-provider">gh,openstack,python-designateclient</param>
   </service>

++++++ python-designateclient-2.7.0.tar.gz -> 
python-designateclient-2.8.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-2.7.0/.zuul.yaml 
new/python-designateclient-2.8.0/.zuul.yaml
--- old/python-designateclient-2.7.0/.zuul.yaml 1970-01-01 01:00:00.000000000 
+0100
+++ new/python-designateclient-2.8.0/.zuul.yaml 2018-01-09 16:43:34.000000000 
+0100
@@ -0,0 +1,12 @@
+- project:
+    name: openstack/python-designateclient
+    templates:
+      - designate-devstack-jobs
+    check:
+      jobs:
+        - requirements-check:
+            voting: false
+    gate:
+      jobs:
+        - requirements-check:
+            voting: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-2.7.0/AUTHORS 
new/python-designateclient-2.8.0/AUTHORS
--- old/python-designateclient-2.7.0/AUTHORS    2017-07-27 17:00:23.000000000 
+0200
+++ new/python-designateclient-2.8.0/AUTHORS    2018-01-09 16:47:27.000000000 
+0100
@@ -24,11 +24,14 @@
 Eric Wehrmeister <eric.wehrmeis...@rackspace.com>
 Federico Ceratto <federico.cera...@gmail.com>
 Flavio Percoco <flape...@gmail.com>
+Graham Hayes <g...@ham.ie>
 Graham Hayes <graham.ha...@hp.com>
 Graham Hayes <graham.ha...@hpe.com>
 Graham Hayes <graham.ha...@suse.com>
+Hangdong Zhang <hdzh...@fiberhome.com>
 James Li <yuel...@gmail.com>
 Janonymous <janonymous.codevult...@gmail.com>
+Jens Harbott <j.harb...@x-ion.de>
 Jeremy Stanley <fu...@yuggoth.org>
 Joe Gordon <joe.gord...@gmail.com>
 Jordan Cazamias <jordan.cazam...@rackspace.com>
@@ -47,6 +50,7 @@
 Pradeep Kumar Singh <pradeep.si...@nectechnologies.in>
 Rahman Syed <rahman.s...@gmail.com>
 Reddy A, Penchal (pr8721) <pr8...@att.com>
+Rudolf Vriend <rudolf.vri...@sap.com>
 Rui Chen <chenrui.m...@gmail.com>
 Sascha Peilicke <sasc...@gmx.de>
 Sascha Peilicke <speili...@suse.com>
@@ -62,11 +66,13 @@
 Tony Breeds <t...@bakeyournoodle.com>
 Tony Xu <hhkt...@gmail.com>
 Venkata Mahesh Jonnalagadda <venkata.jonnalaga...@intl.att.com>
+Zuul <z...@review.openstack.org>
 abhishekkekane <abhishek.kek...@nttdata.com>
 algerwang <wang.wei...@99cloud.net>
 ashish-kumar-gupta <ashish-kumar.gu...@hpe.com>
 ghanshyam <ghanshyam.m...@nectechnologies.in>
 howardlee <lihongwe...@inspur.com>
+lingyongxu <l...@fiberhome.com>
 ricolin <ric...@inwinstack.com>
 ricolin <rico....@easystack.cn>
 rjrjr <rrick...@ebaysf.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-2.7.0/CONTRIBUTING.rst 
new/python-designateclient-2.8.0/CONTRIBUTING.rst
--- old/python-designateclient-2.7.0/CONTRIBUTING.rst   2017-07-27 
16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/CONTRIBUTING.rst   2018-01-09 
16:43:34.000000000 +0100
@@ -1,13 +1,13 @@
 If you would like to contribute to the development of OpenStack,
 you must follow the steps documented at:
 
-   http://docs.openstack.org/infra/manual/developers.html
+   https://docs.openstack.org/infra/manual/developers.html
 
 Once those steps have been completed, changes to OpenStack
 should be submitted for review via the Gerrit tool, following
 the workflow documented at:
 
-   http://docs.openstack.org/infra/manual/developers.html#development-workflow
+   https://docs.openstack.org/infra/manual/developers.html#development-workflow
 
 Pull requests submitted through GitHub will be ignored.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-2.7.0/ChangeLog 
new/python-designateclient-2.8.0/ChangeLog
--- old/python-designateclient-2.7.0/ChangeLog  2017-07-27 17:00:23.000000000 
+0200
+++ new/python-designateclient-2.8.0/ChangeLog  2018-01-09 16:47:27.000000000 
+0100
@@ -1,6 +1,28 @@
 CHANGES
 =======
 
+2.8.0
+-----
+
+* Updated from global requirements
+* Split doc requirements into their own file
+* Remove unneeded requirements file
+* Improve recordset create UI
+* Avoid tox\_install.sh for constraints support
+* Use jobs from designate repo
+* Remove setting of version/release from releasenotes
+* Updated from global requirements
+* Updated from global requirements
+* Updated from global requirements
+* Updated from global requirements
+* Updated from global requirements
+* Make remote error handling more robust
+* Updated from global requirements
+* Update the documentation link for doc migration
+* Update reno for stable/pike
+* Updated from global requirements
+* Update and optimize documentation links
+
 2.7.0
 -----
 
@@ -10,6 +32,7 @@
 * rearrange the existing docs into the new standard layout
 * use setuptools to build the docs even for testing
 * Update cli docs
+* Add tsig key support to python-designateclient
 * Updated from global requirements
 * Updated from global requirements
 * Updated from global requirements
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-2.7.0/PKG-INFO 
new/python-designateclient-2.8.0/PKG-INFO
--- old/python-designateclient-2.7.0/PKG-INFO   2017-07-27 17:00:24.000000000 
+0200
+++ new/python-designateclient-2.8.0/PKG-INFO   2018-01-09 16:47:28.000000000 
+0100
@@ -1,17 +1,18 @@
 Metadata-Version: 1.1
 Name: python-designateclient
-Version: 2.7.0
+Version: 2.8.0
 Summary: OpenStack DNS-as-a-Service - Client
-Home-page: http://docs.openstack.org/developer/python-designateclient
+Home-page: https://docs.openstack.org/python-designateclient/latest
 Author: OpenStack
 Author-email: openstack-...@lists.openstack.org
 License: Apache License, Version 2.0
+Description-Content-Type: UNKNOWN
 Description: ========================
         Team and repository tags
         ========================
         
-        .. image:: 
http://governance.openstack.org/badges/python-designateclient.svg
-            :target: http://governance.openstack.org/reference/tags/index.html
+        .. image:: 
https://governance.openstack.org/tc/badges/python-designateclient.svg
+            :target: 
https://governance.openstack.org/tc/reference/tags/index.html
         
         .. Change things from this point on
         
@@ -31,10 +32,10 @@
         (``designate``).
         
         Development takes place via the usual OpenStack processes as outlined 
in the
-        `developer guide 
<http://docs.openstack.org/infra/manual/developers.html>`_.  The master
-        repository is in `Git 
<http://git.openstack.org/cgit/openstack/python-designateclient>`_.
+        `developer guide 
<https://docs.openstack.org/infra/manual/developers.html>`_.  The master
+        repository is in `Git 
<https://git.openstack.org/cgit/openstack/python-designateclient>`_.
         
-        See release notes and more at 
`<http://docs.openstack.org/developer/python-designateclient/>`_.
+        See release notes and more at 
`<https://docs.openstack.org/python-designateclient/latest/>`_.
         
         * License: Apache License, Version 2.0
         * `PyPi`_ - package installation
@@ -44,10 +45,10 @@
         * `How to Contribute`_
         
         .. _PyPi: https://pypi.python.org/pypi/python-designateclient
-        .. _Online Documentation: 
http://docs.openstack.org/developer/python-designateclient
+        .. _Online Documentation: 
https://docs.openstack.org/python-designateclient/latest/
         .. _Bugs: https://bugs.launchpad.net/python-designateclient
         .. _Source: 
https://git.openstack.org/cgit/openstack/python-designateclient
-        .. _How to Contribute: 
http://docs.openstack.org/infra/manual/developers.html
+        .. _How to Contribute: 
https://docs.openstack.org/infra/manual/developers.html
         
         
 Platform: UNKNOWN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-2.7.0/README.rst 
new/python-designateclient-2.8.0/README.rst
--- old/python-designateclient-2.7.0/README.rst 2017-07-27 16:58:43.000000000 
+0200
+++ new/python-designateclient-2.8.0/README.rst 2018-01-09 16:43:34.000000000 
+0100
@@ -2,8 +2,8 @@
 Team and repository tags
 ========================
 
-.. image:: http://governance.openstack.org/badges/python-designateclient.svg
-    :target: http://governance.openstack.org/reference/tags/index.html
+.. image:: 
https://governance.openstack.org/tc/badges/python-designateclient.svg
+    :target: https://governance.openstack.org/tc/reference/tags/index.html
 
 .. Change things from this point on
 
@@ -23,10 +23,10 @@
 (``designate``).
 
 Development takes place via the usual OpenStack processes as outlined in the
-`developer guide <http://docs.openstack.org/infra/manual/developers.html>`_.  
The master
-repository is in `Git 
<http://git.openstack.org/cgit/openstack/python-designateclient>`_.
+`developer guide <https://docs.openstack.org/infra/manual/developers.html>`_.  
The master
+repository is in `Git 
<https://git.openstack.org/cgit/openstack/python-designateclient>`_.
 
-See release notes and more at 
`<http://docs.openstack.org/developer/python-designateclient/>`_.
+See release notes and more at 
`<https://docs.openstack.org/python-designateclient/latest/>`_.
 
 * License: Apache License, Version 2.0
 * `PyPi`_ - package installation
@@ -36,7 +36,7 @@
 * `How to Contribute`_
 
 .. _PyPi: https://pypi.python.org/pypi/python-designateclient
-.. _Online Documentation: 
http://docs.openstack.org/developer/python-designateclient
+.. _Online Documentation: 
https://docs.openstack.org/python-designateclient/latest/
 .. _Bugs: https://bugs.launchpad.net/python-designateclient
 .. _Source: https://git.openstack.org/cgit/openstack/python-designateclient
-.. _How to Contribute: http://docs.openstack.org/infra/manual/developers.html
+.. _How to Contribute: https://docs.openstack.org/infra/manual/developers.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/designateclient/exceptions.py 
new/python-designateclient-2.8.0/designateclient/exceptions.py
--- old/python-designateclient-2.7.0/designateclient/exceptions.py      
2017-07-27 16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/designateclient/exceptions.py      
2018-01-09 16:43:34.000000000 +0100
@@ -36,7 +36,7 @@
 
 class RemoteError(Base):
     def __init__(self, message=None, code=None, type=None, errors=None,
-                 request_id=None):
+                 request_id=None, **ignore):
         err_message = self._get_error_message(message, type, errors)
         self.message = err_message
         self.code = code
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/designateclient/functionaltests/client.py 
new/python-designateclient-2.8.0/designateclient/functionaltests/client.py
--- old/python-designateclient-2.7.0/designateclient/functionaltests/client.py  
2017-07-27 16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/designateclient/functionaltests/client.py  
2018-01-09 16:43:34.000000000 +0100
@@ -273,8 +273,44 @@
         return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
 
 
-class BlacklistCommands(object):
+class TSIGKeyCommands(object):
+    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,
+                               *args, **kwargs)
+
+    def tsigkey_delete(self, id, *args, **kwargs):
+        return self.parsed_cmd('tsigkey delete {0}'.format(id), *args,
+                               **kwargs)
+
+    def tsigkey_create(self, name, algorithm, secret, scope, resource_id,
+                       *args, **kwargs):
+        options_str = build_option_string({
+            '--name': name,
+            '--algorithm': algorithm,
+            '--secret': secret,
+            '--scope': scope,
+            '--resource-id': resource_id,
+        })
+        cmd = 'tsigkey create {0}'.format(options_str)
+        return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
 
+    def tsigkey_set(self, id, name=None, algorithm=None, secret=None,
+                    scope=None,
+                    *args, **kwargs):
+        options_str = build_option_string({
+            '--name': name,
+            '--algorithm': algorithm,
+            '--secret': secret,
+            '--scope': scope,
+        })
+        cmd = 'tsigkey set {0} {1}'.format(id, options_str)
+        return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
+
+
+class BlacklistCommands(object):
     def zone_blacklist_list(self, *args, **kwargs):
         cmd = 'zone blacklist list'
         return self.parsed_cmd(cmd, ListModel, *args, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/designateclient/functionaltests/datagen.py 
new/python-designateclient-2.8.0/designateclient/functionaltests/datagen.py
--- old/python-designateclient-2.7.0/designateclient/functionaltests/datagen.py 
2017-07-27 16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/designateclient/functionaltests/datagen.py 
2018-01-09 16:43:34.000000000 +0100
@@ -25,6 +25,14 @@
     return "{0}{1}".format(name, random_digits())
 
 
+def random_tsigkey_name(name='testtsig'):
+    return "{0}{1}".format(name, random_digits())
+
+
+def random_tsigkey_secret(name='test-secret'):
+    return "{0}-{1}".format(name, random_digits(254 - len(name)))
+
+
 def random_zone_name(name='testdomain', tld='com'):
     return "{0}{1}.{2}.".format(name, random_digits(), tld)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/designateclient/functionaltests/v2/fixtures.py 
new/python-designateclient-2.8.0/designateclient/functionaltests/v2/fixtures.py
--- 
old/python-designateclient-2.7.0/designateclient/functionaltests/v2/fixtures.py 
    2017-07-27 16:58:43.000000000 +0200
+++ 
new/python-designateclient-2.8.0/designateclient/functionaltests/v2/fixtures.py 
    2018-01-09 16:43:34.000000000 +0100
@@ -193,6 +193,25 @@
             pass
 
 
+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)
+
+    def _setUp(self):
+        super(TSIGKeyFixture, self)._setUp()
+        self.tsigkey = self.client.tsigkey_create(*self.args, **self.kwargs)
+        self.addCleanup(self.cleanup_tsigkey(self.client, self.tsigkey.id))
+
+    @classmethod
+    def cleanup_tsigkey(cls, client, tsigkey_id):
+        try:
+            client.tsigkey_delete(tsigkey_id)
+        except CommandFailed:
+            pass
+
+
 class BlacklistFixture(BaseFixture):
     """See DesignateCLI.zone_blacklist_create for __init__ args"""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/designateclient/functionaltests/v2/test_tsigkeys.py
 
new/python-designateclient-2.8.0/designateclient/functionaltests/v2/test_tsigkeys.py
--- 
old/python-designateclient-2.7.0/designateclient/functionaltests/v2/test_tsigkeys.py
        1970-01-01 01:00:00.000000000 +0100
+++ 
new/python-designateclient-2.8.0/designateclient/functionaltests/v2/test_tsigkeys.py
        2018-01-09 16:43:34.000000000 +0100
@@ -0,0 +1,90 @@
+"""
+Copyright 2017 SAP SE
+
+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 tempest.lib.exceptions import CommandFailed
+
+from designateclient.functionaltests.base import BaseDesignateTest
+from designateclient.functionaltests.datagen import random_tsigkey_name
+from designateclient.functionaltests.datagen import random_tsigkey_secret
+from designateclient.functionaltests.datagen import random_zone_name
+from designateclient.functionaltests.v2.fixtures import TSIGKeyFixture
+from designateclient.functionaltests.v2.fixtures import ZoneFixture
+
+
+class TestTSIGKey(BaseDesignateTest):
+    def setUp(self):
+        super(TestTSIGKey, self).setUp()
+        self.ensure_tsigkey_exists('com')
+        self.zone = self.useFixture(ZoneFixture(
+            name=random_zone_name(),
+            email='t...@example.com',
+        )).zone
+        tsig_name = random_tsigkey_name()
+        tsig_algorithm = "hmac-sha256"
+        tsig_secret = random_tsigkey_secret()
+        tsig_scope = 'ZONE'
+        self.tsig = self.useFixture(TSIGKeyFixture(
+            name=tsig_name,
+            algorithm=tsig_algorithm,
+            secret=tsig_secret,
+            scope=tsig_scope,
+            resource_id=self.zone.id
+        )).tsig
+
+        self.assertEqual(self.tsig.name, tsig_name)
+        self.assertEqual(self.tsig.algorithm, tsig_algorithm)
+        self.assertEqual(self.tsig.secret, tsig_secret)
+        self.assertEqual(self.tsig.scope, tsig_scope)
+        self.assertEqual(self.tsig.resource_id, self.zone.id)
+
+    def test_tsigkey_list(self):
+        tsigkeys = self.clients.as_user('admin').tsigkey_list()
+        self.assertGreater(len(tsigkeys), 0)
+
+    def test_tsigkey_create_and_show(self):
+        tsigkey = self.clients.as_user('admin').tsigkey_show(self.tsigkey.id)
+        self.assertEqual(tsigkey.name, self.tsigkey.name)
+        self.assertEqual(tsigkey.created_at, self.tsigkey.created_at)
+        self.assertEqual(tsigkey.id, self.tsigkey.id)
+        self.assertEqual(self.tsig.algorithm, self.tsig_algorithm)
+        self.assertEqual(self.tsig.secret, self.tsig_secret)
+        self.assertEqual(self.tsig.scope, self.tsig_scope)
+        self.assertEqual(self.tsig.resource_id, self.zone.id)
+        self.assertEqual(tsigkey.updated_at, self.tsigkey.updated_at)
+
+    def test_tsigkey_delete(self):
+        client = self.clients.as_user('admin')
+        client.tsigkey_delete(self.tsigkey.id)
+        self.assertRaises(CommandFailed, client.tsigkey_show, self.tsigkey.id)
+
+    def test_tsigkey_set(self):
+        client = self.clients.as_user('admin')
+        updated_name = random_tsigkey_name('updated')
+        tsigkey = client.tsigkey_set(self.tsigkey.id, name=updated_name,
+                                     secret='An updated tsigsecret')
+        self.assertEqual(tsigkey.secret, 'An updated tsigsecret')
+        self.assertEqual(tsigkey.name, updated_name)
+
+
+class TestTSIGKeyNegative(BaseDesignateTest):
+    def test_tsigkey_invalid_commmand(self):
+        client = self.clients.as_user('admin')
+        self.assertRaises(CommandFailed, client.openstack,
+                          'tsigkey notacommand')
+
+    def test_tsigkey_create_invalid_flag(self):
+        client = self.clients.as_user('admin')
+        self.assertRaises(CommandFailed, client.openstack,
+                          'tsigkey create --notanoption "junk"')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/designateclient/tests/test_exceptions.py 
new/python-designateclient-2.8.0/designateclient/tests/test_exceptions.py
--- old/python-designateclient-2.7.0/designateclient/tests/test_exceptions.py   
2017-07-27 16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/designateclient/tests/test_exceptions.py   
2018-01-09 16:43:34.000000000 +0100
@@ -54,3 +54,10 @@
         self.response_dict['type'] = expected_msg
         remote_err = exceptions.RemoteError(**self.response_dict)
         self.assertEqual(expected_msg, remote_err.message)
+
+    def test_get_error_message_with_unknown_response(self):
+        expected_msg = 'invalid_object'
+        self.response_dict['message'] = expected_msg
+        self.response_dict['unknown'] = 'fake'
+        remote_err = exceptions.RemoteError(**self.response_dict)
+        self.assertEqual(expected_msg, remote_err.message)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/designateclient/tests/v2/test_tsigkeys.py 
new/python-designateclient-2.8.0/designateclient/tests/v2/test_tsigkeys.py
--- old/python-designateclient-2.7.0/designateclient/tests/v2/test_tsigkeys.py  
1970-01-01 01:00:00.000000000 +0100
+++ new/python-designateclient-2.8.0/designateclient/tests/v2/test_tsigkeys.py  
2018-01-09 16:43:34.000000000 +0100
@@ -0,0 +1,96 @@
+# Copyright 2017 SAP SE
+#
+# Author: Rudolf Vriend <rudolf.vri...@sap.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+import uuid
+
+from designateclient.tests import v2
+
+
+class TestTSIGKeys(v2.APIV2TestCase, v2.CrudMixin):
+    RESOURCE = 'tsigkeys'
+
+    def new_ref(self, **kwargs):
+        ref = super(TestTSIGKeys, self).new_ref(**kwargs)
+        ref.setdefault("name", uuid.uuid4().hex)
+        ref.setdefault("algorithm", "hmac-sha256")
+        ref.setdefault("secret", uuid.uuid4().hex)
+        ref.setdefault("scope", "POOL")
+        ref.setdefault("resource_id", uuid.uuid4().hex)
+        return ref
+
+    def test_create(self):
+        ref = self.new_ref()
+
+        self.stub_url("POST", parts=[self.RESOURCE], json=ref)
+
+        values = ref.copy()
+        del values["id"]
+
+        self.client.tsigkeys.create(**values)
+        self.assertRequestBodyIs(json=values)
+
+    def test_get(self):
+        ref = self.new_ref()
+
+        self.stub_entity("GET", entity=ref, id=ref["id"])
+
+        response = self.client.tsigkeys.get(ref["id"])
+        self.assertEqual(ref, response)
+
+    def test_get_by_name(self):
+        ref = self.new_ref(name="www")
+
+        self.stub_entity("GET", entity=ref, id=ref["id"])
+        self.stub_url("GET", parts=[self.RESOURCE], json={"tsigkeys": [ref]})
+
+        response = self.client.tsigkeys.get(ref['name'])
+
+        self.assertEqual("GET", self.requests.request_history[0].method)
+        self.assertEqual(
+            "http://127.0.0.1:9001/v2/tsigkeys?name=www";,
+            self.requests.request_history[0].url)
+
+        self.assertEqual(ref, response)
+
+    def test_list(self):
+        items = [
+            self.new_ref(),
+            self.new_ref()
+        ]
+
+        self.stub_url("GET", parts=[self.RESOURCE], json={"tsigkeys": items})
+
+        listed = self.client.tsigkeys.list()
+        self.assertList(items, listed)
+        self.assertQueryStringIs("")
+
+    def test_update(self):
+        ref = self.new_ref()
+
+        self.stub_entity("PATCH", entity=ref, id=ref["id"])
+
+        values = ref.copy()
+        del values["id"]
+
+        self.client.tsigkeys.update(ref["id"], values)
+        self.assertRequestBodyIs(json=values)
+
+    def test_delete(self):
+        ref = self.new_ref()
+
+        self.stub_entity("DELETE", id=ref["id"])
+
+        self.client.tsigkeys.delete(ref["id"])
+        self.assertRequestBodyIs(None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/designateclient/v2/cli/recordsets.py 
new/python-designateclient-2.8.0/designateclient/v2/cli/recordsets.py
--- old/python-designateclient-2.7.0/designateclient/v2/cli/recordsets.py       
2017-07-27 16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/designateclient/v2/cli/recordsets.py       
2018-01-09 16:43:34.000000000 +0100
@@ -14,6 +14,7 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
+import argparse
 import logging
 
 from osc_lib.command import command
@@ -140,13 +141,22 @@
 class CreateRecordSetCommand(command.ShowOne):
     """Create new recordset"""
 
+    log = logging.getLogger('deprecated')
+
     def get_parser(self, prog_name):
         parser = super(CreateRecordSetCommand, self).get_parser(prog_name)
 
         parser.add_argument('zone_id', help="Zone ID")
         parser.add_argument('name', help="RecordSet Name")
-        parser.add_argument('--records', help="RecordSet Records",
-                            nargs='+', required=True)
+        req_group = parser.add_mutually_exclusive_group(required=True)
+        req_group.add_argument(
+            '--records',
+            help=argparse.SUPPRESS,
+            nargs='+')
+        req_group.add_argument(
+            '--record',
+            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")
@@ -159,11 +169,15 @@
         client = self.app.client_manager.dns
         common.set_all_common_headers(client, parsed_args)
 
+        all_records = parsed_args.record or parsed_args.records
+        if parsed_args.records:
+            self.log.warning(
+                "Option --records is deprecated, use --record instead.")
         data = client.recordsets.create(
             parsed_args.zone_id,
             parsed_args.name,
             parsed_args.type,
-            parsed_args.records,
+            all_records,
             description=parsed_args.description,
             ttl=parsed_args.ttl)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/designateclient/v2/cli/tsigkeys.py 
new/python-designateclient-2.8.0/designateclient/v2/cli/tsigkeys.py
--- old/python-designateclient-2.7.0/designateclient/v2/cli/tsigkeys.py 
1970-01-01 01:00:00.000000000 +0100
+++ new/python-designateclient-2.8.0/designateclient/v2/cli/tsigkeys.py 
2018-01-09 16:43:34.000000000 +0100
@@ -0,0 +1,170 @@
+# Copyright 2017 SAP SE
+#
+# Author: Rudolf Vriend <rudolf.vri...@sap.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import logging
+
+from osc_lib.command import command
+import six
+
+from designateclient import utils
+from designateclient.v2.cli import common
+from designateclient.v2.utils import get_all
+
+LOG = logging.getLogger(__name__)
+
+
+def _format_tsigkey(tsigkey):
+    # Remove unneeded fields for display output formatting
+    tsigkey.pop('links', None)
+
+
+class ListTSIGKeysCommand(command.Lister):
+    """List tsigkeys"""
+
+    columns = ['id', 'name', 'algorithm', 'secret', 'scope', 'resource_id']
+
+    def get_parser(self, prog_name):
+        parser = super(ListTSIGKeysCommand, self).get_parser(prog_name)
+
+        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)
+
+        common.add_all_common_options(parser)
+
+        return parser
+
+    def take_action(self, parsed_args):
+        client = self.app.client_manager.dns
+        common.set_all_common_headers(client, parsed_args)
+
+        criterion = {}
+        if parsed_args.name is not None:
+            criterion["name"] = parsed_args.name
+        if parsed_args.algorithm is not None:
+            criterion["algorithm"] = parsed_args.algorithm
+        if parsed_args.scope is not None:
+            criterion["scope"] = parsed_args.scope
+
+        data = get_all(client.tsigkeys.list, criterion)
+
+        cols = self.columns
+        return cols, (utils.get_item_properties(s, cols) for s in data)
+
+
+class ShowTSIGKeyCommand(command.ShowOne):
+    """Show tsigkey details"""
+
+    def get_parser(self, prog_name):
+        parser = super(ShowTSIGKeyCommand, self).get_parser(prog_name)
+
+        parser.add_argument('id', help="TSIGKey ID")
+
+        common.add_all_common_options(parser)
+
+        return parser
+
+    def take_action(self, parsed_args):
+        client = self.app.client_manager.dns
+        common.set_all_common_headers(client, parsed_args)
+        data = client.tsigkeys.get(parsed_args.id)
+        _format_tsigkey(data)
+        return six.moves.zip(*sorted(six.iteritems(data)))
+
+
+class CreateTSIGKeyCommand(command.ShowOne):
+    """Create new tsigkey"""
+
+    def get_parser(self, prog_name):
+        parser = super(CreateTSIGKeyCommand, self).get_parser(prog_name)
+
+        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",
+                            required=True)
+
+        common.add_all_common_options(parser)
+
+        return parser
+
+    def take_action(self, parsed_args):
+        client = self.app.client_manager.dns
+        common.set_all_common_headers(client, parsed_args)
+        data = client.tsigkeys.create(parsed_args.name, parsed_args.algorithm,
+                                      parsed_args.secret, parsed_args.scope,
+                                      parsed_args.resource_id)
+        _format_tsigkey(data)
+        return six.moves.zip(*sorted(six.iteritems(data)))
+
+
+class SetTSIGKeyCommand(command.ShowOne):
+    """Set tsigkey properties"""
+
+    def get_parser(self, prog_name):
+        parser = super(SetTSIGKeyCommand, self).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")
+
+        common.add_all_common_options(parser)
+
+        return parser
+
+    def take_action(self, parsed_args):
+        data = {}
+
+        if parsed_args.name:
+            data['name'] = parsed_args.name
+        if parsed_args.algorithm:
+            data['algorithm'] = parsed_args.algorithm
+        if parsed_args.secret:
+            data['secret'] = parsed_args.secret
+        if parsed_args.scope:
+            data['scope'] = parsed_args.scope
+
+        client = self.app.client_manager.dns
+        common.set_all_common_headers(client, parsed_args)
+
+        data = client.tsigkeys.update(parsed_args.id, data)
+        _format_tsigkey(data)
+        return six.moves.zip(*sorted(six.iteritems(data)))
+
+
+class DeleteTSIGKeyCommand(command.Command):
+    """Delete tsigkey"""
+
+    def get_parser(self, prog_name):
+        parser = super(DeleteTSIGKeyCommand, self).get_parser(prog_name)
+
+        parser.add_argument('id', help="TSIGKey ID")
+
+        common.add_all_common_options(parser)
+
+        return parser
+
+    def take_action(self, parsed_args):
+        client = self.app.client_manager.dns
+        common.set_all_common_headers(client, parsed_args)
+        client.tsigkeys.delete(parsed_args.id)
+
+        LOG.info('TSIGKey %s was deleted', parsed_args.id)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/designateclient/v2/client.py 
new/python-designateclient-2.8.0/designateclient/v2/client.py
--- old/python-designateclient-2.7.0/designateclient/v2/client.py       
2017-07-27 16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/designateclient/v2/client.py       
2018-01-09 16:43:34.000000000 +0100
@@ -25,6 +25,7 @@
 from designateclient.v2.reverse import FloatingIPController
 from designateclient.v2.service_statuses import ServiceStatusesController
 from designateclient.v2.tlds import TLDController
+from designateclient.v2.tsigkeys import TSIGKeysController
 from designateclient.v2.zones import ZoneController
 from designateclient.v2.zones import ZoneExportsController
 from designateclient.v2.zones import ZoneImportsController
@@ -138,3 +139,4 @@
         self.zone_imports = ZoneImportsController(self)
         self.pools = PoolController(self)
         self.quotas = QuotasController(self)
+        self.tsigkeys = TSIGKeysController(self)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/designateclient/v2/tsigkeys.py 
new/python-designateclient-2.8.0/designateclient/v2/tsigkeys.py
--- old/python-designateclient-2.7.0/designateclient/v2/tsigkeys.py     
1970-01-01 01:00:00.000000000 +0100
+++ new/python-designateclient-2.8.0/designateclient/v2/tsigkeys.py     
2018-01-09 16:43:34.000000000 +0100
@@ -0,0 +1,50 @@
+# Copyright 2017 SAP SE
+#
+# Author: Rudolf Vriend <rudolf.vri...@sap.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+from designateclient.v2.base import V2Controller
+from designateclient.v2 import utils as v2_utils
+
+
+class TSIGKeysController(V2Controller):
+    def create(self, name, algorithm, secret, scope, resource_id):
+        data = {
+            'name': name,
+            'algorithm': algorithm,
+            'secret': secret,
+            'scope': scope,
+            'resource_id': resource_id
+        }
+
+        return self._post('/tsigkeys', data=data)
+
+    def list(self, criterion=None, marker=None, limit=None):
+        url = self.build_url('/tsigkeys', criterion, marker, limit)
+
+        return self._get(url, response_key='tsigkeys')
+
+    def get(self, tsigkey):
+        tsigkey = v2_utils.resolve_by_name(self.list, tsigkey)
+
+        return self._get('/tsigkeys/%s' % tsigkey)
+
+    def update(self, tsigkey, values):
+        tsigkey = v2_utils.resolve_by_name(self.list, tsigkey)
+
+        return self._patch('/tsigkeys/%s' % tsigkey, data=values)
+
+    def delete(self, tsigkey):
+        tsigkey = v2_utils.resolve_by_name(self.list, tsigkey)
+
+        return self._delete('/tsigkeys/%s' % tsigkey)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-2.7.0/doc/requirements.txt 
new/python-designateclient-2.8.0/doc/requirements.txt
--- old/python-designateclient-2.7.0/doc/requirements.txt       2017-07-27 
16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/doc/requirements.txt       2018-01-09 
16:43:34.000000000 +0100
@@ -1,2 +1,5 @@
--r ../requirements.txt
--r ../test-requirements.txt
+# The order of packages is significant, because pip processes them in the order
+# of appearance. Changing the order has an impact on the overall integration
+# process, which may cause wedges in the gate later.
+sphinx>=1.6.2 # BSD
+openstackdocstheme>=1.17.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/doc/source/contributor/contributing.rst 
new/python-designateclient-2.8.0/doc/source/contributor/contributing.rst
--- old/python-designateclient-2.7.0/doc/source/contributor/contributing.rst    
2017-07-27 16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/doc/source/contributor/contributing.rst    
2018-01-09 16:43:34.000000000 +0100
@@ -7,7 +7,7 @@
 
 .. _on GitHub: https://github.com/openstack/python-designateclient
 .. _Launchpad: https://launchpad.net/python-designateclient
-.. _Gerrit: 
http://docs.openstack.org/infra/manual/developers.html#development-workflow
+.. _Gerrit: 
https://docs.openstack.org/infra/manual/developers.html#development-workflow
 
 Here's a quick summary:
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/doc/source/install/index.rst 
new/python-designateclient-2.8.0/doc/source/install/index.rst
--- old/python-designateclient-2.7.0/doc/source/install/index.rst       
2017-07-27 16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/doc/source/install/index.rst       
2018-01-09 16:43:34.000000000 +0100
@@ -41,5 +41,5 @@
     pip install -r requirements.txt -r test-requirements.txt
     python setup.py develop
 
-.. _Development Mode: 
http://pythonhosted.org/setuptools/setuptools.html#development-mode
+.. _Development Mode: 
https://setuptools.readthedocs.io/en/latest/setuptools.html#development-mode
 .. _PyPI: https://pypi.python.org/pypi/python-designateclient/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/doc/source/user/bindings.rst 
new/python-designateclient-2.8.0/doc/source/user/bindings.rst
--- old/python-designateclient-2.7.0/doc/source/user/bindings.rst       
2017-07-27 16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/doc/source/user/bindings.rst       
2018-01-09 16:43:34.000000000 +0100
@@ -88,7 +88,7 @@
 Below is a sample of standard authentication with keystone using keystoneauth
 Sessions. For more information on keystoneauth API, see `Using Sessions`_.
 
-.. _Using Sessions: 
http://docs.openstack.org/developer/keystoneauth/using-sessions.html
+.. _Using Sessions: 
https://docs.openstack.org/keystoneauth/latest/using-sessions.html
 
 .. code-block:: python
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/doc/source/user/shell-v2.rst 
new/python-designateclient-2.8.0/doc/source/user/shell-v2.rst
--- old/python-designateclient-2.7.0/doc/source/user/shell-v2.rst       
2017-07-27 16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/doc/source/user/shell-v2.rst       
2018-01-09 16:43:34.000000000 +0100
@@ -572,4 +572,4 @@
 
    $ openstack tld delete a7bba387-712b-4b42-9368-4508642c6113
 
-.. _OpenStack Client configuration documentation: 
http://docs.openstack.org/developer/python-openstackclient/configuration.html
+.. _OpenStack Client configuration documentation: 
https://docs.openstack.org/python-openstackclient/latest/configuration/index.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/python_designateclient.egg-info/PKG-INFO 
new/python-designateclient-2.8.0/python_designateclient.egg-info/PKG-INFO
--- old/python-designateclient-2.7.0/python_designateclient.egg-info/PKG-INFO   
2017-07-27 17:00:23.000000000 +0200
+++ new/python-designateclient-2.8.0/python_designateclient.egg-info/PKG-INFO   
2018-01-09 16:47:27.000000000 +0100
@@ -1,17 +1,18 @@
 Metadata-Version: 1.1
 Name: python-designateclient
-Version: 2.7.0
+Version: 2.8.0
 Summary: OpenStack DNS-as-a-Service - Client
-Home-page: http://docs.openstack.org/developer/python-designateclient
+Home-page: https://docs.openstack.org/python-designateclient/latest
 Author: OpenStack
 Author-email: openstack-...@lists.openstack.org
 License: Apache License, Version 2.0
+Description-Content-Type: UNKNOWN
 Description: ========================
         Team and repository tags
         ========================
         
-        .. image:: 
http://governance.openstack.org/badges/python-designateclient.svg
-            :target: http://governance.openstack.org/reference/tags/index.html
+        .. image:: 
https://governance.openstack.org/tc/badges/python-designateclient.svg
+            :target: 
https://governance.openstack.org/tc/reference/tags/index.html
         
         .. Change things from this point on
         
@@ -31,10 +32,10 @@
         (``designate``).
         
         Development takes place via the usual OpenStack processes as outlined 
in the
-        `developer guide 
<http://docs.openstack.org/infra/manual/developers.html>`_.  The master
-        repository is in `Git 
<http://git.openstack.org/cgit/openstack/python-designateclient>`_.
+        `developer guide 
<https://docs.openstack.org/infra/manual/developers.html>`_.  The master
+        repository is in `Git 
<https://git.openstack.org/cgit/openstack/python-designateclient>`_.
         
-        See release notes and more at 
`<http://docs.openstack.org/developer/python-designateclient/>`_.
+        See release notes and more at 
`<https://docs.openstack.org/python-designateclient/latest/>`_.
         
         * License: Apache License, Version 2.0
         * `PyPi`_ - package installation
@@ -44,10 +45,10 @@
         * `How to Contribute`_
         
         .. _PyPi: https://pypi.python.org/pypi/python-designateclient
-        .. _Online Documentation: 
http://docs.openstack.org/developer/python-designateclient
+        .. _Online Documentation: 
https://docs.openstack.org/python-designateclient/latest/
         .. _Bugs: https://bugs.launchpad.net/python-designateclient
         .. _Source: 
https://git.openstack.org/cgit/openstack/python-designateclient
-        .. _How to Contribute: 
http://docs.openstack.org/infra/manual/developers.html
+        .. _How to Contribute: 
https://docs.openstack.org/infra/manual/developers.html
         
         
 Platform: UNKNOWN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/python_designateclient.egg-info/SOURCES.txt 
new/python-designateclient-2.8.0/python_designateclient.egg-info/SOURCES.txt
--- 
old/python-designateclient-2.7.0/python_designateclient.egg-info/SOURCES.txt    
    2017-07-27 17:00:24.000000000 +0200
+++ 
new/python-designateclient-2.8.0/python_designateclient.egg-info/SOURCES.txt    
    2018-01-09 16:47:28.000000000 +0100
@@ -1,4 +1,5 @@
 .testr.conf
+.zuul.yaml
 AUTHORS
 CONTRIBUTING.rst
 ChangeLog
@@ -39,6 +40,7 @@
 designateclient/functionaltests/v2/test_blacklist.py
 designateclient/functionaltests/v2/test_recordsets.py
 designateclient/functionaltests/v2/test_tlds.py
+designateclient/functionaltests/v2/test_tsigkeys.py
 designateclient/functionaltests/v2/test_zone.py
 designateclient/functionaltests/v2/test_zone_export.py
 designateclient/functionaltests/v2/test_zone_import.py
@@ -73,6 +75,7 @@
 designateclient/tests/v2/test_service_statuses.py
 designateclient/tests/v2/test_timeout.py
 designateclient/tests/v2/test_tlds.py
+designateclient/tests/v2/test_tsigkeys.py
 designateclient/tests/v2/test_zones.py
 designateclient/v1/__init__.py
 designateclient/v1/diagnostics.py
@@ -95,6 +98,7 @@
 designateclient/v2/reverse.py
 designateclient/v2/service_statuses.py
 designateclient/v2/tlds.py
+designateclient/v2/tsigkeys.py
 designateclient/v2/utils.py
 designateclient/v2/zones.py
 designateclient/v2/cli/__init__.py
@@ -105,6 +109,7 @@
 designateclient/v2/cli/reverse.py
 designateclient/v2/cli/service_statuses.py
 designateclient/v2/cli/tlds.py
+designateclient/v2/cli/tsigkeys.py
 designateclient/v2/cli/zones.py
 doc/requirements.txt
 doc/examples/recordset_create.py
@@ -140,8 +145,8 @@
 releasenotes/source/index.rst
 releasenotes/source/newton.rst
 releasenotes/source/ocata.rst
+releasenotes/source/pike.rst
 releasenotes/source/unreleased.rst
 releasenotes/source/_static/.placeholder
 releasenotes/source/_templates/.placeholder
-tools/pretty_tox.sh
-tools/tox_install.sh
\ No newline at end of file
+tools/pretty_tox.sh
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/python_designateclient.egg-info/entry_points.txt
 
new/python-designateclient-2.8.0/python_designateclient.egg-info/entry_points.txt
--- 
old/python-designateclient-2.7.0/python_designateclient.egg-info/entry_points.txt
   2017-07-27 17:00:23.000000000 +0200
+++ 
new/python-designateclient-2.8.0/python_designateclient.egg-info/entry_points.txt
   2018-01-09 16:47:27.000000000 +0100
@@ -67,6 +67,11 @@
 tld_list = designateclient.v2.cli.tlds:ListTLDsCommand
 tld_set = designateclient.v2.cli.tlds:SetTLDCommand
 tld_show = designateclient.v2.cli.tlds:ShowTLDCommand
+tsigkey_create = designateclient.v2.cli.tsigkeys:CreateTSIGKeyCommand
+tsigkey_delete = designateclient.v2.cli.tsigkeys:DeleteTSIGKeyCommand
+tsigkey_list = designateclient.v2.cli.tsigkeys:ListTSIGKeysCommand
+tsigkey_set = designateclient.v2.cli.tsigkeys:SetTSIGKeyCommand
+tsigkey_show = designateclient.v2.cli.tsigkeys:ShowTSIGKeyCommand
 zone_abandon = designateclient.v2.cli.zones:AbandonZoneCommand
 zone_axfr = designateclient.v2.cli.zones:AXFRZoneCommand
 zone_blacklist_create = 
designateclient.v2.cli.blacklists:CreateBlacklistCommand
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/python_designateclient.egg-info/pbr.json 
new/python-designateclient-2.8.0/python_designateclient.egg-info/pbr.json
--- old/python-designateclient-2.7.0/python_designateclient.egg-info/pbr.json   
2017-07-27 17:00:23.000000000 +0200
+++ new/python-designateclient-2.8.0/python_designateclient.egg-info/pbr.json   
2018-01-09 16:47:27.000000000 +0100
@@ -1 +1 @@
-{"git_version": "ea41cef", "is_release": true}
\ No newline at end of file
+{"git_version": "1a3632c", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/python_designateclient.egg-info/requires.txt 
new/python-designateclient-2.8.0/python_designateclient.egg-info/requires.txt
--- 
old/python-designateclient-2.7.0/python_designateclient.egg-info/requires.txt   
    2017-07-27 17:00:23.000000000 +0200
+++ 
new/python-designateclient-2.8.0/python_designateclient.egg-info/requires.txt   
    2018-01-09 16:47:27.000000000 +0100
@@ -1,10 +1,10 @@
-cliff>=2.6.0
-jsonschema!=2.5.0,<3.0.0,>=2.0.0
-osc-lib>=1.5.1
-oslo.utils>=3.20.0
+cliff!=2.9.0,>=2.8.0
+jsonschema<3.0.0,>=2.6.0
+osc-lib>=1.7.0
+oslo.utils>=3.33.0
 pbr!=2.1.0,>=2.0.0
-keystoneauth1>=2.21.0
+keystoneauth1>=3.3.0
 requests>=2.14.2
-six>=1.9.0
+six>=1.10.0
 stevedore>=1.20.0
 debtcollector>=1.2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/releasenotes/source/conf.py 
new/python-designateclient-2.8.0/releasenotes/source/conf.py
--- old/python-designateclient-2.7.0/releasenotes/source/conf.py        
2017-07-27 16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/releasenotes/source/conf.py        
2018-01-09 16:43:34.000000000 +0100
@@ -64,16 +64,11 @@
 project = u'Designate Client Release Notes'
 copyright = u'2015, Designate Developers'
 
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-from designateclient.version import version_info as designateclient_version
+# Release notes are version independent.
 # The full version, including alpha/beta/rc tags.
-release = designateclient_version.version_string_with_vcs()
+release = ''
 # The short X.Y version.
-version = designateclient_version.canonical_version_string()
+version = ''
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/releasenotes/source/index.rst 
new/python-designateclient-2.8.0/releasenotes/source/index.rst
--- old/python-designateclient-2.7.0/releasenotes/source/index.rst      
2017-07-27 16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/releasenotes/source/index.rst      
2018-01-09 16:43:34.000000000 +0100
@@ -6,5 +6,6 @@
    :maxdepth: 1
 
    unreleased
+   pike
    ocata
    newton
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-2.7.0/releasenotes/source/pike.rst 
new/python-designateclient-2.8.0/releasenotes/source/pike.rst
--- old/python-designateclient-2.7.0/releasenotes/source/pike.rst       
1970-01-01 01:00:00.000000000 +0100
+++ new/python-designateclient-2.8.0/releasenotes/source/pike.rst       
2018-01-09 16:43:34.000000000 +0100
@@ -0,0 +1,6 @@
+===================================
+ Pike Series Release Notes
+===================================
+
+.. release-notes::
+   :branch: stable/pike
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-2.7.0/requirements.txt 
new/python-designateclient-2.8.0/requirements.txt
--- old/python-designateclient-2.7.0/requirements.txt   2017-07-27 
16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/requirements.txt   2018-01-09 
16:43:34.000000000 +0100
@@ -1,13 +1,13 @@
 # The order of packages is significant, because pip processes them in the order
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
-cliff>=2.6.0 # Apache-2.0
-jsonschema!=2.5.0,<3.0.0,>=2.0.0 # MIT
-osc-lib>=1.5.1 # Apache-2.0
-oslo.utils>=3.20.0 # Apache-2.0
+cliff!=2.9.0,>=2.8.0 # Apache-2.0
+jsonschema<3.0.0,>=2.6.0 # MIT
+osc-lib>=1.7.0 # Apache-2.0
+oslo.utils>=3.33.0 # Apache-2.0
 pbr!=2.1.0,>=2.0.0 # Apache-2.0
-keystoneauth1>=2.21.0 # Apache-2.0
+keystoneauth1>=3.3.0 # Apache-2.0
 requests>=2.14.2 # Apache-2.0
-six>=1.9.0 # MIT
+six>=1.10.0 # MIT
 stevedore>=1.20.0 # Apache-2.0
 debtcollector>=1.2.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-2.7.0/setup.cfg 
new/python-designateclient-2.8.0/setup.cfg
--- old/python-designateclient-2.7.0/setup.cfg  2017-07-27 17:00:24.000000000 
+0200
+++ new/python-designateclient-2.8.0/setup.cfg  2018-01-09 16:47:28.000000000 
+0100
@@ -6,7 +6,7 @@
 license = Apache License, Version 2.0
 author = OpenStack
 author-email = openstack-...@lists.openstack.org
-home-page = http://docs.openstack.org/developer/python-designateclient
+home-page = https://docs.openstack.org/python-designateclient/latest
 classifier = 
        Environment :: OpenStack
        Intended Audience :: Information Technology
@@ -125,6 +125,11 @@
        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
 
 [build_sphinx]
 builders = html,man
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-2.7.0/test-requirements.txt 
new/python-designateclient-2.8.0/test-requirements.txt
--- old/python-designateclient-2.7.0/test-requirements.txt      2017-07-27 
16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/test-requirements.txt      2018-01-09 
16:43:34.000000000 +0100
@@ -4,13 +4,11 @@
 # Hacking already pins down pep8, pyflakes and flake8
 hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0
 coverage!=4.4,>=4.0 # Apache-2.0
-mock>=2.0 # BSD
-oslo.config!=4.3.0,!=4.4.0,>=4.0.0 # Apache-2.0
+mock>=2.0.0 # BSD
+oslo.config>=5.1.0 # Apache-2.0
 oslotest>=1.10.0 # Apache-2.0
-python-subunit>=0.0.18 # Apache-2.0/BSD
-requests-mock>=1.1 # Apache-2.0
-sphinx>=1.6.2 # BSD
+python-subunit>=1.0.0 # Apache-2.0/BSD
+requests-mock>=1.1.0 # Apache-2.0
 testrepository>=0.0.18 # Apache-2.0/BSD
-openstackdocstheme>=1.11.0 # Apache-2.0
-reno!=2.3.1,>=1.8.0 # Apache-2.0
-tempest>=16.1.0 # Apache-2.0
+reno>=2.5.0 # Apache-2.0
+tempest>=17.1.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-2.7.0/tools/tox_install.sh 
new/python-designateclient-2.8.0/tools/tox_install.sh
--- old/python-designateclient-2.7.0/tools/tox_install.sh       2017-07-27 
16:58:43.000000000 +0200
+++ new/python-designateclient-2.8.0/tools/tox_install.sh       1970-01-01 
01:00:00.000000000 +0100
@@ -1,30 +0,0 @@
-#!/usr/bin/env bash
-
-# Client constraint file contains this client version pin that is in conflict
-# with installing the client from source. We should remove the version pin in
-# the constraints file before applying it for from-source installation.
-
-CONSTRAINTS_FILE="$1"
-shift 1
-
-set -e
-
-# NOTE(tonyb): Place this in the tox enviroment's log dir so it will get
-# published to logs.openstack.org for easy debugging.
-localfile="$VIRTUAL_ENV/log/upper-constraints.txt"
-
-if [[ "$CONSTRAINTS_FILE" != http* ]]; then
-    CONSTRAINTS_FILE="file://$CONSTRAINTS_FILE"
-fi
-# NOTE(tonyb): need to add curl to bindep.txt if the project supports bindep
-curl "$CONSTRAINTS_FILE" --insecure --progress-bar --output "$localfile"
-
-pip install -c"$localfile" openstack-requirements
-
-# This is the main purpose of the script: Allow local installation of
-# the current repo. It is listed in constraints file and thus any
-# install will be constrained and we need to unconstrain it.
-edit-constraints "$localfile" -- "$CLIENT_NAME"
-
-pip install -c"$localfile" -U "$@"
-exit $?
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-2.7.0/tox.ini 
new/python-designateclient-2.8.0/tox.ini
--- old/python-designateclient-2.7.0/tox.ini    2017-07-27 16:58:43.000000000 
+0200
+++ new/python-designateclient-2.8.0/tox.ini    2018-01-09 16:43:34.000000000 
+0100
@@ -5,14 +5,14 @@
 
 [testenv]
 usedevelop = True
-install_command = {toxinidir}/tools/tox_install.sh 
{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
 {opts} {packages}
+install_command = pip install {opts} {packages}
 setenv = VIRTUAL_ENV={envdir}
-         BRANCH_NAME=master
-         CLIENT_NAME=python-designateclient
          LANG=en_US.UTF-8
          LANGUAGE=en_US:en
          LC_ALL=C
-deps = -r{toxinidir}/requirements.txt
+deps =
+       
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
+       -r{toxinidir}/requirements.txt
        -r{toxinidir}/test-requirements.txt
 
 whitelist_externals = find
@@ -25,8 +25,11 @@
 passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY
 
 [testenv:docs]
-commands = rm -rf doc/build
-           python setup.py build_sphinx
+deps =
+       
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
+       -r{toxinidir}/requirements.txt
+       -r{toxinidir}/doc/requirements.txt
+commands = sphinx-build -b html doc/source doc/build/html
 
 [testenv:flake8]
 commands = flake8


Reply via email to