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 - [email protected]
+Wed Sep 10 15:10:18 UTC 2014 - [email protected]
@@ -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 - [email protected]
+
+- 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 - [email protected]
+
+- Update to version python-designateclient-1.0.3.15.g5e69886:
+ * Add support for SOA records
+
+-------------------------------------------------------------------
+Thu Aug 14 23:44:32 UTC 2014 - [email protected]
+
+- Update to version python-designateclient-1.0.3.14.gedbc00a:
+ * Updated from global requirements
+
+-------------------------------------------------------------------
+Mon Aug 11 11:37:21 UTC 2014 - [email protected]
+
+- Update to version python-designateclient-1.0.3.13.g32e7a64:
+ * Updated from global requirements
+
+-------------------------------------------------------------------
+Fri Aug 1 23:47:49 UTC 2014 - [email protected]
+
+- 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 - [email protected]
+
+- 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 - [email protected]
+
+- 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 - [email protected]
+
+- Update to version python-designateclient-1.0.3.6.gd4498bd:
+ * Support better logging (Fixes --debug option
+
+-------------------------------------------------------------------
+Thu Jul 3 00:33:33 UTC 2014 - [email protected]
+
+- 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 - [email protected]
+
+- Update to version python-designateclient-1.0.3.4.g5726896:
+ * Updated from global requirements
+
+-------------------------------------------------------------------
+Sun Jun 29 00:31:08 UTC 2014 - [email protected]
+
+- Update to version python-designateclient-1.0.3.3.g469afe1:
+ * Update .gitreview for repository move
+
+-------------------------------------------------------------------
+Sat Jun 7 00:38:37 UTC 2014 - [email protected]
+
+- 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 - [email protected]
+
+- 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 - [email protected]
+
+- 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 <[email protected]>
+Brian DeHamer <[email protected]>
+Christian Berendt <[email protected]>
+Davide Guerri <[email protected]>
+Dirk Mueller <[email protected]>
+Endre Karlson <[email protected]>
+Endre Karlson <[email protected]>
+Graham Hayes <[email protected]>
+Jordan Cazamias <[email protected]>
+Kiall Mac Innes <[email protected]>
+Kiall Mac Innes <[email protected]>
+Marcus Furlong <[email protected]>
+Monty Taylor <[email protected]>
+Patrick Galbraith <[email protected]>
+Pavel Kirpichyov <[email protected]>
+Sascha Peilicke <[email protected]>
+Sascha Peilicke <[email protected]>
+Shane Wang <[email protected]>
+Simon McCartney <[email protected]>
+rjrjr <[email protected]>
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
[email protected]_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 <[email protected]>
+#
+# 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
+
[email protected]_metaclass(abc.ABCMeta)
class Controller(object):
- __metaclass__ = abc.ABCMeta
def __init__(self, client):
self.client = client
[email protected]_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 <[email protected]>
+#
+# 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