Hello community,

here is the log from the commit of package python-designateclient for 
openSUSE:Factory checked in at 2015-07-12 22:52:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-designateclient (Old)
 and      /work/SRC/openSUSE:Factory/.python-designateclient.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-designateclient"

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-designateclient/python-designateclient.changes
    2014-04-03 19:36:57.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-designateclient.new/python-designateclient.changes
       2015-07-12 22:52:33.000000000 +0200
@@ -2 +2 @@
-Thu Mar 27 11:34:59 UTC 2014 - dmuel...@suse.com
+Wed Sep 10 15:10:18 UTC 2014 - dmuel...@suse.com
@@ -4 +4,90 @@
-- go back to released version (1.0.2) 
+- go back to version 1.1.0 
+
+-------------------------------------------------------------------
+Sun Aug 31 00:10:34 UTC 2014 -  cloud-de...@suse.de
+
+- Update to version python-designateclient-1.0.3.17.ga900b41:
+  * sync and touch Commands Extend the base.DeleteCommand
+
+-------------------------------------------------------------------
+Thu Aug 28 00:47:27 UTC 2014 -  cloud-de...@suse.de
+
+- Update to version python-designateclient-1.0.3.15.g5e69886:
+  * Add support for SOA records
+
+-------------------------------------------------------------------
+Thu Aug 14 23:44:32 UTC 2014 -  cloud-de...@suse.de
+
+- Update to version python-designateclient-1.0.3.14.gedbc00a:
+  * Updated from global requirements
+
+-------------------------------------------------------------------
+Mon Aug 11 11:37:21 UTC 2014 -  cloud-de...@suse.de
+
+- Update to version python-designateclient-1.0.3.13.g32e7a64:
+  * Updated from global requirements
+
+-------------------------------------------------------------------
+Fri Aug  1 23:47:49 UTC 2014 -  cloud-de...@suse.de
+
+- Update to version python-designateclient-1.0.3.12.g322c455:
+  * Add support for quotas for v1 cli / bindings
+
+-------------------------------------------------------------------
+Thu Jul 17 00:27:30 UTC 2014 -  cloud-de...@suse.de
+
+- Update to version python-designateclient-1.0.3.11.ge9adf2a:
+  * Enable hacking check H104
+  * Added oslosphinx theme, and enabled the incubating option
+  * Support better logging (Fixes --debug option)
+
+-------------------------------------------------------------------
+Fri Jul 11 23:57:36 UTC 2014 -  cloud-de...@suse.de
+
+- Update to version python-designateclient-1.0.3.9.g975bc54:
+  * Enabled hacking check H401
+  * Support Keystone V3 authentication
+
+-------------------------------------------------------------------
+Mon Jul  7 23:57:14 UTC 2014 -  cloud-de...@suse.de
+
+- Update to version python-designateclient-1.0.3.6.gd4498bd:
+  * Support better logging (Fixes --debug option
+
+-------------------------------------------------------------------
+Thu Jul  3 00:33:33 UTC 2014 -  cloud-de...@suse.de
+
+- Update to version python-designateclient-1.0.3.5.g9d4544f:
+  * Update hacking package, fix/ignore new style errors
+
+-------------------------------------------------------------------
+Wed Jul  2 00:31:50 UTC 2014 -  cloud-de...@suse.de
+
+- Update to version python-designateclient-1.0.3.4.g5726896:
+  * Updated from global requirements
+
+-------------------------------------------------------------------
+Sun Jun 29 00:31:08 UTC 2014 -  cloud-de...@suse.de
+
+- Update to version python-designateclient-1.0.3.3.g469afe1:
+  * Update .gitreview for repository move
+
+-------------------------------------------------------------------
+Sat Jun  7 00:38:37 UTC 2014 -  cloud-de...@suse.de
+
+- Update to version python-designateclient-1.0.3.2.gd6bca95:
+  * Use six.add_metaclass instead of __metaclass__
+  * Add dummy tests
+  1.0.3
+
+-------------------------------------------------------------------
+Thu Apr 17 00:43:12 UTC 2014 -  cloud-de...@suse.de
+
+- Update to version python-designateclient-1.0.2.3.g6025437:
+  * designate record-list should display record data
+
+-------------------------------------------------------------------
+Tue Apr 15 00:42:13 UTC 2014 -  cloud-de...@suse.de
+
+- Update to version python-designateclient-1.0.2.2.ge6ff688:
+  * Correct Python bindings create-record example

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

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

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

Other differences:
------------------
++++++ python-designateclient.spec ++++++
--- /var/tmp/diff_new_pack.ZS0efE/_old  2015-07-12 22:52:33.000000000 +0200
+++ /var/tmp/diff_new_pack.ZS0efE/_new  2015-07-12 22:52:33.000000000 +0200
@@ -18,13 +18,13 @@
 
 %define component designateclient
 Name:           python-%{component}
-Version:        1.0.2
+Version:        1.1.0
 Release:        0
 Summary:        Openstack DNS (Designate) API Client
 License:        Apache-2.0
 Group:          Development/Languages/Python
 Url:            http://launchpad.net/python-designateclient
-Source:         
http://tarballs.openstack.org/python-designateclient/python-designateclient-%{version}.tar.gz
+Source:         
https://pypi.python.org/packages/source/p/python-designateclient/python-designateclient-%{version}.tar.gz
 BuildRequires:  fdupes
 BuildRequires:  openstack-suse-macros
 BuildRequires:  python-devel
@@ -40,11 +40,11 @@
 BuildRequires:  python-testrepository >= 0.0.17
 Requires:       python >= 2.6.8
 Requires:       python-cliff >= 1.4.3
-Requires:       python-jsonschema >= 2.0.0
-Requires:       python-keystoneclient >= 0.6.0
-Requires:       python-pbr >= 0.6
+Requires:       python-jsonschema >= 1.3.0
+Requires:       python-keystoneclient >= 0.3.2
+Requires:       python-pbr >= 0.5.21
 Requires:       python-requests >= 1.1
-Requires:       python-stevedore >= 0.14
+Requires:       python-stevedore >= 0.10
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 %if 0%{?suse_version} && 0%{?suse_version} <= 1110
 %{!?python_sitelib: %global python_sitelib %(python -c "from 
distutils.sysconfig import get_python_lib; print get_python_lib()")}

++++++ python-designateclient-1.0.2.tar.gz -> 
python-designateclient-1.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-1.0.2/AUTHORS 
new/python-designateclient-1.1.0/AUTHORS
--- old/python-designateclient-1.0.2/AUTHORS    2014-02-25 14:53:37.000000000 
+0100
+++ new/python-designateclient-1.1.0/AUTHORS    2014-09-03 22:09:52.000000000 
+0200
@@ -1 +1,20 @@
-
+Betsy Luzader <betsy.luza...@rackspace.com>
+Brian DeHamer <brian.deha...@hp.com>
+Christian Berendt <bere...@b1-systems.de>
+Davide Guerri <davide.gue...@gmail.com>
+Dirk Mueller <d...@dmllr.de>
+Endre Karlson <endre.karl...@gmail.com>
+Endre Karlson <endre.karl...@hp.com>
+Graham Hayes <graham.ha...@hp.com>
+Jordan Cazamias <jordan.cazam...@rackspace.com>
+Kiall Mac Innes <ki...@hp.com>
+Kiall Mac Innes <ki...@managedit.ie>
+Marcus Furlong <furlo...@gmail.com>
+Monty Taylor <mord...@inaugust.com>
+Patrick Galbraith <p...@patg.net>
+Pavel Kirpichyov <pavel.kirpich...@gmail.com>
+Sascha Peilicke <sasc...@gmx.de>
+Sascha Peilicke <speili...@suse.com>
+Shane Wang <shane.w...@intel.com>
+Simon McCartney <simon.mccart...@hp.com>
+rjrjr <rrick...@ebaysf.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-1.0.2/ChangeLog 
new/python-designateclient-1.1.0/ChangeLog
--- old/python-designateclient-1.0.2/ChangeLog  2014-02-25 14:53:37.000000000 
+0100
+++ new/python-designateclient-1.1.0/ChangeLog  2014-09-03 22:09:52.000000000 
+0200
@@ -1,6 +1,32 @@
 CHANGES
 =======
 
+1.1.0
+-----
+
+* Add support for SOA records
+* sync and touch Commands Extend the base.DeleteCommand
+* Updated from global requirements
+* Updated from global requirements
+* Add support for quotas for v1 cli / bindings
+* Enable hacking check H104
+* Added oslosphinx theme, and enabled the incubating option
+* Enabled hacking check H401
+* Support Keystone V3 authentication
+* Support better logging (Fixes --debug option)
+* Update hacking package, fix/ignore new style errors
+* Updated from global requirements
+* Update .gitreview for repository move
+* Use six.add_metaclass instead of __metaclass__
+* Add dummy tests
+
+1.0.3
+-----
+
+* designate record-list should display record data
+* Correct Python bindings create-record example
+* Standardize doc requirements
+
 1.0.2
 -----
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-1.0.2/PKG-INFO 
new/python-designateclient-1.1.0/PKG-INFO
--- old/python-designateclient-1.0.2/PKG-INFO   2014-02-25 14:53:37.000000000 
+0100
+++ new/python-designateclient-1.1.0/PKG-INFO   2014-09-03 22:09:53.000000000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: python-designateclient
-Version: 1.0.2
+Version: 1.1.0
 Summary: DNS as a Service - Client
 Home-page: https://launchpad.net/python-designateclientclient
 Author: Kiall Mac Innes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-1.0.2/designateclient/auth.py 
new/python-designateclient-1.1.0/designateclient/auth.py
--- old/python-designateclient-1.0.2/designateclient/auth.py    2014-02-25 
14:52:57.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/auth.py    2014-09-03 
22:07:41.000000000 +0200
@@ -14,10 +14,10 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-from requests.auth import AuthBase
 from urlparse import urlparse
 
 from keystoneclient.v2_0.client import Client
+from requests.auth import AuthBase
 
 
 class KeystoneAuth(AuthBase):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/cli/base.py 
new/python-designateclient-1.1.0/designateclient/cli/base.py
--- old/python-designateclient-1.0.2/designateclient/cli/base.py        
2014-02-25 14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/cli/base.py        
2014-09-03 22:07:41.000000000 +0200
@@ -14,37 +14,44 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 import abc
+
 from cliff.command import Command as CliffCommand
 from cliff.lister import Lister
 from cliff.show import ShowOne
+import six
+
 from designateclient import exceptions
 from designateclient import utils
 from designateclient.v1 import Client
 
 
+@six.add_metaclass(abc.ABCMeta)
 class Command(CliffCommand):
-    __metaclass__ = abc.ABCMeta
 
     def run(self, parsed_args):
-        client_args = {
+        kwargs = {
             'endpoint': self.app.options.os_endpoint,
-            'auth_url': self.app.options.os_auth_url,
             'username': self.app.options.os_username,
+            'user_id': self.app.options.os_user_id,
+            'user_domain_id': self.app.options.os_user_domain_id,
+            'user_domain_name': self.app.options.os_user_domain_name,
             'password': self.app.options.os_password,
-            'tenant_id': self.app.options.os_tenant_id,
             'tenant_name': self.app.options.os_tenant_name,
+            'tenant_id': self.app.options.os_tenant_id,
+            'domain_name': self.app.options.os_domain_name,
+            'domain_id': self.app.options.os_domain_id,
+            'project_name': self.app.options.os_project_name,
+            'project_id': self.app.options.os_project_id,
+            'project_domain_name': self.app.options.os_project_domain_name,
+            'project_domain_id': self.app.options.os_project_domain_id,
+            'auth_url': self.app.options.os_auth_url,
             'token': self.app.options.os_token,
+            'endpoint_type': self.app.options.os_endpoint_type,
             'service_type': self.app.options.os_service_type,
-            'region_name': self.app.options.os_region_name,
-            'sudo_tenant_id': self.app.options.sudo_tenant_id,
-            'insecure': self.app.options.insecure
+            'insecure': self.app.options.insecure,
         }
 
-        if client_args['endpoint'] is None and client_args['auth_url'] is None:
-            raise ValueError('Either the --os-endpoint or --os-auth-url '
-                             'argument must be supplied')
-
-        self.client = Client(**client_args)
+        self.client = Client(**kwargs)
 
         try:
             return super(Command, self).run(parsed_args)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/cli/diagnostics.py 
new/python-designateclient-1.1.0/designateclient/cli/diagnostics.py
--- old/python-designateclient-1.0.2/designateclient/cli/diagnostics.py 
2014-02-25 14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/cli/diagnostics.py 
2014-09-03 22:07:41.000000000 +0200
@@ -22,7 +22,7 @@
 
 
 class PingCommand(base.GetCommand):
-    """ Ping a service on a given host """
+    """Ping a service on a given host"""
 
     def get_parser(self, prog_name):
         parser = super(PingCommand, self).get_parser(prog_name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/cli/domains.py 
new/python-designateclient-1.1.0/designateclient/cli/domains.py
--- old/python-designateclient-1.0.2/designateclient/cli/domains.py     
2014-02-25 14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/cli/domains.py     
2014-09-03 22:07:41.000000000 +0200
@@ -23,7 +23,7 @@
 
 
 class ListDomainsCommand(base.ListCommand):
-    """ List Domains """
+    """List Domains"""
 
     columns = ['id', 'name', 'serial']
 
@@ -32,7 +32,7 @@
 
 
 class GetDomainCommand(base.GetCommand):
-    """ Get Domain """
+    """Get Domain"""
 
     def get_parser(self, prog_name):
         parser = super(GetDomainCommand, self).get_parser(prog_name)
@@ -46,7 +46,7 @@
 
 
 class CreateDomainCommand(base.CreateCommand):
-    """ Create Domain """
+    """Create Domain"""
 
     def get_parser(self, prog_name):
         parser = super(CreateDomainCommand, self).get_parser(prog_name)
@@ -74,7 +74,7 @@
 
 
 class UpdateDomainCommand(base.UpdateCommand):
-    """ Update Domain """
+    """Update Domain"""
 
     def get_parser(self, prog_name):
         parser = super(UpdateDomainCommand, self).get_parser(prog_name)
@@ -111,7 +111,7 @@
 
 
 class DeleteDomainCommand(base.DeleteCommand):
-    """ Delete Domain """
+    """Delete Domain"""
 
     def get_parser(self, prog_name):
         parser = super(DeleteDomainCommand, self).get_parser(prog_name)
@@ -125,7 +125,7 @@
 
 
 class ListDomainServersCommand(base.ListCommand):
-    """ List Domain Servers """
+    """List Domain Servers"""
 
     columns = ['name']
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/cli/quotas.py 
new/python-designateclient-1.1.0/designateclient/cli/quotas.py
--- old/python-designateclient-1.0.2/designateclient/cli/quotas.py      
1970-01-01 01:00:00.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/cli/quotas.py      
2014-09-03 22:07:41.000000000 +0200
@@ -0,0 +1,80 @@
+# Copyright 2014 Hewlett-Packard Development Company, L.P.
+#
+# Author: Endre Karlson <endre.karl...@hp.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import logging
+
+from designateclient.cli import base
+
+
+LOG = logging.getLogger(__name__)
+
+
+class GetQuotaCommand(base.GetCommand):
+    """Get Quota"""
+
+    def get_parser(self, prog_name):
+        parser = super(GetQuotaCommand, self).get_parser(prog_name)
+
+        parser.add_argument('tenant_id', help="Tenant ID")
+
+        return parser
+
+    def execute(self, parsed_args):
+        return self.client.quotas.get(parsed_args.tenant_id)
+
+
+class UpdateQuotaCommand(base.UpdateCommand):
+    """Update Quota"""
+
+    def get_parser(self, prog_name):
+        parser = super(UpdateQuotaCommand, self).get_parser(prog_name)
+
+        parser.add_argument('tenant_id', help="Tenant ID")
+        parser.add_argument('--domains', help="Allowed Domains", type=int)
+        parser.add_argument('--domain-recordsets',
+                            help="Allowed Domain Records",
+                            type=int)
+        parser.add_argument('--recordset-records',
+                            help="Allowed Recordset Records",
+                            type=int)
+        parser.add_argument('--domain-records',
+                            help="Allowed Domain Records",
+                            type=int)
+        return parser
+
+    def execute(self, parsed_args):
+        # TODO(kiall): API needs updating.. this get is silly
+        quota = self.client.quotas.get(parsed_args.tenant_id)
+
+        for key, old in quota.items():
+            new = getattr(parsed_args, key)
+            if new is not None and new != old:
+                quota[key] = new
+        return self.client.quotas.update(parsed_args.tenant_id, quota)
+
+
+class ResetQuotaCommand(base.DeleteCommand):
+    """Reset Quota"""
+
+    def get_parser(self, prog_name):
+        parser = super(ResetQuotaCommand, self).get_parser(prog_name)
+
+        parser.add_argument('tenant_id', help="Tenant ID")
+
+        return parser
+
+    def execute(self, parsed_args):
+        self.client.quotas.reset(parsed_args.tenant_id)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/cli/records.py 
new/python-designateclient-1.1.0/designateclient/cli/records.py
--- old/python-designateclient-1.0.2/designateclient/cli/records.py     
2014-02-25 14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/cli/records.py     
2014-09-03 22:07:41.000000000 +0200
@@ -23,9 +23,9 @@
 
 
 class ListRecordsCommand(base.ListCommand):
-    """ List Records """
+    """List Records"""
 
-    columns = ['id', 'type', 'name']
+    columns = ['id', 'type', 'name', 'data']
 
     def get_parser(self, prog_name):
         parser = super(ListRecordsCommand, self).get_parser(prog_name)
@@ -39,7 +39,7 @@
 
 
 class GetRecordCommand(base.GetCommand):
-    """ Get Record """
+    """Get Record"""
 
     def get_parser(self, prog_name):
         parser = super(GetRecordCommand, self).get_parser(prog_name)
@@ -54,7 +54,7 @@
 
 
 class CreateRecordCommand(base.CreateCommand):
-    """ Create Record """
+    """Create Record"""
 
     def get_parser(self, prog_name):
         parser = super(CreateRecordCommand, self).get_parser(prog_name)
@@ -89,7 +89,7 @@
 
 
 class UpdateRecordCommand(base.UpdateCommand):
-    """ Update Record """
+    """Update Record"""
 
     def get_parser(self, prog_name):
         parser = super(UpdateRecordCommand, self).get_parser(prog_name)
@@ -148,7 +148,7 @@
 
 
 class DeleteRecordCommand(base.DeleteCommand):
-    """ Delete Record """
+    """Delete Record"""
 
     def get_parser(self, prog_name):
         parser = super(DeleteRecordCommand, self).get_parser(prog_name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/cli/reports.py 
new/python-designateclient-1.1.0/designateclient/cli/reports.py
--- old/python-designateclient-1.0.2/designateclient/cli/reports.py     
2014-02-25 14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/cli/reports.py     
2014-09-03 22:07:41.000000000 +0200
@@ -17,35 +17,35 @@
 
 
 class DomainCountCommand(base.GetCommand):
-    """ Get counts for total domains """
+    """Get counts for total domains"""
 
     def execute(self, parsed_args):
         return self.client.reports.count_domains()
 
 
 class RecordCountCommand(base.GetCommand):
-    """ Get counts for total records """
+    """Get counts for total records"""
 
     def execute(self, parsed_args):
         return self.client.reports.count_records()
 
 
 class TenantCountCommand(base.GetCommand):
-    """ Get counts for total tenants """
+    """Get counts for total tenants"""
 
     def execute(self, parsed_args):
         return self.client.reports.count_tenants()
 
 
 class CountsCommand(base.GetCommand):
-    """ Get count totals for all tenants, domains and records """
+    """Get count totals for all tenants, domains and records"""
 
     def execute(self, parsed_args):
         return self.client.reports.count_all()
 
 
 class TenantsCommand(base.ListCommand):
-    """ Get list of tenants and domain count for each """
+    """Get list of tenants and domain count for each"""
 
     columns = ['domain_count', 'id']
 
@@ -54,7 +54,7 @@
 
 
 class TenantCommand(base.ListCommand):
-    """ Get a list of domains for given tenant """
+    """Get a list of domains for given tenant"""
 
     columns = ['domain']
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/cli/servers.py 
new/python-designateclient-1.1.0/designateclient/cli/servers.py
--- old/python-designateclient-1.0.2/designateclient/cli/servers.py     
2014-02-25 14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/cli/servers.py     
2014-09-03 22:07:41.000000000 +0200
@@ -23,7 +23,7 @@
 
 
 class ListServersCommand(base.ListCommand):
-    """ List Servers """
+    """List Servers"""
 
     columns = ['id', 'name']
 
@@ -32,7 +32,7 @@
 
 
 class GetServerCommand(base.GetCommand):
-    """ Get Server """
+    """Get Server"""
 
     def get_parser(self, prog_name):
         parser = super(GetServerCommand, self).get_parser(prog_name)
@@ -46,7 +46,7 @@
 
 
 class CreateServerCommand(base.CreateCommand):
-    """ Create Server """
+    """Create Server"""
 
     def get_parser(self, prog_name):
         parser = super(CreateServerCommand, self).get_parser(prog_name)
@@ -64,7 +64,7 @@
 
 
 class UpdateServerCommand(base.UpdateCommand):
-    """ Update Server """
+    """Update Server"""
 
     def get_parser(self, prog_name):
         parser = super(UpdateServerCommand, self).get_parser(prog_name)
@@ -85,7 +85,7 @@
 
 
 class DeleteServerCommand(base.DeleteCommand):
-    """ Delete Server """
+    """Delete Server"""
 
     def get_parser(self, prog_name):
         parser = super(DeleteServerCommand, self).get_parser(prog_name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/cli/sync.py 
new/python-designateclient-1.1.0/designateclient/cli/sync.py
--- old/python-designateclient-1.0.2/designateclient/cli/sync.py        
2014-02-25 14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/cli/sync.py        
2014-09-03 22:07:41.000000000 +0200
@@ -20,8 +20,8 @@
 LOG = logging.getLogger(__name__)
 
 
-class SyncAllCommand(base.Command):
-    """ Sync Everything """
+class SyncAllCommand(base.DeleteCommand):
+    """Sync Everything"""
 
     def execute(self, parsed_args):
         self.client.sync.sync_all()
@@ -29,8 +29,8 @@
         LOG.info('Synchronization of all domains scheduled')
 
 
-class SyncDomainCommand(base.Command):
-    """ Sync a single Domain """
+class SyncDomainCommand(base.DeleteCommand):
+    """Sync a single Domain"""
 
     def get_parser(self, prog_name):
         parser = super(SyncDomainCommand, self).get_parser(prog_name)
@@ -45,8 +45,8 @@
         LOG.info('Synchronization of domain scheduled')
 
 
-class SyncRecordCommand(base.Command):
-    """ Sync a single Record """
+class SyncRecordCommand(base.DeleteCommand):
+    """Sync a single Record"""
 
     def get_parser(self, prog_name):
         parser = super(SyncRecordCommand, self).get_parser(prog_name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/cli/touch.py 
new/python-designateclient-1.1.0/designateclient/cli/touch.py
--- old/python-designateclient-1.0.2/designateclient/cli/touch.py       
2014-02-25 14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/cli/touch.py       
2014-09-03 22:07:41.000000000 +0200
@@ -21,8 +21,8 @@
 LOG = logging.getLogger(__name__)
 
 
-class TouchDomainCommand(base.Command):
-    """ Touch a single Domain """
+class TouchDomainCommand(base.DeleteCommand):
+    """Touch a single Domain"""
 
     def get_parser(self, prog_name):
         parser = super(TouchDomainCommand, self).get_parser(prog_name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/resources/schemas/v1/record.json
 
new/python-designateclient-1.1.0/designateclient/resources/schemas/v1/record.json
--- 
old/python-designateclient-1.0.2/designateclient/resources/schemas/v1/record.json
   2014-02-25 14:52:56.000000000 +0100
+++ 
new/python-designateclient-1.1.0/designateclient/resources/schemas/v1/record.json
   2014-09-03 22:07:41.000000000 +0200
@@ -30,7 +30,7 @@
         "type": {
             "type": "string",
             "description": "DNS Record Type",
-            "enum": ["A", "AAAA", "CNAME", "MX", "SRV", "TXT", "SPF", "NS", 
"PTR", "SSHFP"],
+            "enum": ["A", "AAAA", "CNAME", "MX", "SRV", "TXT", "SPF", "NS", 
"PTR", "SSHFP", "SOA"],
             "required": true
         },
         "data": {
@@ -219,6 +219,17 @@
             },
             "priority": {
                 "type": "null"
+            }
+        }
+    }, {
+        "description": "A SOA Record",
+        "properties": {
+            "type": {
+                "type": "string",
+                "enum": ["SOA"]
+            },
+            "priority": {
+                "type": "null"
             }
         }
     }],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/shell.py 
new/python-designateclient-1.1.0/designateclient/shell.py
--- old/python-designateclient-1.0.2/designateclient/shell.py   2014-02-25 
14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/shell.py   2014-09-03 
22:07:41.000000000 +0200
@@ -16,12 +16,28 @@
 
 import logging
 import os
+import traceback
 
 from cliff.app import App
 from cliff.commandmanager import CommandManager
+
 from designateclient.version import version_info as version
 
 
+def env(*vars, **kwargs):
+    """Search for the first defined of possibly many env vars
+
+    Returns the first environment variable defined in vars, or
+    returns the default defined in kwargs.
+
+    """
+    for v in vars:
+        value = os.environ.get(v)
+        if value:
+            return value
+    return kwargs.get('default', '')
+
+
 class DesignateShell(App):
     CONSOLE_MESSAGE_FORMAT = '%(levelname)s: %(message)s'
     DEFAULT_VERBOSE_LEVEL = 0
@@ -39,49 +55,161 @@
         parser = super(DesignateShell, self).build_option_parser(
             description, version)
 
-        parser.add_argument('--os-endpoint',
-                            default=os.environ.get('OS_DNS_ENDPOINT'),
-                            help="Defaults to env[OS_DNS_ENDPOINT]")
-
-        parser.add_argument('--os-auth-url',
-                            default=os.environ.get('OS_AUTH_URL'),
-                            help="Defaults to env[OS_AUTH_URL]")
-
         parser.add_argument('--os-username',
-                            default=os.environ.get('OS_USERNAME'),
-                            help="Defaults to env[OS_USERNAME]")
+                            default=env('OS_USERNAME'),
+                            help='Name used for authentication with the '
+                                 'OpenStack Identity service. '
+                                 'Defaults to env[OS_USERNAME].')
+
+        parser.add_argument('--os-user-id',
+                            default=env('OS_USER_ID'),
+                            help='User ID used for authentication with the '
+                                 'OpenStack Identity service. '
+                                 'Defaults to env[OS_USER_ID].')
+
+        parser.add_argument('--os-user-domain-id',
+                            default=env('OS_USER_DOMAIN_ID'),
+                            help='Defaults to env[OS_USER_DOMAIN_ID].')
+
+        parser.add_argument('--os-user-domain-name',
+                            default=env('OS_USER_DOMAIN_NAME'),
+                            help='Defaults to env[OS_USER_DOMAIN_NAME].')
 
         parser.add_argument('--os-password',
-                            default=os.environ.get('OS_PASSWORD'),
-                            help="Defaults to env[OS_PASSWORD]")
+                            default=env('OS_PASSWORD'),
+                            help='Password used for authentication with the '
+                                 'OpenStack Identity service. '
+                                 'Defaults to env[OS_PASSWORD].')
+
+        parser.add_argument('--os-tenant-name',
+                            default=env('OS_TENANT_NAME'),
+                            help='Tenant to request authorization on. '
+                                 'Defaults to env[OS_TENANT_NAME].')
 
         parser.add_argument('--os-tenant-id',
-                            default=os.environ.get('OS_TENANT_ID'),
-                            help="Defaults to env[OS_TENANT_ID]")
+                            default=env('OS_TENANT_ID'),
+                            help='Tenant to request authorization on. '
+                                 'Defaults to env[OS_TENANT_ID].')
+
+        parser.add_argument('--os-project-name',
+                            default=env('OS_PROJECT_NAME'),
+                            help='Project to request authorization on. '
+                                 'Defaults to env[OS_PROJECT_NAME].')
+
+        parser.add_argument('--os-domain-name',
+                            default=env('OS_DOMAIN_NAME'),
+                            help='Project to request authorization on. '
+                                 'Defaults to env[OS_DOMAIN_NAME].')
+
+        parser.add_argument('--os-domain-id',
+                            default=env('OS_DOMAIN_ID'),
+                            help='Defaults to env[OS_DOMAIN_ID].')
+
+        parser.add_argument('--os-project-id',
+                            default=env('OS_PROJECT_ID'),
+                            help='Project to request authorization on. '
+                                 'Defaults to env[OS_PROJECT_ID].')
+
+        parser.add_argument('--os-project-domain-id',
+                            default=env('OS_PROJECT_DOMAIN_ID'),
+                            help='Defaults to env[OS_PROJECT_DOMAIN_ID].')
+
+        parser.add_argument('--os-project-domain-name',
+                            default=env('OS_PROJECT_DOMAIN_NAME'),
+                            help='Defaults to env[OS_PROJECT_DOMAIN_NAME].')
 
-        parser.add_argument('--os-tenant-name',
-                            default=os.environ.get('OS_TENANT_NAME'),
-                            help="Defaults to env[OS_TENANT_NAME]")
+        parser.add_argument('--os-auth-url',
+                            default=env('OS_AUTH_URL'),
+                            help='Specify the Identity endpoint to use for '
+                                 'authentication. '
+                                 'Defaults to env[OS_AUTH_URL].')
+
+        parser.add_argument('--os-region-name',
+                            default=env('OS_REGION_NAME'),
+                            help='Specify the region to use. '
+                                 'Defaults to env[OS_REGION_NAME].')
 
         parser.add_argument('--os-token',
-                            default=os.environ.get('OS_SERVICE_TOKEN'),
-                            help="Defaults to env[OS_SERVICE_TOKEN]")
+                            default=env('OS_SERVICE_TOKEN'),
+                            help='Specify an existing token to use instead of '
+                                 'retrieving one via authentication (e.g. '
+                                 'with username & password). '
+                                 'Defaults to env[OS_SERVICE_TOKEN].')
+
+        parser.add_argument('--os-endpoint',
+                            default=env('OS_DNS_ENDPOINT',
+                                        'OS_SERVICE_ENDPOINT'),
+                            help='Specify an endpoint to use instead of '
+                                 'retrieving one from the service catalog '
+                                 '(via authentication). '
+                                 'Defaults to env[OS_DNS_ENDPOINT].')
+
+        parser.add_argument('--os-endpoint-type',
+                            default=env('OS_ENDPOINT_TYPE'),
+                            help='Defaults to env[OS_ENDPOINT_TYPE].')
 
         parser.add_argument('--os-service-type',
-                            default=os.environ.get('OS_DNS_SERVICE_TYPE',
-                                                   'dns'),
+                            default=env('OS_DNS_SERVICE_TYPE', default='dns'),
                             help=("Defaults to env[OS_DNS_SERVICE_TYPE], or "
                                   "'dns'"))
 
-        parser.add_argument('--os-region-name',
-                            default=os.environ.get('OS_REGION_NAME'),
-                            help="Defaults to env[OS_REGION_NAME]")
-
-        parser.add_argument('--sudo-tenant-id',
-                            default=os.environ.get('DESIGNATE_SUDO_TENANT_ID'),
-                            help="Defaults to env[DESIGNATE_SUDO_TENANT_ID]")
-
         parser.add_argument('--insecure', action='store_true',
                             help="Explicitly allow 'insecure' SSL requests")
 
         return parser
+
+    def configure_logging(self):
+        """Configure logging for the app
+
+        Cliff sets some defaults we don't want so re-work it a bit
+        """
+
+        if self.options.debug:
+            # --debug forces verbose_level 3
+            # Set this here so cliff.app.configure_logging() can work
+            self.options.verbose_level = 3
+
+        super(DesignateShell, self).configure_logging()
+        root_logger = logging.getLogger('')
+
+        # Requests logs some stuff at INFO that we don't want
+        # unless we have DEBUG
+        requests_log = logging.getLogger("requests")
+        requests_log.setLevel(logging.ERROR)
+
+        # Other modules we don't want DEBUG output for so
+        # don't reset them below
+        iso8601_log = logging.getLogger("iso8601")
+        iso8601_log.setLevel(logging.ERROR)
+
+        # Set logging to the requested level
+        self.dump_stack_trace = False
+        if self.options.verbose_level == 0:
+            # --quiet
+            root_logger.setLevel(logging.ERROR)
+        elif self.options.verbose_level == 1:
+            # This is the default case, no --debug, --verbose or --quiet
+            root_logger.setLevel(logging.WARNING)
+        elif self.options.verbose_level == 2:
+            # One --verbose
+            root_logger.setLevel(logging.INFO)
+        elif self.options.verbose_level >= 3:
+            # Two or more --verbose
+            root_logger.setLevel(logging.DEBUG)
+            requests_log.setLevel(logging.DEBUG)
+
+        if self.options.debug:
+            # --debug forces traceback
+            self.dump_stack_trace = True
+
+    def run(self, argv):
+        try:
+            return super(DesignateShell, self).run(argv)
+        except Exception as e:
+            if not logging.getLogger('').handlers:
+                logging.basicConfig()
+            if self.dump_stack_trace:
+                self.log.error(traceback.format_exc(e))
+            else:
+                self.log.error('Exception raised: ' + str(e))
+            return 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/tests/base.py 
new/python-designateclient-1.1.0/designateclient/tests/base.py
--- old/python-designateclient-1.0.2/designateclient/tests/base.py      
1970-01-01 01:00:00.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/tests/base.py      
2014-09-03 22:07:41.000000000 +0200
@@ -0,0 +1,53 @@
+# -*- coding: utf-8 -*-
+
+# Copyright 2010-2011 OpenStack Foundation
+# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
+#
+# 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 os
+
+import fixtures
+import testtools
+
+_TRUE_VALUES = ('True', 'true', '1', 'yes')
+
+
+class TestCase(testtools.TestCase):
+
+    """Test case base class for all unit tests."""
+
+    def setUp(self):
+        """Run before each test method to initialize test environment."""
+
+        super(TestCase, self).setUp()
+        test_timeout = os.environ.get('OS_TEST_TIMEOUT', 0)
+        try:
+            test_timeout = int(test_timeout)
+        except ValueError:
+            # If timeout value is invalid do not set a timeout.
+            test_timeout = 0
+        if test_timeout > 0:
+            self.useFixture(fixtures.Timeout(test_timeout, gentle=True))
+
+        self.useFixture(fixtures.NestedTempfile())
+        self.useFixture(fixtures.TempHomeDir())
+
+        if os.environ.get('OS_STDOUT_CAPTURE') in _TRUE_VALUES:
+            stdout = self.useFixture(fixtures.StringStream('stdout')).stream
+            self.useFixture(fixtures.MonkeyPatch('sys.stdout', stdout))
+        if os.environ.get('OS_STDERR_CAPTURE') in _TRUE_VALUES:
+            stderr = self.useFixture(fixtures.StringStream('stderr')).stream
+            self.useFixture(fixtures.MonkeyPatch('sys.stderr', stderr))
+
+        self.log_fixture = self.useFixture(fixtures.FakeLogger())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/tests/test_designateclient.py 
new/python-designateclient-1.1.0/designateclient/tests/test_designateclient.py
--- 
old/python-designateclient-1.0.2/designateclient/tests/test_designateclient.py  
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/python-designateclient-1.1.0/designateclient/tests/test_designateclient.py  
    2014-09-03 22:07:41.000000000 +0200
@@ -0,0 +1,28 @@
+# -*- coding: utf-8 -*-
+
+# 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.
+
+"""
+test_designateclient
+----------------------------------
+
+Tests for `designateclient` module.
+"""
+
+from designateclient.tests import base
+
+
+class DummyTestCase(base.TestCase):
+
+    def test_dummy(self):
+        pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/utils.py 
new/python-designateclient-1.1.0/designateclient/utils.py
--- old/python-designateclient-1.0.2/designateclient/utils.py   2014-02-25 
14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/utils.py   2014-09-03 
22:07:41.000000000 +0200
@@ -14,10 +14,16 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
+import json
 import os
-import pkg_resources
 
-import json
+
+from keystoneclient import client as ksclient
+from keystoneclient.exceptions import DiscoveryFailure
+from keystoneclient.v2_0 import client as v2_ksclient
+from keystoneclient.v3 import client as v3_ksclient
+import pkg_resources
+import six.moves.urllib.parse as urlparse
 
 from designateclient import exceptions
 
@@ -91,3 +97,45 @@
 
     map(lambda item: map(_seen, item.keys()), data)
     return list(columns)
+
+
+def get_ksclient(username=None, user_id=None, user_domain_id=None,
+                 user_domain_name=None, password=None, tenant_id=None,
+                 tenant_name=None, domain_id=None, domain_name=None,
+                 project_id=None, project_name=None,
+                 project_domain_id=None, project_domain_name=None,
+                 auth_url=None, token=None, insecure=None):
+    kwargs = {
+        'username': username,
+        'user_domain_id': user_domain_id,
+        'user_domain_name': user_domain_name,
+        'password': password,
+        'tenant_id': tenant_id,
+        'tenant_name': tenant_name,
+        'domain_id': domain_id,
+        'domain_name': domain_name,
+        'project_id': project_id,
+        'project_name': project_name,
+        'project_domain_id': project_domain_id,
+        'project_domain_name': project_domain_name,
+        'auth_url': auth_url,
+        'token': token,
+        'insecure': insecure
+    }
+
+    try:
+        return ksclient.Client(**kwargs)
+    except DiscoveryFailure:
+        # Discovery response mismatch. Raise the error
+        raise
+    except Exception:
+        # Some public clouds throw some other exception or doesn't support
+        # discovery. In that case try to determine version from auth_url
+        # API version from the original URL
+        url_parts = urlparse.urlparse(auth_url)
+        (scheme, netloc, path, params, query, fragment) = url_parts
+        path = path.lower()
+        if path.startswith('/v3'):
+            return v3_ksclient.Client(**kwargs)
+        elif path.startswith('/v2'):
+            return v2_ksclient.Client(**kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/v1/__init__.py 
new/python-designateclient-1.1.0/designateclient/v1/__init__.py
--- old/python-designateclient-1.0.2/designateclient/v1/__init__.py     
2014-02-25 14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/v1/__init__.py     
2014-09-03 22:07:41.000000000 +0200
@@ -16,43 +16,50 @@
 import requests
 from stevedore import extension
 
-from designateclient.auth import KeystoneAuth
 from designateclient import exceptions
+from designateclient import utils
 
 
 class Client(object):
-    """ Client for the Designate v1 API """
+    """Client for the Designate v1 API"""
 
-    def __init__(self, endpoint=None, auth_url=None, username=None,
-                 password=None, tenant_id=None, tenant_name=None, token=None,
-                 region_name=None, service_type='dns',
-                 endpoint_type='publicURL', sudo_tenant_id=None,
+    def __init__(self, endpoint=None, username=None, user_id=None,
+                 user_domain_id=None, user_domain_name=None, password=None,
+                 tenant_name=None, tenant_id=None, domain_name=None,
+                 domain_id=None, project_name=None,
+                 project_id=None, project_domain_name=None,
+                 project_domain_id=None, auth_url=None, token=None,
+                 endpoint_type=None, region_name=None, service_type=None,
                  insecure=False):
         """
         :param endpoint: Endpoint URL
-        :param auth_url: Keystone auth_url
-        :param username: The username to auth with
-        :param password: The password to auth with
-        :param tenant_id: The tenant ID
-        :param tenant_name: The tenant name
         :param token: A token instead of username / password
-        :param region_name: The region name
-        :param endpoint_type: The endpoint type (publicURL for example)
         :param insecure: Allow "insecure" HTTPS requests
         """
-        if auth_url:
-            auth = KeystoneAuth(auth_url, username, password, tenant_id,
-                                tenant_name, token, service_type,
-                                endpoint_type, region_name, sudo_tenant_id)
-            if endpoint:
-                self.endpoint = endpoint.rstrip('/')
-            else:
-                self.endpoint = auth.get_url()
-        elif endpoint:
-            auth = None
-            self.endpoint = endpoint.rstrip('/')
-        else:
-            raise ValueError('Either an endpoint or auth_url must be supplied')
+        if not endpoint or not token:
+            ksclient = utils.get_ksclient(
+                username=username, user_id=user_id,
+                user_domain_id=user_domain_id,
+                user_domain_name=user_domain_name, password=password,
+                tenant_id=tenant_id, tenant_name=tenant_name,
+                project_id=project_id, project_name=project_name,
+                project_domain_id=project_domain_id,
+                project_domain_name=project_domain_name,
+                auth_url=auth_url,
+                token=token,
+                insecure=insecure)
+            ksclient.authenticate()
+
+            token = token or ksclient.auth_token
+
+            filters = {
+                'region_name': region_name,
+                'service_type': service_type,
+                'endpoint_type': endpoint_type,
+            }
+            endpoint = endpoint or self._get_endpoint(ksclient, **filters)
+
+        self.endpoint = endpoint.rstrip('/')
 
         # NOTE(kiall): As we're in the Version 1 client, we ensure we're
         #              pointing at the version 1 API.
@@ -67,7 +74,6 @@
             headers['X-Auth-Token'] = token
 
         self.requests = requests.Session()
-        self.requests.auth = auth
         self.requests.headers.update(headers)
 
         def _load_controller(ext):
@@ -113,6 +119,18 @@
         else:
             return response
 
+    def _get_endpoint(self, client, **kwargs):
+        """Get an endpoint using the provided keystone client."""
+        if kwargs.get('region_name'):
+            return client.service_catalog.url_for(
+                service_type=kwargs.get('service_type') or 'dns',
+                attr='region',
+                filter_value=kwargs.get('region_name'),
+                endpoint_type=kwargs.get('endpoint_type') or 'publicURL')
+        return client.service_catalog.url_for(
+            service_type=kwargs.get('service_type') or 'dns',
+            endpoint_type=kwargs.get('endpoint_type') or 'publicURL')
+
     def get(self, path, **kw):
         return self.wrap_api_call(self.requests.get, path, **kw)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/v1/base.py 
new/python-designateclient-1.1.0/designateclient/v1/base.py
--- old/python-designateclient-1.0.2/designateclient/v1/base.py 2014-02-25 
14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/v1/base.py 2014-09-03 
22:07:41.000000000 +0200
@@ -15,16 +15,18 @@
 # under the License.
 import abc
 
+import six
 
+
+@six.add_metaclass(abc.ABCMeta)
 class Controller(object):
-    __metaclass__ = abc.ABCMeta
 
     def __init__(self, client):
         self.client = client
 
 
+@six.add_metaclass(abc.ABCMeta)
 class CrudController(Controller):
-    __metaclass__ = abc.ABCMeta
 
     @abc.abstractmethod
     def list(self, *args, **kw):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/designateclient/v1/quotas.py 
new/python-designateclient-1.1.0/designateclient/v1/quotas.py
--- old/python-designateclient-1.0.2/designateclient/v1/quotas.py       
1970-01-01 01:00:00.000000000 +0100
+++ new/python-designateclient-1.1.0/designateclient/v1/quotas.py       
2014-09-03 22:07:41.000000000 +0200
@@ -0,0 +1,38 @@
+# Copyright 2014 Hewlett-Packard Development Company, L.P.
+#
+# Author: Endre Karlson <endre.karl...@hp.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+import json
+
+from designateclient.v1.base import Controller
+
+
+class QuotasController(Controller):
+    def get(self, tenant_id):
+        """
+        Ping a service on a given host
+        """
+        response = self.client.get('/quotas/%s' % tenant_id)
+
+        return response.json()
+
+    def update(self, tenant_id, values):
+        response = self.client.put('/quotas/%s' % tenant_id,
+                                   data=json.dumps(values))
+        return response.json()
+
+    def reset(self, tenant_id):
+        response = self.client.delete('/quotas/%s' % tenant_id)
+
+        return response
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-1.0.2/doc/requirements.txt 
new/python-designateclient-1.1.0/doc/requirements.txt
--- old/python-designateclient-1.0.2/doc/requirements.txt       2014-02-25 
14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/doc/requirements.txt       2014-09-03 
22:07:41.000000000 +0200
@@ -1,3 +1,2 @@
-sphinx>=1.1.2
 -r ../requirements.txt
 -r ../test-requirements.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-1.0.2/doc/source/bindings.rst 
new/python-designateclient-1.1.0/doc/source/bindings.rst
--- old/python-designateclient-1.0.2/doc/source/bindings.rst    2014-02-25 
14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/doc/source/bindings.rst    2014-09-03 
22:07:41.000000000 +0200
@@ -307,7 +307,7 @@
    domain_id = 'fb505f10-25df-11e3-8224-0800200c9a66'
 
    # Create a new Record object
-   record = Record(name="www.example.com.", type="A", content="127.0.0.1")
+   record = Record(name="www.example.com.", type="A", data="127.0.0.1")
 
    # Send the Create Record API call
    record = client.records.create(domain_id, record)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-1.0.2/doc/source/conf.py 
new/python-designateclient-1.1.0/doc/source/conf.py
--- old/python-designateclient-1.0.2/doc/source/conf.py 2014-02-25 
14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/doc/source/conf.py 2014-09-03 
22:07:41.000000000 +0200
@@ -25,7 +25,7 @@
 
 # Add any Sphinx extension module names here, as strings. They can be 
extensions
 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode']
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode', 'oslosphinx']
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
@@ -41,7 +41,7 @@
 
 # General information about the project.
 project = u'designateclient'
-copyright = u'2012, Managed I.T.'
+copyright = u'2012, Managed I.T. 2013-2014, Hewlett-Packard Development 
Company, L.P.'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
@@ -97,7 +97,7 @@
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
 # documentation.
-#html_theme_options = {}
+html_theme_options = {'incubating': True}
 
 # Add any paths that contain custom themes here, relative to this directory.
 #html_theme_path = []
@@ -185,7 +185,7 @@
 # (source start file, target name, title, author, documentclass 
[howto/manual]).
 latex_documents = [
   ('index', 'designateclient.tex', u'Designate Client Documentation',
-   u'Managed I.T.', 'manual'),
+   u'OpenStack', 'manual'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/python_designateclient.egg-info/PKG-INFO 
new/python-designateclient-1.1.0/python_designateclient.egg-info/PKG-INFO
--- old/python-designateclient-1.0.2/python_designateclient.egg-info/PKG-INFO   
2014-02-25 14:53:37.000000000 +0100
+++ new/python-designateclient-1.1.0/python_designateclient.egg-info/PKG-INFO   
2014-09-03 22:09:52.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: python-designateclient
-Version: 1.0.2
+Version: 1.1.0
 Summary: DNS as a Service - Client
 Home-page: https://launchpad.net/python-designateclientclient
 Author: Kiall Mac Innes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/python_designateclient.egg-info/SOURCES.txt 
new/python-designateclient-1.1.0/python_designateclient.egg-info/SOURCES.txt
--- 
old/python-designateclient-1.0.2/python_designateclient.egg-info/SOURCES.txt    
    2014-02-25 14:53:37.000000000 +0100
+++ 
new/python-designateclient-1.1.0/python_designateclient.egg-info/SOURCES.txt    
    2014-09-03 22:09:53.000000000 +0200
@@ -20,6 +20,7 @@
 designateclient/cli/base.py
 designateclient/cli/diagnostics.py
 designateclient/cli/domains.py
+designateclient/cli/quotas.py
 designateclient/cli/records.py
 designateclient/cli/reports.py
 designateclient/cli/servers.py
@@ -29,10 +30,13 @@
 designateclient/resources/schemas/v1/record.json
 designateclient/resources/schemas/v1/server.json
 designateclient/tests/__init__.py
+designateclient/tests/base.py
+designateclient/tests/test_designateclient.py
 designateclient/v1/__init__.py
 designateclient/v1/base.py
 designateclient/v1/diagnostics.py
 designateclient/v1/domains.py
+designateclient/v1/quotas.py
 designateclient/v1/records.py
 designateclient/v1/reports.py
 designateclient/v1/servers.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/python_designateclient.egg-info/entry_points.txt
 
new/python-designateclient-1.1.0/python_designateclient.egg-info/entry_points.txt
--- 
old/python-designateclient-1.0.2/python_designateclient.egg-info/entry_points.txt
   2014-02-25 14:53:37.000000000 +0100
+++ 
new/python-designateclient-1.1.0/python_designateclient.egg-info/entry_points.txt
   2014-09-03 22:09:52.000000000 +0200
@@ -1,38 +1,42 @@
 [designateclient.cli]
-domain-list = designateclient.cli.domains:ListDomainsCommand
-report-count-tenants = designateclient.cli.reports:TenantCountCommand
 diagnostics-ping = designateclient.cli.diagnostics:PingCommand
-report-tenants-all = designateclient.cli.reports:TenantsCommand
-record-update = designateclient.cli.records:UpdateRecordCommand
+domain-create = designateclient.cli.domains:CreateDomainCommand
+domain-delete = designateclient.cli.domains:DeleteDomainCommand
+domain-get = designateclient.cli.domains:GetDomainCommand
+domain-list = designateclient.cli.domains:ListDomainsCommand
 domain-servers-list = designateclient.cli.domains:ListDomainServersCommand
-server-delete = designateclient.cli.servers:DeleteServerCommand
+domain-update = designateclient.cli.domains:UpdateDomainCommand
+quota-get = designateclient.cli.quotas:GetQuotaCommand
+quota-reset = designateclient.cli.quotas:ResetQuotaCommand
+quota-update = designateclient.cli.quotas:UpdateQuotaCommand
 record-create = designateclient.cli.records:CreateRecordCommand
-report-count-all = designateclient.cli.reports:CountsCommand
 record-delete = designateclient.cli.records:DeleteRecordCommand
+record-get = designateclient.cli.records:GetRecordCommand
+record-list = designateclient.cli.records:ListRecordsCommand
+record-update = designateclient.cli.records:UpdateRecordCommand
+report-count-all = designateclient.cli.reports:CountsCommand
+report-count-domains = designateclient.cli.reports:DomainCountCommand
+report-count-records = designateclient.cli.reports:RecordCountCommand
+report-count-tenants = designateclient.cli.reports:TenantCountCommand
+report-tenant-domains = designateclient.cli.reports:TenantCommand
+report-tenants-all = designateclient.cli.reports:TenantsCommand
 server-create = designateclient.cli.servers:CreateServerCommand
+server-delete = designateclient.cli.servers:DeleteServerCommand
+server-get = designateclient.cli.servers:GetServerCommand
+server-list = designateclient.cli.servers:ListServersCommand
 server-update = designateclient.cli.servers:UpdateServerCommand
-domain-get = designateclient.cli.domains:GetDomainCommand
-sync-domain = designateclient.cli.sync:SyncDomainCommand
-touch-domain = designateclient.cli.touch:TouchDomainCommand
 sync-all = designateclient.cli.sync:SyncAllCommand
-report-tenant-domains = designateclient.cli.reports:TenantCommand
-domain-update = designateclient.cli.domains:UpdateDomainCommand
-server-get = designateclient.cli.servers:GetServerCommand
+sync-domain = designateclient.cli.sync:SyncDomainCommand
 sync-record = designateclient.cli.sync:SyncRecordCommand
-report-count-domains = designateclient.cli.reports:DomainCountCommand
-domain-create = designateclient.cli.domains:CreateDomainCommand
-report-count-records = designateclient.cli.reports:RecordCountCommand
-server-list = designateclient.cli.servers:ListServersCommand
-record-get = designateclient.cli.records:GetRecordCommand
-record-list = designateclient.cli.records:ListRecordsCommand
-domain-delete = designateclient.cli.domains:DeleteDomainCommand
+touch-domain = designateclient.cli.touch:TouchDomainCommand
 
 [designateclient.v1.controllers]
-touch = designateclient.v1.touch:TouchController
-sync = designateclient.v1.sync:SyncController
-reports = designateclient.v1.reports:ReportsController
-servers = designateclient.v1.servers:ServersController
-records = designateclient.v1.records:RecordsController
 diagnostics = designateclient.v1.diagnostics:DiagnosticsController
 domains = designateclient.v1.domains:DomainsController
+quotas = designateclient.v1.quotas:QuotasController
+records = designateclient.v1.records:RecordsController
+reports = designateclient.v1.reports:ReportsController
+servers = designateclient.v1.servers:ServersController
+sync = designateclient.v1.sync:SyncController
+touch = designateclient.v1.touch:TouchController
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-designateclient-1.0.2/python_designateclient.egg-info/requires.txt 
new/python-designateclient-1.1.0/python_designateclient.egg-info/requires.txt
--- 
old/python-designateclient-1.0.2/python_designateclient.egg-info/requires.txt   
    2014-02-25 14:53:37.000000000 +0100
+++ 
new/python-designateclient-1.1.0/python_designateclient.egg-info/requires.txt   
    2014-09-03 22:09:52.000000000 +0200
@@ -1,6 +1,7 @@
-cliff>=1.4.3
+cliff>=1.6.0
 jsonschema>=2.0.0,<3.0.0
-pbr>=0.6,<1.0
-python-keystoneclient>=0.6.0
-requests>=1.1
+pbr>=0.6,!=0.7,<1.0
+python-keystoneclient>=0.10.0
+requests>=1.2.1
+six>=1.7.0
 stevedore>=0.14
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-1.0.2/requirements.txt 
new/python-designateclient-1.1.0/requirements.txt
--- old/python-designateclient-1.0.2/requirements.txt   2014-02-25 
14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/requirements.txt   2014-09-03 
22:07:41.000000000 +0200
@@ -1,6 +1,7 @@
-cliff>=1.4.3
+cliff>=1.6.0
 jsonschema>=2.0.0,<3.0.0
-pbr>=0.6,<1.0
-python-keystoneclient>=0.6.0
-requests>=1.1
+pbr>=0.6,!=0.7,<1.0
+python-keystoneclient>=0.10.0
+requests>=1.2.1
+six>=1.7.0
 stevedore>=0.14
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-1.0.2/setup.cfg 
new/python-designateclient-1.1.0/setup.cfg
--- old/python-designateclient-1.0.2/setup.cfg  2014-02-25 14:53:37.000000000 
+0100
+++ new/python-designateclient-1.1.0/setup.cfg  2014-09-03 22:09:53.000000000 
+0200
@@ -35,6 +35,7 @@
        domains = designateclient.v1.domains:DomainsController
        records = designateclient.v1.records:RecordsController
        servers = designateclient.v1.servers:ServersController
+       quotas = designateclient.v1.quotas:QuotasController
        sync = designateclient.v1.sync:SyncController
        touch = designateclient.v1.touch:TouchController
 designateclient.cli = 
@@ -65,6 +66,9 @@
        report-count-tenants = designateclient.cli.reports:TenantCountCommand
        report-tenants-all = designateclient.cli.reports:TenantsCommand
        report-tenant-domains = designateclient.cli.reports:TenantCommand
+       quota-get = designateclient.cli.quotas:GetQuotaCommand
+       quota-update = designateclient.cli.quotas:UpdateQuotaCommand
+       quota-reset = designateclient.cli.quotas:ResetQuotaCommand
 
 [build_sphinx]
 all_files = 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-1.0.2/setup.py 
new/python-designateclient-1.1.0/setup.py
--- old/python-designateclient-1.0.2/setup.py   2014-02-25 14:52:56.000000000 
+0100
+++ new/python-designateclient-1.1.0/setup.py   2014-09-03 22:07:41.000000000 
+0200
@@ -17,6 +17,14 @@
 # THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
 import setuptools
 
+# In python < 2.7.4, a lazy loading of package `pbr` will break
+# setuptools if some other modules registered functions in `atexit`.
+# solution from: http://bugs.python.org/issue15881#msg170215
+try:
+    import multiprocessing  # noqa
+except ImportError:
+    pass
+
 setuptools.setup(
     setup_requires=['pbr'],
     pbr=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-1.0.2/test-requirements.txt 
new/python-designateclient-1.1.0/test-requirements.txt
--- old/python-designateclient-1.0.2/test-requirements.txt      2014-02-25 
14:52:56.000000000 +0100
+++ new/python-designateclient-1.1.0/test-requirements.txt      2014-09-03 
22:07:41.000000000 +0200
@@ -1,6 +1,9 @@
 # Hacking already pins down pep8, pyflakes and flake8
-hacking>=0.8.0,<0.9
+hacking>=0.9.2,<0.10
 coverage>=3.6
 discover
 python-subunit>=0.0.18
-testrepository>=0.0.17
+sphinx>=1.1.2,!=1.2.0,<1.3
+testrepository>=0.0.18
+# Needed for the incubation theme on oslosphinx
+http://tarballs.openstack.org/oslosphinx/oslosphinx-2.2.0.0a3.tar.gz#egg=oslosphinx-2.2.0.0a3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-designateclient-1.0.2/tox.ini 
new/python-designateclient-1.1.0/tox.ini
--- old/python-designateclient-1.0.2/tox.ini    2014-02-25 14:52:56.000000000 
+0100
+++ new/python-designateclient-1.1.0/tox.ini    2014-09-03 22:07:41.000000000 
+0200
@@ -33,6 +33,14 @@
 commands = {posargs}
 
 [flake8]
-ignore = H302,H401,H402,H404
+# ignored flake8 codes:
+# H302 import only modules
+# H402 one line docstring needs punctuation
+# H404 multi line docstring should start with a summary
+# H405 multi line docstring summary not separated with an empty line
+# H904 Wrap long lines in parentheses instead of a backslash
+# See designate for other ignored codes that may apply here
+
+ignore = H302,H402,H404,H405,H904
 builtins = _
 exclude = 
.venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,tools


Reply via email to