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