diff -Nru python-manilaclient-1.8.1/CONTRIBUTING.rst python-manilaclient-1.9.0/CONTRIBUTING.rst --- python-manilaclient-1.8.1/CONTRIBUTING.rst 1970-01-01 00:00:00.000000000 +0000 +++ python-manilaclient-1.9.0/CONTRIBUTING.rst 2016-05-30 00:39:06.000000000 +0000 @@ -0,0 +1,16 @@ +If you would like to contribute to the development of OpenStack, +you must follow the steps documented at: + + http://docs.openstack.org/infra/manual/developers.html + +Once those steps have been completed, changes to OpenStack +should be submitted for review via the Gerrit tool, following +the workflow documented at: + + http://docs.openstack.org/infra/manual/developers.html#development-workflow + +Pull requests submitted through GitHub will be ignored. + +Bugs should be filed on Launchpad, not GitHub: + + https://bugs.launchpad.net/python-manilaclient diff -Nru python-manilaclient-1.8.1/debian/changelog python-manilaclient-1.9.0/debian/changelog --- python-manilaclient-1.8.1/debian/changelog 2016-04-04 16:29:38.000000000 +0000 +++ python-manilaclient-1.9.0/debian/changelog 2016-07-13 17:36:55.000000000 +0000 @@ -1,3 +1,21 @@ +python-manilaclient (1.9.0-1~ubuntu16.10.1~ppa201607131336) yakkety; urgency=medium + + * No-change backport to yakkety + + -- Corey Bryant Wed, 13 Jul 2016 13:36:55 -0400 + +python-manilaclient (1.9.0-1) experimental; urgency=medium + + [ Ondřej Nový ] + * Standards-Version is 3.9.8 now (no change) + + [ Thomas Goirand ] + * New upstream release. + * Fixed (build-)depends for this release. + * Using pkgos-dh_auto_{test,install} from openstack-pkg-tools >= 52~. + + -- Thomas Goirand Tue, 12 Jul 2016 21:03:34 +0200 + python-manilaclient (1.8.1-2) unstable; urgency=medium * Uploading to unstable. diff -Nru python-manilaclient-1.8.1/debian/control python-manilaclient-1.9.0/debian/control --- python-manilaclient-1.8.1/debian/control 2016-04-04 16:29:38.000000000 +0000 +++ python-manilaclient-1.9.0/debian/control 2016-07-13 16:27:56.000000000 +0000 @@ -7,7 +7,7 @@ Corey Bryant , Build-Depends: debhelper (>= 9), dh-python, - openstack-pkg-tools, + openstack-pkg-tools (>= 52~), python-all, python-pbr (>= 1.8), python-setuptools, @@ -15,72 +15,68 @@ python3-all, python3-pbr (>= 1.8), python3-setuptools, -Build-Depends-Indep: python-babel, +Build-Depends-Indep: python-babel (>= 2.3.4), python-coverage, - python-crypto, python-ddt (>= 1.0.1), - python-fixtures (>= 1.3.1), + python-fixtures (>= 3.0.0), python-hacking (>= 0.9.2), - python-iso8601, - python-keystoneclient (>= 1:1.6.0), - python-mock (>= 1.3), + python-keystoneclient (>= 1:1.7.0), + python-mock (>= 2.0), python-openstackclient (>= 2.1.0), - python-oslo.config (>= 1:3.7.0), + python-oslo.config (>= 1:3.9.0), python-oslo.log (>= 1.14.0), python-oslo.serialization (>= 1.10.0), python-oslo.utils (>= 3.5.0), python-oslosphinx (>= 2.5.0), python-oslotest (>= 1.10.0), python-prettytable, - python-requests (>= 2.8.1), + python-requests (>= 2.10.0), python-simplejson, python-six (>= 1.9.0), - python-tempest-lib (>= 0.14.0), + python-tempest (>= 1:12.1.0), python-testtools (>= 1.4.0), - python3-babel, - python3-crypto, + python3-babel (>= 2.3.4), python3-ddt (>= 1.0.1), - python3-fixtures (>= 1.3.1), - python3-iso8601, + python3-fixtures (>= 3.0.0), python3-keystoneclient (>= 1:1.6.0), - python3-mock (>= 1.3), + python3-mock (>= 2.0), python3-openstackclient (>= 2.1.0), - python3-oslo.config (>= 1:3.7.0), + python3-oslo.config (>= 1:3.9.0), python3-oslo.log (>= 1.14.0), python3-oslo.serialization (>= 1.10.0), python3-oslo.utils (>= 3.5.0), python3-oslotest (>= 1.10.0), python3-prettytable, - python3-requests (>= 2.8.1), + python3-requests (>= 2.10.0), python3-simplejson, python3-six (>= 1.9.0), python3-subunit, - python3-tempest-lib (>= 0.14.0), + python3-tempest (>= 1:12.1.0), python3-testtools (>= 1.4.0), subunit, + tempest (>= 1:12.1.0), testrepository, -Standards-Version: 3.9.7 +Standards-Version: 3.9.8 Vcs-Git: https://anonscm.debian.org/git/openstack/python-manilaclient.git Vcs-Browser: https://anonscm.debian.org/cgit/openstack/python-manilaclient.git/ Homepage: https://github.com/openstack/python-manilaclient Package: python-manilaclient Architecture: all -Depends: python-babel, - python-crypto, - python-iso8601, - python-keystoneclient (>= 1:1.6.0), - python-oslo.config (>= 1:3.7.0), +Depends: python-babel (>= 2.3.4), + python-keystoneclient (>= 1:1.7.0), + python-oslo.config (>= 1:3.9.0), python-oslo.log (>= 1.14.0), python-oslo.serialization (>= 1.10.0), python-oslo.utils (>= 3.5.0), python-pbr (>= 1.8), python-prettytable, - python-requests (>= 2.8.1), + python-requests (>= 2.10.0), python-simplejson, python-six (>= 1.9.0), ${misc:Depends}, ${python:Depends}, +Recommends: python-manilaclient-doc, Description: OpenStack shared file system as a service - Python 2.7 client Manila is an OpenStack project to provide Shared Filesystems as a service. It provides coordinated access to shared or distributed file systems. While @@ -96,21 +92,20 @@ Package: python3-manilaclient Architecture: all -Depends: python3-babel, - python3-crypto, - python3-iso8601, - python3-keystoneclient (>= 1:1.6.0), - python3-oslo.config (>= 1:3.7.0), +Depends: python3-babel (>= 2.3.4), + python3-keystoneclient (>= 1:1.7.0), + python3-oslo.config (>= 1:3.9.0), python3-oslo.log (>= 1.14.0), python3-oslo.serialization (>= 1.10.0), python3-oslo.utils (>= 3.5.0), python3-pbr (>= 1.8), python3-prettytable, - python3-requests (>= 2.8.1), + python3-requests (>= 2.10.0), python3-simplejson, python3-six (>= 1.9.0), ${misc:Depends}, ${python3:Depends}, +Recommends: python-manilaclient-doc, Description: OpenStack shared file system as a service - Python 3.x client Manila is an OpenStack project to provide Shared Filesystems as a service. It provides coordinated access to shared or distributed file systems. While diff -Nru python-manilaclient-1.8.1/debian/gbp.conf python-manilaclient-1.9.0/debian/gbp.conf --- python-manilaclient-1.8.1/debian/gbp.conf 2016-04-04 16:29:38.000000000 +0000 +++ python-manilaclient-1.9.0/debian/gbp.conf 2016-07-13 16:27:56.000000000 +0000 @@ -1,6 +1,6 @@ [DEFAULT] upstream-branch = master -debian-branch = debian/mitaka +debian-branch = debian/newton upstream-tag = %(version)s compression = xz diff -Nru python-manilaclient-1.8.1/debian/rules python-manilaclient-1.9.0/debian/rules --- python-manilaclient-1.8.1/debian/rules 2016-04-04 16:29:38.000000000 +0000 +++ python-manilaclient-1.9.0/debian/rules 2016-07-13 16:27:56.000000000 +0000 @@ -1,42 +1,20 @@ #!/usr/bin/make -f -PYTHONS:=$(shell pyversions -vr) -PYTHON3S:=$(shell py3versions -vr) - include /usr/share/openstack-pkg-tools/pkgos.make -export OSLO_PACKAGE_VERSION=$(VERSION) %: dh $@ --buildsystem=python_distutils --with python2,python3,sphinxdoc override_dh_auto_install: - set -e ; for pyvers in $(PYTHONS); do \ - python$$pyvers setup.py install --install-layout=deb \ - --root $(CURDIR)/debian/python-manilaclient; \ - done - set -e ; for pyvers in $(PYTHON3S); do \ - python$$pyvers setup.py install --install-layout=deb \ - --root $(CURDIR)/debian/python3-manilaclient; \ - done - rm -f $(CURDIR)/debian/python*/usr/lib/python*/dist-packages/*.pth + pkgos-dh_auto_install install -D -m 0644 tools/manila.bash_completion $(CURDIR)/debian/python-manilaclient-doc/usr/share/bash-completion/completions/manila.bash_completion - mv $(CURDIR)/debian/python-manilaclient/usr/bin/manila $(CURDIR)/debian/python-manilaclient/usr/bin/python2-manila - mv $(CURDIR)/debian/python3-manilaclient/usr/bin/manila $(CURDIR)/debian/python3-manilaclient/usr/bin/python3-manila + +override_dh_python3: + dh_python3 --shebang=/usr/bin/python3 override_dh_auto_test: ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS))) - @echo "===> Running tests" - set -e ; set -x ; for i in 2.7 $(PYTHON3S) ; do \ - PYMAJOR=`echo $$i | cut -d'.' -f1` ; \ - echo "===> Testing with python$$i (python$$PYMAJOR)" ; \ - rm -rf .testrepository ; \ - testr-python$$PYMAJOR init ; \ - TEMP_REZ=`mktemp -t` ; \ - PYTHONPATH=$(CURDIR) PYTHON=python$$i testr-python$$PYMAJOR run --subunit | tee $$TEMP_REZ | subunit2pyunit ; \ - cat $$TEMP_REZ | subunit-filter -s --no-passthrough | subunit-stats ; \ - rm -f $$TEMP_REZ ; \ - testr-python$$PYMAJOR slowest ; \ - done + pkgos-dh_auto_test endif override_dh_auto_clean: diff -Nru python-manilaclient-1.8.1/doc/source/index.rst python-manilaclient-1.9.0/doc/source/index.rst --- python-manilaclient-1.8.1/doc/source/index.rst 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/doc/source/index.rst 2016-05-30 00:39:06.000000000 +0000 @@ -43,18 +43,26 @@ ---------------- Functional CLI tests require several things to be able to run: -- Deployed and working manila service. -- Configured config file. + +* Deployed and working manila service. +* Configured config file. Config file is used to get information like 'auth_url', 'username', 'tenant_name' and 'password'. To get config sample need to run following 'tox' job: -$ tox -e genconfig + +.. code-block:: console + + $ tox -e genconfig + This will create file 'etc/manilaclient/manilaclient.conf.sample' with all available config opts. Then rename it removing ".sample" and set values for opts there. After it, tests can be run using following tox job: -$ tox -e functional + +.. code-block:: console + + $ tox -e functional Indices and tables ================== diff -Nru python-manilaclient-1.8.1/.gitignore python-manilaclient-1.9.0/.gitignore --- python-manilaclient-1.8.1/.gitignore 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/.gitignore 2016-05-30 00:39:06.000000000 +0000 @@ -15,3 +15,5 @@ AUTHORS ChangeLog doc/source/manila_cli_output.rst.inc +# Files created by releasenotes build +releasenotes/build diff -Nru python-manilaclient-1.8.1/manilaclient/api_versions.py python-manilaclient-1.9.0/manilaclient/api_versions.py --- python-manilaclient-1.8.1/manilaclient/api_versions.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/api_versions.py 2016-05-30 00:39:06.000000000 +0000 @@ -25,11 +25,7 @@ from manilaclient.openstack.common import cliutils from manilaclient import utils - LOG = logging.getLogger(__name__) -if not LOG.handlers: - LOG.addHandler(logging.StreamHandler()) - MAX_VERSION = '2.15' MIN_VERSION = '2.0' @@ -245,7 +241,8 @@ """Discovers the most recent version for client and API. Checks 'requested_version' and returns the most recent version - supported by both the API and the client. + supported by both the API and the client. If there is not a supported + version then an UnsupportedVersion exception is thrown. :param client: client object :param requested_version: requested version represented by APIVersion obj @@ -256,14 +253,15 @@ valid_version = requested_version if server_start_version.is_null() and server_end_version.is_null(): - LOG.warning("Server does not support microversions. Changing server " - "version to %(min_version)s." % - {"min_version": DEPRECATED_VERSION}) + msg = ("Server does not support microversions. Changing server " + "version to %(min_version)s.") + LOG.debug(msg, {"min_version": DEPRECATED_VERSION}) valid_version = APIVersion(DEPRECATED_VERSION) else: - _validate_requested_version(requested_version, - server_start_version, - server_end_version) + valid_version = _validate_requested_version( + requested_version, + server_start_version, + server_end_version) _validate_server_version(server_start_version, server_end_version) return valid_version @@ -275,18 +273,34 @@ """Validates the requested version. Checks 'requested_version' is within the min/max range supported by the - server. + server. If 'requested_version' is not within range then attempts to + downgrade to 'server_end_version'. Otherwise an UnsupportedVersion + exception is thrown. :param requested_version: requestedversion represented by APIVersion obj :param server_start_version: APIVersion object representing server min :param server_end_version: APIVersion object representing server max """ + valid_version = requested_version if not requested_version.matches(server_start_version, server_end_version): - raise exceptions.UnsupportedVersion( - _("The specified version isn't supported by server. The valid " - "version range is '%(min)s' to '%(max)s'") % { - "min": server_start_version.get_string(), - "max": server_end_version.get_string()}) + if server_end_version <= requested_version: + if (manilaclient.API_MIN_VERSION <= server_end_version and + server_end_version <= manilaclient.API_MAX_VERSION): + msg = _("Requested version %(requested_version)s is " + "not supported. Downgrading requested version " + "to %(server_end_version)s.") + LOG.debug(msg, { + "requested_version": requested_version, + "server_end_version": server_end_version}) + valid_version = server_end_version + else: + raise exceptions.UnsupportedVersion( + _("The specified version isn't supported by server. The valid " + "version range is '%(min)s' to '%(max)s'") % { + "min": server_start_version.get_string(), + "max": server_end_version.get_string()}) + + return valid_version def _validate_server_version(server_start_version, server_end_version): diff -Nru python-manilaclient-1.8.1/manilaclient/common/httpclient.py python-manilaclient-1.9.0/manilaclient/common/httpclient.py --- python-manilaclient-1.8.1/manilaclient/common/httpclient.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/common/httpclient.py 2016-05-30 00:39:06.000000000 +0000 @@ -199,4 +199,4 @@ 'code': resp.status_code, 'headers': resp.headers, 'body': resp.text - }) \ No newline at end of file + }) diff -Nru python-manilaclient-1.8.1/manilaclient/shell.py python-manilaclient-1.9.0/manilaclient/shell.py --- python-manilaclient-1.8.1/manilaclient/shell.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/shell.py 2016-05-30 00:39:06.000000000 +0000 @@ -55,10 +55,21 @@ def __call__(self, parser, namespace, values, option_string=None): # NOTE(vponomaryov): this method is redefinition of # argparse.Action.__call__ interface - if getattr(namespace, self.dest) is not None: + + if not hasattr(self, 'calls'): + self.calls = {} + + if self.dest not in self.calls: + self.calls[self.dest] = set() + + local_values = sorted(values) if isinstance(values, list) else values + self.calls[self.dest].add(six.text_type(local_values)) + + if len(self.calls[self.dest]) == 1: + setattr(namespace, self.dest, local_values) + else: msg = "Only one alias is allowed at a time." raise argparse.ArgumentError(self, msg) - setattr(namespace, self.dest, values) class ManilaClientArgumentParser(argparse.ArgumentParser): @@ -248,6 +259,22 @@ parser.add_argument('--os_region_name', help=argparse.SUPPRESS) + parser.add_argument('--os-token', + metavar='', + default=cliutils.env('OS_TOKEN'), + help='Defaults to env[OS_TOKEN].') + parser.add_argument('--os_token', + help=argparse.SUPPRESS) + + parser.add_argument('--bypass-url', + metavar='', + default=cliutils.env('MANILACLIENT_BYPASS_URL'), + help=("Use this API endpoint instead of the " + "Service Catalog. Defaults to " + "env[MANILACLIENT_BYPASS_URL].")) + parser.add_argument('--bypass_url', + help=argparse.SUPPRESS) + parser.add_argument('--service-type', metavar='', help='Defaults to compute for most actions.') @@ -414,11 +441,11 @@ if not debug: return - streamhandler = logging.StreamHandler() streamformat = "%(levelname)s (%(module)s:%(lineno)d) %(message)s" - streamhandler.setFormatter(logging.Formatter(streamformat)) - logger.setLevel(logging.DEBUG) - logger.addHandler(streamhandler) + logging.basicConfig(level=logging.DEBUG, format=streamformat) + logging.getLogger('requests.packages.urllib3.connectionpool' + ).setLevel(logging.WARNING) + logging.getLogger('keystoneclient.session').setLevel(logging.WARNING) def _build_subcommands_and_extensions(self, os_api_version, @@ -489,17 +516,19 @@ project_domain_id=args.os_project_domain_id, project_domain_name=args.os_project_domain_name, cert=args.os_cert, + input_auth_token=args.os_token, + service_catalog_url=args.bypass_url, ) # Handle deprecated parameters if args.share_service_name: client_args['share_service_name'] = args.share_service_name - self._validate_required_options(args.os_tenant_name, - args.os_tenant_id, - args.os_project_name, - args.os_project_id, - client_args['auth_url']) + self._validate_required_options( + args.os_tenant_name, args.os_tenant_id, + args.os_project_name, args.os_project_id, + args.os_token, args.bypass_url, + client_args['auth_url']) # This client is needed to discover the server api version. temp_client = client.Client(manilaclient.API_MAX_VERSION, @@ -564,15 +593,12 @@ options.os_share_api_version) return api_version - def _validate_required_options(self, - os_tenant_name, - os_tenant_id, - os_project_name, - os_project_id, - os_auth_url): - - if not (os_tenant_name or os_tenant_id or os_project_name or - os_project_id): + def _validate_required_options(self, tenant_name, tenant_id, + project_name, project_id, + token, service_catalog_url, auth_url): + if token and service_catalog_url: + return + if not (tenant_name or tenant_id or project_name or project_id): raise exc.CommandError( "You must provide a tenant_name, tenant_id, " "project_id or project_name (with " @@ -585,7 +611,7 @@ "--os-project-domain-name (env[OS_PROJECT_DOMAIN_NAME])." ) - if not os_auth_url: + if not auth_url: raise exc.CommandError( "You must provide an auth url " "via either --os-auth-url or env[OS_AUTH_URL]") diff -Nru python-manilaclient-1.8.1/manilaclient/tests/functional/base.py python-manilaclient-1.9.0/manilaclient/tests/functional/base.py --- python-manilaclient-1.8.1/manilaclient/tests/functional/base.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/functional/base.py 2016-05-30 00:39:06.000000000 +0000 @@ -16,8 +16,8 @@ import traceback from oslo_log import log -from tempest_lib.cli import base -from tempest_lib import exceptions as lib_exc +from tempest.lib.cli import base +from tempest.lib import exceptions as lib_exc from manilaclient import config from manilaclient.tests.functional import client diff -Nru python-manilaclient-1.8.1/manilaclient/tests/functional/client.py python-manilaclient-1.9.0/manilaclient/tests/functional/client.py --- python-manilaclient-1.8.1/manilaclient/tests/functional/client.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/functional/client.py 2016-05-30 00:39:06.000000000 +0000 @@ -18,10 +18,10 @@ from oslo_utils import strutils import six -from tempest_lib.cli import base -from tempest_lib.cli import output_parser -from tempest_lib.common.utils import data_utils -from tempest_lib import exceptions as tempest_lib_exc +from tempest.lib.cli import base +from tempest.lib.cli import output_parser +from tempest.lib.common.utils import data_utils +from tempest.lib import exceptions as tempest_lib_exc from manilaclient import config from manilaclient.tests.functional import exceptions diff -Nru python-manilaclient-1.8.1/manilaclient/tests/functional/exceptions.py python-manilaclient-1.9.0/manilaclient/tests/functional/exceptions.py --- python-manilaclient-1.8.1/manilaclient/tests/functional/exceptions.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/functional/exceptions.py 2016-05-30 00:39:06.000000000 +0000 @@ -13,7 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. -from tempest_lib import exceptions +from tempest.lib import exceptions """ Exceptions for functional tests. diff -Nru python-manilaclient-1.8.1/manilaclient/tests/functional/test_quotas.py python-manilaclient-1.9.0/manilaclient/tests/functional/test_quotas.py --- python-manilaclient-1.8.1/manilaclient/tests/functional/test_quotas.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/functional/test_quotas.py 2016-05-30 00:39:06.000000000 +0000 @@ -14,7 +14,7 @@ # under the License. import ddt -from tempest_lib import exceptions +from tempest.lib import exceptions from manilaclient.tests.functional import base from manilaclient.tests.functional import utils diff -Nru python-manilaclient-1.8.1/manilaclient/tests/functional/test_scheduler_stats.py python-manilaclient-1.9.0/manilaclient/tests/functional/test_scheduler_stats.py --- python-manilaclient-1.8.1/manilaclient/tests/functional/test_scheduler_stats.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/functional/test_scheduler_stats.py 2016-05-30 00:39:06.000000000 +0000 @@ -12,7 +12,7 @@ # License for the specific language governing permissions and limitations # under the License. -from tempest_lib import exceptions +from tempest.lib import exceptions from manilaclient.tests.functional import base diff -Nru python-manilaclient-1.8.1/manilaclient/tests/functional/test_security_services.py python-manilaclient-1.9.0/manilaclient/tests/functional/test_security_services.py --- python-manilaclient-1.8.1/manilaclient/tests/functional/test_security_services.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/functional/test_security_services.py 2016-05-30 00:39:06.000000000 +0000 @@ -14,7 +14,7 @@ # under the License. import ddt -from tempest_lib.common.utils import data_utils +from tempest.lib.common.utils import data_utils from manilaclient.tests.functional import base diff -Nru python-manilaclient-1.8.1/manilaclient/tests/functional/test_share_access.py python-manilaclient-1.9.0/manilaclient/tests/functional/test_share_access.py --- python-manilaclient-1.8.1/manilaclient/tests/functional/test_share_access.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/functional/test_share_access.py 2016-05-30 00:39:06.000000000 +0000 @@ -14,7 +14,7 @@ # under the License. import ddt -from tempest_lib import exceptions as tempest_lib_exc +from tempest.lib import exceptions as tempest_lib_exc from manilaclient import config from manilaclient.tests.functional import base diff -Nru python-manilaclient-1.8.1/manilaclient/tests/functional/test_share_networks.py python-manilaclient-1.9.0/manilaclient/tests/functional/test_share_networks.py --- python-manilaclient-1.8.1/manilaclient/tests/functional/test_share_networks.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/functional/test_share_networks.py 2016-05-30 00:39:06.000000000 +0000 @@ -15,8 +15,8 @@ import ddt import six -from tempest_lib.common.utils import data_utils -from tempest_lib import exceptions as tempest_lib_exc +from tempest.lib.common.utils import data_utils +from tempest.lib import exceptions as tempest_lib_exc from manilaclient.tests.functional import base diff -Nru python-manilaclient-1.8.1/manilaclient/tests/functional/test_share_servers.py python-manilaclient-1.9.0/manilaclient/tests/functional/test_share_servers.py --- python-manilaclient-1.8.1/manilaclient/tests/functional/test_share_servers.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/functional/test_share_servers.py 2016-05-30 00:39:06.000000000 +0000 @@ -14,7 +14,7 @@ # under the License. import ddt -from tempest_lib import exceptions +from tempest.lib import exceptions from manilaclient.tests.functional import base diff -Nru python-manilaclient-1.8.1/manilaclient/tests/functional/test_shares_listing.py python-manilaclient-1.9.0/manilaclient/tests/functional/test_shares_listing.py --- python-manilaclient-1.8.1/manilaclient/tests/functional/test_shares_listing.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/functional/test_shares_listing.py 2016-05-30 00:39:06.000000000 +0000 @@ -14,8 +14,8 @@ # under the License. import ddt -from tempest_lib.common.utils import data_utils -from tempest_lib import exceptions +from tempest.lib.common.utils import data_utils +from tempest.lib import exceptions import testtools from manilaclient import config diff -Nru python-manilaclient-1.8.1/manilaclient/tests/functional/test_shares.py python-manilaclient-1.9.0/manilaclient/tests/functional/test_shares.py --- python-manilaclient-1.8.1/manilaclient/tests/functional/test_shares.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/functional/test_shares.py 2016-05-30 00:39:06.000000000 +0000 @@ -13,7 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. -from tempest_lib.common.utils import data_utils +from tempest.lib.common.utils import data_utils from manilaclient import config from manilaclient.tests.functional import base diff -Nru python-manilaclient-1.8.1/manilaclient/tests/functional/test_share_types.py python-manilaclient-1.9.0/manilaclient/tests/functional/test_share_types.py --- python-manilaclient-1.8.1/manilaclient/tests/functional/test_share_types.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/functional/test_share_types.py 2016-05-30 00:39:06.000000000 +0000 @@ -14,7 +14,7 @@ # under the License. import ddt -from tempest_lib.common.utils import data_utils +from tempest.lib.common.utils import data_utils from manilaclient.tests.functional import base diff -Nru python-manilaclient-1.8.1/manilaclient/tests/functional/utils.py python-manilaclient-1.9.0/manilaclient/tests/functional/utils.py --- python-manilaclient-1.8.1/manilaclient/tests/functional/utils.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/functional/utils.py 2016-05-30 00:39:06.000000000 +0000 @@ -14,7 +14,7 @@ # under the License. import six -from tempest_lib.cli import output_parser +from tempest.lib.cli import output_parser import testtools from manilaclient import api_versions diff -Nru python-manilaclient-1.8.1/manilaclient/tests/unit/test_api_versions.py python-manilaclient-1.9.0/manilaclient/tests/unit/test_api_versions.py --- python-manilaclient-1.8.1/manilaclient/tests/unit/test_api_versions.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/unit/test_api_versions.py 2016-05-30 00:39:06.000000000 +0000 @@ -88,8 +88,14 @@ v8 = api_versions.APIVersion("4.0") v_null = api_versions.APIVersion() + v1_25 = api_versions.APIVersion("2.5") + v1_32 = api_versions.APIVersion("3.32") + v1_33 = api_versions.APIVersion("3.33") self.assertTrue(v2.matches(v1, v3)) self.assertTrue(v2.matches(v1, v_null)) + + self.assertTrue(v1_32.matches(v1_25, v1_33)) + self.assertTrue(v1.matches(v6, v2)) self.assertTrue(v4.matches(v2, v7)) self.assertTrue(v4.matches(v_null, v7)) @@ -271,6 +277,25 @@ api_versions.APIVersion("2.10")) self.assertTrue(self.fake_client.services.server_api_version.called) + def test_requested_version_is_less_than_server_max(self): + self._mock_returned_server_version('2.17', '2.14') + max_version = api_versions.APIVersion('2.15') + manilaclient.API_MAX_VERSION = max_version + manilaclient.API_MIN_VERSION = api_versions.APIVersion('2.12') + version = api_versions.discover_version(self.fake_client, max_version) + + self.assertEqual(api_versions.APIVersion('2.15'), version) + + def test_requested_version_is_downgraded(self): + server_end_version = '2.7' + self._mock_returned_server_version(server_end_version, '2.0') + max_version = api_versions.APIVersion("2.8") + manilaclient.API_MAX_VERSION = max_version + manilaclient.API_MIN_VERSION = api_versions.APIVersion("2.5") + version = api_versions.discover_version(self.fake_client, max_version) + + self.assertEqual(api_versions.APIVersion(server_end_version), version) + def test_server_and_client_max_are_same(self): self._mock_returned_server_version('2.5', '2.0') manilaclient.API_MAX_VERSION = api_versions.APIVersion("2.5") diff -Nru python-manilaclient-1.8.1/manilaclient/tests/unit/test_shell.py python-manilaclient-1.9.0/manilaclient/tests/unit/test_shell.py --- python-manilaclient-1.8.1/manilaclient/tests/unit/test_shell.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/unit/test_shell.py 2016-05-30 00:39:06.000000000 +0000 @@ -17,13 +17,16 @@ import fixtures import mock from six import moves +from tempest.lib.cli import output_parser from testtools import matchers import manilaclient from manilaclient.common import constants from manilaclient import exceptions +from manilaclient.openstack.common import cliutils from manilaclient import shell from manilaclient.tests.unit import utils +from manilaclient.tests.unit.v2 import fakes @ddt.ddt @@ -127,6 +130,69 @@ project_domain_id=env_vars['OS_PROJECT_DOMAIN_ID'], project_domain_name=env_vars['OS_PROJECT_DOMAIN_NAME'], cert=env_vars['OS_CERT'], + input_auth_token='', + service_catalog_url='', + ) + + @ddt.data( + {"env_vars": {"MANILACLIENT_BYPASS_URL": "http://foo.url", + "OS_TOKEN": "foo_token"}, + "kwargs": {"--os-token": "bar_token", + "--bypass-url": "http://bar.url"}, + "expected": {"input_auth_token": "bar_token", + "service_catalog_url": "http://bar.url"}}, + {"env_vars": {}, + "kwargs": {"--os-token": "bar_token", + "--bypass-url": "http://bar.url"}, + "expected": {"input_auth_token": "bar_token", + "service_catalog_url": "http://bar.url"}}, + {"env_vars": {"MANILACLIENT_BYPASS_URL": "http://foo.url", + "OS_TOKEN": "foo_token"}, + "kwargs": {}, + "expected": {"input_auth_token": "foo_token", + "service_catalog_url": "http://foo.url"}}, + {"env_vars": {"OS_TOKEN": "foo_token"}, + "kwargs": {"--bypass-url": "http://bar.url"}, + "expected": {"input_auth_token": "foo_token", + "service_catalog_url": "http://bar.url"}}, + ) + @ddt.unpack + def test_main_success_with_token(self, env_vars, kwargs, expected): + self.set_env_vars(env_vars) + with mock.patch.object(shell, "client") as mock_client: + cmd = "" + for k, v in kwargs.items(): + cmd += "%s=%s " % (k, v) + cmd += "list" + + self.shell(cmd) + + mock_client.Client.assert_called_with( + manilaclient.API_MAX_VERSION, + username="", + password="", + project_name="", + auth_url="", + insecure=False, + region_name="", + tenant_id="", + endpoint_type="publicURL", + extensions=mock.ANY, + service_type=constants.V1_SERVICE_TYPE, + service_name="", + retries=0, + http_log_debug=False, + cacert=None, + use_keyring=False, + force_new_token=False, + user_id="", + user_domain_id="", + user_domain_name="", + project_domain_id="", + project_domain_name="", + cert="", + input_auth_token=expected["input_auth_token"], + service_catalog_url=expected["service_catalog_url"], ) def test_help_unknown_command(self): @@ -158,3 +224,146 @@ for expected_arg in expected_args: self.assertIn(expected_arg, help_text) + + +class CustomOpenStackManilaShell(shell.OpenStackManilaShell): + + @staticmethod + @cliutils.arg( + '--default-is-none', + '--default_is_none', + type=str, + metavar='', + action='single_alias', + help='Default value is None and metavar set.', + default=None) + def do_foo(cs, args): + cliutils.print_dict({'key': args.default_is_none}) + + @staticmethod + @cliutils.arg( + '--default-is-not-none', + '--default_is_not_none', + type=str, + action='single_alias', + help='Default value is not None and metavar not set.', + default='bar') + def do_bar(cs, args): + cliutils.print_dict({'key': args.default_is_not_none}) + + @staticmethod + @cliutils.arg( + '--list-like', + '--list_like', + nargs='*', + action='single_alias', + help='Default value is None, metavar not set and result is list.', + default=None) + def do_quuz(cs, args): + cliutils.print_dict({'key': args.list_like}) + + +@ddt.ddt +class AllowOnlyOneAliasAtATimeActionTest(utils.TestCase): + FAKE_ENV = { + 'OS_USERNAME': 'username', + 'OS_PASSWORD': 'password', + 'OS_TENANT_NAME': 'tenant_name', + 'OS_AUTH_URL': 'http://no.where', + } + + def setUp(self): + super(self.__class__, self).setUp() + for k, v in self.FAKE_ENV.items(): + self.useFixture(fixtures.EnvironmentVariable(k, v)) + self.mock_object( + shell.client, 'get_client_class', + mock.Mock(return_value=fakes.FakeClient)) + + def shell_discover_client(self, + current_client, + os_api_version, + os_endpoint_type, + os_service_type, + client_args): + return current_client, manilaclient.API_MAX_VERSION + + def shell(self, argstr): + orig = sys.stdout + try: + sys.stdout = moves.StringIO() + _shell = CustomOpenStackManilaShell() + _shell._discover_client = self.shell_discover_client + _shell.main(argstr.split()) + except SystemExit: + exc_type, exc_value, exc_traceback = sys.exc_info() + self.assertEqual(exc_value.code, 0) + finally: + out = sys.stdout.getvalue() + sys.stdout.close() + sys.stdout = orig + + return out + + @ddt.data( + ('--default-is-none foo', 'foo'), + ('--default-is-none foo --default-is-none foo', 'foo'), + ('--default-is-none foo --default_is_none foo', 'foo'), + ('--default_is_none None', 'None'), + ) + @ddt.unpack + def test_foo_success(self, options_str, expected_result): + output = self.shell('foo %s' % options_str) + parsed_output = output_parser.details(output) + self.assertEqual({'key': expected_result}, parsed_output) + + @ddt.data( + '--default-is-none foo --default-is-none bar', + '--default-is-none foo --default_is_none bar', + '--default-is-none foo --default_is_none FOO', + ) + def test_foo_error(self, options_str): + self.assertRaises( + matchers.MismatchError, self.shell, 'foo %s' % options_str) + + @ddt.data( + ('--default-is-not-none bar', 'bar'), + ('--default_is_not_none bar --default-is-not-none bar', 'bar'), + ('--default_is_not_none bar --default_is_not_none bar', 'bar'), + ('--default-is-not-none not_bar', 'not_bar'), + ('--default_is_not_none None', 'None'), + ) + @ddt.unpack + def test_bar_success(self, options_str, expected_result): + output = self.shell('bar %s' % options_str) + parsed_output = output_parser.details(output) + self.assertEqual({'key': expected_result}, parsed_output) + + @ddt.data( + '--default-is-not-none foo --default-is-not-none bar', + '--default-is-not-none foo --default_is_not_none bar', + '--default-is-not-none bar --default_is_not_none BAR', + ) + def test_bar_error(self, options_str): + self.assertRaises( + matchers.MismatchError, self.shell, 'bar %s' % options_str) + + @ddt.data( + ('--list-like q=w', "['q=w']"), + ('--list-like q=w --list_like q=w', "['q=w']"), + ('--list-like q=w e=r t=y --list_like e=r t=y q=w', + "['e=r', 'q=w', 't=y']"), + ('--list_like q=w e=r t=y', "['e=r', 'q=w', 't=y']"), + ) + @ddt.unpack + def test_quuz_success(self, options_str, expected_result): + output = self.shell('quuz %s' % options_str) + parsed_output = output_parser.details(output) + self.assertEqual({'key': expected_result}, parsed_output) + + @ddt.data( + '--list-like q=w --list_like e=r t=y', + ) + def test_quuz_error(self, options_str): + self.assertRaises( + matchers.MismatchError, self.shell, 'quuz %s' % options_str) diff -Nru python-manilaclient-1.8.1/manilaclient/tests/unit/v2/test_shell.py python-manilaclient-1.9.0/manilaclient/tests/unit/v2/test_shell.py --- python-manilaclient-1.8.1/manilaclient/tests/unit/v2/test_shell.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/tests/unit/v2/test_shell.py 2016-05-30 00:39:06.000000000 +0000 @@ -869,7 +869,7 @@ def test_extract_metadata(self): # mimic the result of argparse's parse_args() method - class Arguments: + class Arguments(object): def __init__(self, metadata=None): if metadata is None: metadata = [] @@ -1371,7 +1371,7 @@ @mock.patch.object(cliutils, 'print_list', mock.Mock()) @mock.patch.object(shell_v2, '_find_share_network', mock.Mock()) def test_security_service_list_filter_share_network(self): - class FakeShareNetwork: + class FakeShareNetwork(object): id = 'fake-sn-id' sn = FakeShareNetwork() shell_v2._find_share_network.return_value = sn diff -Nru python-manilaclient-1.8.1/manilaclient/v2/share_instances.py python-manilaclient-1.9.0/manilaclient/v2/share_instances.py --- python-manilaclient-1.8.1/manilaclient/v2/share_instances.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/v2/share_instances.py 2016-05-30 00:39:06.000000000 +0000 @@ -52,7 +52,7 @@ return self._list('/share_instances', 'share_instances') def _action(self, action, instance, info=None, **kwargs): - """Perform a share instnace 'action'. + """Perform a share instance 'action'. :param action: text with action name. :param instance: either share object or text with its ID. diff -Nru python-manilaclient-1.8.1/manilaclient/v2/share_snapshots.py python-manilaclient-1.9.0/manilaclient/v2/share_snapshots.py --- python-manilaclient-1.8.1/manilaclient/v2/share_snapshots.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/v2/share_snapshots.py 2016-05-30 00:39:06.000000000 +0000 @@ -36,7 +36,7 @@ self.manager.update(self, **kwargs) def reset_state(self, state): - """Update the snapshot with the privided state.""" + """Update the snapshot with the provided state.""" self.manager.reset_state(self, state) def delete(self): diff -Nru python-manilaclient-1.8.1/manilaclient/v2/shares.py python-manilaclient-1.9.0/manilaclient/v2/shares.py --- python-manilaclient-1.8.1/manilaclient/v2/shares.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/v2/shares.py 2016-05-30 00:39:06.000000000 +0000 @@ -80,7 +80,7 @@ return self.manager.deny(self, id) def access_list(self): - """Deny access from IP to a share.""" + """Get access list from a share.""" return self.manager.access_list(self) def update_all_metadata(self, metadata): diff -Nru python-manilaclient-1.8.1/manilaclient/v2/shell.py python-manilaclient-1.9.0/manilaclient/v2/shell.py --- python-manilaclient-1.8.1/manilaclient/v2/shell.py 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/manilaclient/v2/shell.py 2016-05-30 00:39:06.000000000 +0000 @@ -321,7 +321,7 @@ if updates: # default value of force is None to make sure this client - # will be compatibile with old nova server + # will be compatible with old nova server force_update = getattr(args, 'force', None) user_id = getattr(args, 'user', None) if isinstance(manager, quotas.QuotaSetManager): @@ -401,9 +401,11 @@ help='New value for the "snapshot_gigabytes" quota.') @cliutils.arg( '--share-networks', + '--share_networks', metavar='', type=int, default=None, + action='single_alias', help='New value for the "share_networks" quota.') @cliutils.arg( '--force', @@ -529,7 +531,9 @@ help='Share size in GiB.') @cliutils.arg( '--snapshot-id', + '--snapshot_id', metavar='', + action='single_alias', help='Optional snapshot ID to create the share from. (Default=None)', default=None) @cliutils.arg( @@ -546,7 +550,9 @@ default=None) @cliutils.arg( '--share-network', + '--share_network', metavar='', + action='single_alias', help='Optional network info ID or name.', default=None) @cliutils.arg( @@ -624,6 +630,7 @@ metavar='', choices=['True', 'False'], required=False, + action='single_alias', help='Enables or disables generic host-based force-migration, which ' 'bypasses driver optimizations. Default=False.', default=False) @@ -705,6 +712,7 @@ '--state', metavar='', default='migration_error', + action='single_alias', help=('Indicate which task state to assign the share. Options include ' 'migration_starting, migration_in_progress, migration_completing, ' 'migration_success, migration_error, migration_cancelled, ' @@ -1082,6 +1090,7 @@ type=str, default=None, choices=['rw', 'ro'], + action='single_alias', help='Share access level ("rw" and "ro" access levels are supported). ' 'Defaults to rw.') def do_access_allow(cs, args): @@ -1177,7 +1186,7 @@ 'was used for share creation. OPTIONAL: Default=None', default=None) @cliutils.arg( - '--share-type', '--volume-type' + '--share-type', '--volume-type', '--share_type', '--share-type-id', '--volume-type-id', # aliases '--share-type_id', '--share_type-id', '--share_type_id', # aliases '--volume_type', '--volume_type_id', @@ -3311,6 +3320,7 @@ '--share_network', metavar='', default=None, + action='single_alias', help='Optional network info ID or name.') @api_versions.wraps("2.11") @api_versions.experimental_api @@ -3418,6 +3428,7 @@ '--state', # alias for user sanity metavar='', default='out_of_sync', + action='single_alias', help=('Indicate which replica_state to assign the replica. Options ' 'include in_sync, out_of_sync, active, error. If no ' 'state is provided, out_of_sync will be used.')) diff -Nru python-manilaclient-1.8.1/releasenotes/notes/start-using-reno-b744cd0259c7a88c.yaml python-manilaclient-1.9.0/releasenotes/notes/start-using-reno-b744cd0259c7a88c.yaml --- python-manilaclient-1.8.1/releasenotes/notes/start-using-reno-b744cd0259c7a88c.yaml 1970-01-01 00:00:00.000000000 +0000 +++ python-manilaclient-1.9.0/releasenotes/notes/start-using-reno-b744cd0259c7a88c.yaml 2016-05-30 00:39:06.000000000 +0000 @@ -0,0 +1,3 @@ +--- +features: + - Started using release notes to track changes to python-manilaclient. \ No newline at end of file diff -Nru python-manilaclient-1.8.1/releasenotes/source/conf.py python-manilaclient-1.9.0/releasenotes/source/conf.py --- python-manilaclient-1.8.1/releasenotes/source/conf.py 1970-01-01 00:00:00.000000000 +0000 +++ python-manilaclient-1.9.0/releasenotes/source/conf.py 2016-05-30 00:39:06.000000000 +0000 @@ -0,0 +1,279 @@ +# -*- 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. + +# Python-manilaclient Release Notes documentation build configuration file, +# created by sphinx-quickstart on Tue May 24 17:40:50 2016. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ------------------------------------------------ + +import pbr.version + +# If your documentation needs a minimal Sphinx version, state it here. +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'oslosphinx', + 'reno.sphinxext', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +# source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'python-manilaclient Release Notes' +copyright = u'2016, Manila Developers' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +manilaclient_version = pbr.version.VersionInfo('python-manilaclient') + + +release = manilaclient_version.version_string_with_vcs() +# The short X.Y version. +version = manilaclient_version.canonical_version_string() + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +# today = '' +# Else, today_fmt is used as the format for a strftime call. +# today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = [] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +# default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +# add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +# add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +# show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +# modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +# keep_warnings = False + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'default' + +# 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 = {} + +# Add any paths that contain custom themes here, relative to this directory. +# html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +# html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +# html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +# html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +# html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +# html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +# html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +# html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +# html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +# html_additional_pages = {} + +# If false, no module index is generated. +# html_domain_indices = True + +# If false, no index is generated. +# html_use_index = True + +# If true, the index is split into individual pages for each letter. +# html_split_index = False + +# If true, links to the reST sources are added to the pages. +# html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +# html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +# html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +# html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +# html_file_suffix = None + +# Output file base name for HTML help builder. +htmlhelp_basename = 'PythonManilaclientReleaseNotesdoc' + + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # 'preamble': '', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + ('index', 'PythonManilaclientReleaseNotes.tex', + u'python-manilaclient Release Notes Documentation', + u'Manila Developers', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +# latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +# latex_use_parts = False + +# If true, show page references after internal links. +# latex_show_pagerefs = False + +# If true, show URL addresses after external links. +# latex_show_urls = False + +# Documents to append as an appendix to all manuals. +# latex_appendices = [] + +# If false, no module index is generated. +# latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', 'python-manilaclientreleasenotes', + u'python-manilaclient Release Notes Documentation', + [u'Manila Developers'], 1) +] + +# If true, show URL addresses after external links. +# man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ('index', 'PythonManilaclientReleaseNotes', + u'python-manilaclient Release Notes Documentation', + u'Manila Developers', 'PythonManilaclientReleaseNotes', + 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +# texinfo_appendices = [] + +# If false, no module index is generated. +# texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +# texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +# texinfo_no_detailmenu = False diff -Nru python-manilaclient-1.8.1/releasenotes/source/index.rst python-manilaclient-1.9.0/releasenotes/source/index.rst --- python-manilaclient-1.8.1/releasenotes/source/index.rst 1970-01-01 00:00:00.000000000 +0000 +++ python-manilaclient-1.9.0/releasenotes/source/index.rst 2016-05-30 00:39:06.000000000 +0000 @@ -0,0 +1,9 @@ + +================================= +python-manilaclient Release Notes +================================= + +.. toctree:: + :maxdepth: 1 + + unreleased diff -Nru python-manilaclient-1.8.1/releasenotes/source/unreleased.rst python-manilaclient-1.9.0/releasenotes/source/unreleased.rst --- python-manilaclient-1.8.1/releasenotes/source/unreleased.rst 1970-01-01 00:00:00.000000000 +0000 +++ python-manilaclient-1.9.0/releasenotes/source/unreleased.rst 2016-05-30 00:39:06.000000000 +0000 @@ -0,0 +1,5 @@ +============================ +Current Series Release Notes +============================ + +.. release-notes:: diff -Nru python-manilaclient-1.8.1/requirements.txt python-manilaclient-1.9.0/requirements.txt --- python-manilaclient-1.8.1/requirements.txt 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/requirements.txt 2016-05-30 00:39:06.000000000 +0000 @@ -5,15 +5,13 @@ # pbr should be first pbr>=1.6 # Apache-2.0 -iso8601>=0.1.9 # MIT -oslo.config>=3.7.0 # Apache-2.0 +oslo.config>=3.9.0 # Apache-2.0 oslo.log>=1.14.0 # Apache-2.0 oslo.serialization>=1.10.0 # Apache-2.0 oslo.utils>=3.5.0 # Apache-2.0 PrettyTable<0.8,>=0.7 # BSD -pycrypto>=2.6 # Public Domain -requests!=2.9.0,>=2.8.1 # Apache-2.0 +requests>=2.10.0 # Apache-2.0 simplejson>=2.2.0 # MIT -Babel>=1.3 # BSD +Babel>=2.3.4 # BSD six>=1.9.0 # MIT -python-keystoneclient!=1.8.0,!=2.1.0,>=1.6.0 # Apache-2.0 +python-keystoneclient!=1.8.0,!=2.1.0,>=1.7.0 # Apache-2.0 diff -Nru python-manilaclient-1.8.1/setup.cfg python-manilaclient-1.9.0/setup.cfg --- python-manilaclient-1.8.1/setup.cfg 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/setup.cfg 2016-05-30 00:39:06.000000000 +0000 @@ -5,7 +5,7 @@ README.rst author = OpenStack Contributors author-email = openstack-dev@lists.openstack.org -home-page = http://www.openstack.org/ +home-page = http://docs.openstack.org/developer/python-manilaclient classifier = Development Status :: 5 - Production/Stable Environment :: Console diff -Nru python-manilaclient-1.8.1/test-requirements.txt python-manilaclient-1.9.0/test-requirements.txt --- python-manilaclient-1.8.1/test-requirements.txt 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/test-requirements.txt 2016-05-30 00:39:06.000000000 +0000 @@ -3,18 +3,19 @@ # process, which may cause wedges in the gate later. # hacking should be first -hacking<0.10,>=0.9.2 +hacking<0.11,>=0.10.2 # Apache-2.0 coverage>=3.6 # Apache-2.0 ddt>=1.0.1 # MIT discover # BSD -fixtures>=1.3.1 # Apache-2.0/BSD -mock>=1.2 # BSD +fixtures>=3.0.0 # Apache-2.0/BSD +mock>=2.0 # BSD ordereddict # MIT oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0 oslotest>=1.10.0 # Apache-2.0 sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2 # BSD -tempest-lib>=0.14.0 # Apache-2.0 +tempest>=11.0.0 # Apache-2.0 testrepository>=0.0.18 # Apache-2.0/BSD testtools>=1.4.0 # MIT python-openstackclient>=2.1.0 # Apache-2.0 +reno>=1.6.2 # Apache2 diff -Nru python-manilaclient-1.8.1/tox.ini python-manilaclient-1.9.0/tox.ini --- python-manilaclient-1.8.1/tox.ini 2016-03-19 01:03:51.000000000 +0000 +++ python-manilaclient-1.9.0/tox.ini 2016-05-30 00:39:06.000000000 +0000 @@ -38,6 +38,10 @@ [testenv:docs] commands = python setup.py build_sphinx +[testenv:releasenotes] +commands = sphinx-build -a -E -W -d releasenotes/build/doctrees \ + -b html releasenotes/source releasenotes/build/html + [testenv:functional] setenv = VIRTUAL_ENV = {envdir}