Hello community, here is the log from the commit of package python-troveclient for openSUSE:Factory checked in at 2019-05-03 22:43:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-troveclient (Old) and /work/SRC/openSUSE:Factory/.python-troveclient.new.5148 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-troveclient" Fri May 3 22:43:23 2019 rev:12 rq:692882 version:2.17.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-troveclient/python-troveclient.changes 2018-09-07 15:39:41.570517544 +0200 +++ /work/SRC/openSUSE:Factory/.python-troveclient.new.5148/python-troveclient.changes 2019-05-03 22:43:25.223367005 +0200 @@ -1,0 +2,21 @@ +Mon Apr 8 11:57:06 UTC 2019 - [email protected] + +- update to version 2.17.0 + - Add detailed list for instances + - Support configuration groups for clusters + - switch documentation job to new PTI + - Cleanup zuul.yaml + - Add release note link in README + - Switch to stestr + - Fix wrong keyword arguments + - Add extended properties support for mongo cluster. + - Fix python3 compatibility issues + - Replace assertRaisesRegexp with assertRaisesRegex + - Update reno for stable/rocky + - Don't quote {posargs} in tox.ini + - Remove PyPI downloads + - Sync two parameters of cluster-create to OSC + - add python 3.6 unit test job + - import zuul job settings from project-config + +------------------------------------------------------------------- Old: ---- python-troveclient-2.16.0.tar.gz New: ---- python-troveclient-2.17.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-troveclient.spec ++++++ --- /var/tmp/diff_new_pack.jroLbs/_old 2019-05-03 22:43:25.751368117 +0200 +++ /var/tmp/diff_new_pack.jroLbs/_new 2019-05-03 22:43:25.751368117 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-troveclient # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,12 +12,12 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: python-troveclient -Version: 2.16.0 +Version: 2.17.0 Release: 0 Summary: Client library for OpenStack DBaaS API License: Apache-2.0 @@ -27,21 +27,19 @@ BuildRequires: openstack-macros BuildRequires: python-PrettyTable >= 0.7.2 BuildRequires: python-Sphinx -BuildRequires: python-devel BuildRequires: python-httplib2 BuildRequires: python-keystoneauth1 >= 3.4.0 BuildRequires: python-mistralclient >= 3.1.0 BuildRequires: python-mock BuildRequires: python-oslo.utils >= 3.33.0 -BuildRequires: python-oslosphinx BuildRequires: python-pbr >= 2.0.0 BuildRequires: python-requests >= 2.14.2 BuildRequires: python-requests-mock BuildRequires: python-setuptools BuildRequires: python-simplejson >= 3.5.1 BuildRequires: python-sphinxcontrib-apidoc +BuildRequires: python-stestr BuildRequires: python-swiftclient >= 3.2.0 -BuildRequires: python-testrepository BuildRequires: python-testscenarios BuildRequires: python-testtools Requires: python-Babel >= 2.3.4 @@ -82,16 +80,13 @@ # Generate html docs PBR_VERSION=%version sphinx-build -b html doc/source doc/build/html # Remove the Sphinx-build leftovers -rm -rf html/.{doctrees,buildinfo} +rm -r doc/build/html/.{doctrees,buildinfo} %install %py2_install %check -# Disable tests until https://bugs.launchpad.net/python-troveclient/+bug/1706538 got fixed -%if "%{version}" != "2.11.0" -PYTHONPATH=. %{__python2} setup.py testr -%endif +stestr run %files %doc README.rst ++++++ _service ++++++ --- /var/tmp/diff_new_pack.jroLbs/_old 2019-05-03 22:43:25.771368159 +0200 +++ /var/tmp/diff_new_pack.jroLbs/_new 2019-05-03 22:43:25.771368159 +0200 @@ -1,8 +1,8 @@ <services> <service mode="disabled" name="renderspec"> - <param name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/rocky/openstack/python-troveclient/python-troveclient.spec.j2</param> + <param name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/stein/openstack/python-troveclient/python-troveclient.spec.j2</param> <param name="output-name">python-troveclient.spec</param> - <param name="requirements">https://raw.githubusercontent.com/openstack/python-troveclient/stable/rocky/requirements.txt</param> + <param name="requirements">https://raw.githubusercontent.com/openstack/python-troveclient/stable/stein/requirements.txt</param> <param name="changelog-email">[email protected]</param> <param name="changelog-provider">gh,openstack,python-troveclient</param> </service> ++++++ python-troveclient-2.16.0.tar.gz -> python-troveclient-2.17.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/.stestr.conf new/python-troveclient-2.17.0/.stestr.conf --- old/python-troveclient-2.16.0/.stestr.conf 1970-01-01 01:00:00.000000000 +0100 +++ new/python-troveclient-2.17.0/.stestr.conf 2018-10-31 15:05:42.000000000 +0100 @@ -0,0 +1,3 @@ +[DEFAULT] +test_path=./ +top_dir=./ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/.testr.conf new/python-troveclient-2.17.0/.testr.conf --- old/python-troveclient-2.16.0/.testr.conf 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/.testr.conf 1970-01-01 01:00:00.000000000 +0100 @@ -1,8 +0,0 @@ -[DEFAULT] -test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \ - OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \ - OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-60} \ - ${PYTHON:-python} -m subunit.run discover -t ./ ./ $LISTOPT $IDOPTION - -test_id_option=--load-list $IDFILE -test_list_option=--list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/.zuul.yaml new/python-troveclient-2.17.0/.zuul.yaml --- old/python-troveclient-2.16.0/.zuul.yaml 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/.zuul.yaml 2018-10-31 15:05:42.000000000 +0100 @@ -1,16 +1,23 @@ - project: templates: + - check-requirements + - openstack-lower-constraints-jobs + - openstack-python-jobs + - openstack-python35-jobs + - openstack-python36-jobs - openstackclient-plugin-jobs + - publish-openstack-docs-pti + - release-notes-jobs-python3 check: jobs: - python-troveclient-tempest-neutron-src - - openstack-tox-lower-constraints + - trove-functional-mysql gate: queue: trove jobs: - python-troveclient-tempest-neutron-src + - trove-functional-mysql - - openstack-tox-lower-constraints - job: name: python-troveclient-tempest-neutron-src parent: devstack-tempest @@ -26,9 +33,9 @@ - openstack/tempest - openstack/trove-tempest-plugin vars: - tox_envlist: 'full' + tox_envlist: full devstack_localrc: - TEMPEST_PLUGINS: '/opt/stack/trove-tempest-plugin' + TEMPEST_PLUGINS: /opt/stack/trove-tempest-plugin devstack_plugins: trove: git://git.openstack.org/openstack/trove diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/AUTHORS new/python-troveclient-2.17.0/AUTHORS --- old/python-troveclient-2.16.0/AUTHORS 2018-07-26 16:09:16.000000000 +0200 +++ new/python-troveclient-2.17.0/AUTHORS 2018-10-31 15:08:28.000000000 +0100 @@ -12,11 +12,14 @@ Anh Tran <[email protected]> Arata Notsu <[email protected]> Ashleigh Farnham <[email protected]> +Bartosz Zurkowski <[email protected]> Bob Thyne <[email protected]> Cao Xuan Hoang <[email protected]> Chandan Kumar <[email protected]> Chaozhe.Chen <[email protected]> +Chen <[email protected]> Christian Berendt <[email protected]> +Chuck Short <[email protected]> Clare Springer <[email protected]> Craig Vyvial <[email protected]> Cyril Roelandt <[email protected]> @@ -54,6 +57,7 @@ Kui Shi <[email protected]> Lance Bragstad <[email protected]> LiuNanke <[email protected]> +Marcin Piwowarczyk <[email protected]> Masaki Matsushita <[email protected]> Matt Fischer <[email protected]> Matt Riedemann <[email protected]> @@ -101,12 +105,14 @@ Tovin Seven <[email protected]> Trevor McCasland <[email protected]> Valencia Serrao <[email protected]> +Vieri <[email protected]> Vipul Sabhaya <[email protected]> +Vu Cong Tuan <[email protected]> +Yotaro Konishi <[email protected]> Zhao Chao <[email protected]> Zhi Yan Liu <[email protected]> ZhiQiang Fan <[email protected]> Zhiqiang Fan <[email protected]> -Zuul <[email protected]> amcrn <[email protected]> [email protected] <[email protected]> caishan <[email protected]> @@ -133,5 +139,6 @@ venkatamahesh <[email protected]> wangyao <[email protected]> wlhc <[email protected]> +wu.chunyang <[email protected]> yangyapeng <[email protected]> zhanggang <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/ChangeLog new/python-troveclient-2.17.0/ChangeLog --- old/python-troveclient-2.16.0/ChangeLog 2018-07-26 16:09:16.000000000 +0200 +++ new/python-troveclient-2.17.0/ChangeLog 2018-10-31 15:08:28.000000000 +0100 @@ -1,6 +1,24 @@ CHANGES ======= +2.17.0 +------ + +* Add detailed list for instances +* Don't quote {posargs} in tox.ini +* Fix wrong keyword arguments +* Cleanup zuul.yaml +* add python 3.6 unit test job +* switch documentation job to new PTI +* import zuul job settings from project-config +* Fix python3 compatibility issues +* Replace assertRaisesRegexp with assertRaisesRegex +* Sync two parameters of cluster-create to OSC +* Update reno for stable/rocky +* Support configuration groups for clusters +* Add extended properties support for mongo cluster +* Switch to stestr + 2.16.0 ------ @@ -14,8 +32,10 @@ * fix tox python3 overrides * Correctly mocking builtin open in test\_v1\_shell * Replace 'raise StopIteration' with 'return' +* Add release note link in README * Add cluster-modules to OSC * Update the troveclient's README +* Remove PyPI downloads * Trivial: Update pypi url to new url * Follow the new PTI for document build * Migrate to Zuul v3 native job definitions diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/PKG-INFO new/python-troveclient-2.17.0/PKG-INFO --- old/python-troveclient-2.16.0/PKG-INFO 2018-07-26 16:09:17.000000000 +0200 +++ new/python-troveclient-2.17.0/PKG-INFO 2018-10-31 15:08:28.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: python-troveclient -Version: 2.16.0 +Version: 2.17.0 Summary: Client library for OpenStack DBaaS API Home-page: https://docs.openstack.org/python-troveclient/latest Author: OpenStack @@ -16,10 +16,6 @@ :target: https://pypi.org/project/python-troveclient/ :alt: Latest Version - .. image:: https://img.shields.io/pypi/dm/python-troveclient.svg - :target: https://pypi.org/project/python-troveclient/ - :alt: Downloads - This is a client for the OpenStack Trove API. There's a Python API (the ``troveclient`` module), and a command-line script (``trove``). Each implements 100% of the OpenStack Trove API. @@ -42,6 +38,7 @@ * `Github`_ * `Specs`_ * `How to Contribute`_ + * `Release Notes`_ .. _Online Documentation: https://docs.openstack.org/python-troveclient/latest .. _Bugs: https://bugs.launchpad.net/python-troveclient @@ -51,6 +48,7 @@ .. _Github: https://github.com/openstack/python-troveclient .. _Specs: https://specs.openstack.org/openstack/trove-specs/ .. _How to Contribute: https://docs.openstack.org/infra/manual/developers.html + .. _Release Notes: https://docs.openstack.org/releasenotes/python-troveclient Platform: UNKNOWN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/README.rst new/python-troveclient-2.17.0/README.rst --- old/python-troveclient-2.16.0/README.rst 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/README.rst 2018-10-31 15:05:42.000000000 +0100 @@ -8,10 +8,6 @@ :target: https://pypi.org/project/python-troveclient/ :alt: Latest Version -.. image:: https://img.shields.io/pypi/dm/python-troveclient.svg - :target: https://pypi.org/project/python-troveclient/ - :alt: Downloads - This is a client for the OpenStack Trove API. There's a Python API (the ``troveclient`` module), and a command-line script (``trove``). Each implements 100% of the OpenStack Trove API. @@ -34,6 +30,7 @@ * `Github`_ * `Specs`_ * `How to Contribute`_ +* `Release Notes`_ .. _Online Documentation: https://docs.openstack.org/python-troveclient/latest .. _Bugs: https://bugs.launchpad.net/python-troveclient @@ -43,3 +40,4 @@ .. _Github: https://github.com/openstack/python-troveclient .. _Specs: https://specs.openstack.org/openstack/trove-specs/ .. _How to Contribute: https://docs.openstack.org/infra/manual/developers.html +.. _Release Notes: https://docs.openstack.org/releasenotes/python-troveclient diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/lower-constraints.txt new/python-troveclient-2.17.0/lower-constraints.txt --- old/python-troveclient-2.16.0/lower-constraints.txt 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/lower-constraints.txt 2018-10-31 15:05:42.000000000 +0100 @@ -78,8 +78,8 @@ snowballstemmer==1.2.1 Sphinx==1.6.2 sphinxcontrib-websupport==1.0.1 +stestr==2.0.0 stevedore==1.20.0 -testrepository==0.0.18 testscenarios==0.4 testtools==2.2.0 traceback2==1.4.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/python_troveclient.egg-info/PKG-INFO new/python-troveclient-2.17.0/python_troveclient.egg-info/PKG-INFO --- old/python-troveclient-2.16.0/python_troveclient.egg-info/PKG-INFO 2018-07-26 16:09:16.000000000 +0200 +++ new/python-troveclient-2.17.0/python_troveclient.egg-info/PKG-INFO 2018-10-31 15:08:28.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: python-troveclient -Version: 2.16.0 +Version: 2.17.0 Summary: Client library for OpenStack DBaaS API Home-page: https://docs.openstack.org/python-troveclient/latest Author: OpenStack @@ -16,10 +16,6 @@ :target: https://pypi.org/project/python-troveclient/ :alt: Latest Version - .. image:: https://img.shields.io/pypi/dm/python-troveclient.svg - :target: https://pypi.org/project/python-troveclient/ - :alt: Downloads - This is a client for the OpenStack Trove API. There's a Python API (the ``troveclient`` module), and a command-line script (``trove``). Each implements 100% of the OpenStack Trove API. @@ -42,6 +38,7 @@ * `Github`_ * `Specs`_ * `How to Contribute`_ + * `Release Notes`_ .. _Online Documentation: https://docs.openstack.org/python-troveclient/latest .. _Bugs: https://bugs.launchpad.net/python-troveclient @@ -51,6 +48,7 @@ .. _Github: https://github.com/openstack/python-troveclient .. _Specs: https://specs.openstack.org/openstack/trove-specs/ .. _How to Contribute: https://docs.openstack.org/infra/manual/developers.html + .. _Release Notes: https://docs.openstack.org/releasenotes/python-troveclient Platform: UNKNOWN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/python_troveclient.egg-info/SOURCES.txt new/python-troveclient-2.17.0/python_troveclient.egg-info/SOURCES.txt --- old/python-troveclient-2.16.0/python_troveclient.egg-info/SOURCES.txt 2018-07-26 16:09:17.000000000 +0200 +++ new/python-troveclient-2.17.0/python_troveclient.egg-info/SOURCES.txt 2018-10-31 15:08:28.000000000 +0100 @@ -1,5 +1,5 @@ .coveragerc -.testr.conf +.stestr.conf .zuul.yaml AUTHORS CONTRIBUTING.rst @@ -46,6 +46,7 @@ releasenotes/notes/add-configuration-create-to-osc-fd556891b57cce05.yaml releasenotes/notes/add-configuration-default-to-osc-55867236d19d83c4.yaml releasenotes/notes/add-configuration-delete-to-osc-d52e6a2cc84994e5.yaml +releasenotes/notes/add-configuration-groups-for-clusters-6183b0b7b4fb8c9e.yaml releasenotes/notes/add-configuration-instances-to-osc-80a7d7b9d0c79f62.yaml releasenotes/notes/add-configuration-list-to-osc-4a12d508f6bb5472.yaml releasenotes/notes/add-configuration-parameter-list-to-osc-3d1a383999dd2d64.yaml @@ -66,6 +67,7 @@ releasenotes/notes/add-force-delete-to-osc-dfff1db4da937415.yaml releasenotes/notes/add-instance-create-to-osc-77484f1c477aa864.yaml releasenotes/notes/add-instance-delete-to-osc-bf8de501c8945d58.yaml +releasenotes/notes/add-instance-detailed-list-23dc77ed898cc6db.yaml releasenotes/notes/add-instance-list-to-osc-05714dfce947a57e.yaml releasenotes/notes/add-instance-show-to-osc-d97cac1c697dcbdd.yaml releasenotes/notes/add-log-enable-to-osc-a97bbb3a7af7b80b.yaml @@ -95,6 +97,7 @@ releasenotes/notes/datastore-version-volume-types-62556ce5917195fd.yaml releasenotes/notes/fix-config-param-list-output-27bf30fce5388d4b.yaml releasenotes/notes/fix-output-of-cluster-create-584d85ffe1129d57.yaml +releasenotes/notes/fix-wrong-datastore-flavors-args-in-osc-e0322cb5424f8c1b.yaml releasenotes/notes/fix_admin_keystoneauth1-ed534462434.yaml releasenotes/notes/flavor-list-disk-befd656f86592af1.yaml releasenotes/notes/flavor-list-ephemeral-de4eee3a30b09b64.yaml @@ -107,6 +110,7 @@ releasenotes/notes/module-ordering-2d1e1a3c37c30c71.yaml releasenotes/notes/module-support-for-clusters-87b41dd7648275bf.yaml releasenotes/notes/module_update_all_ds-f5cdbb71462e3de4.yaml +releasenotes/notes/mongo-cluster-create-use-extended-perperties-be7c075585dc709a.yaml releasenotes/notes/multi-region-ec516da866def1ed.yaml releasenotes/notes/paginate-config-list-c311ce3c5394d437.yaml releasenotes/notes/persist-error-message-cda8dfe485fe92ba.yaml @@ -123,6 +127,7 @@ releasenotes/source/ocata.rst releasenotes/source/pike.rst releasenotes/source/queens.rst +releasenotes/source/rocky.rst releasenotes/source/unreleased.rst releasenotes/source/_static/.placeholder releasenotes/source/_templates/.placeholder diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/python_troveclient.egg-info/pbr.json new/python-troveclient-2.17.0/python_troveclient.egg-info/pbr.json --- old/python-troveclient-2.16.0/python_troveclient.egg-info/pbr.json 2018-07-26 16:09:16.000000000 +0200 +++ new/python-troveclient-2.17.0/python_troveclient.egg-info/pbr.json 2018-10-31 15:08:28.000000000 +0100 @@ -1 +1 @@ -{"git_version": "3adf5fe", "is_release": true} \ No newline at end of file +{"git_version": "ba873ae", "is_release": true} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/releasenotes/notes/add-configuration-groups-for-clusters-6183b0b7b4fb8c9e.yaml new/python-troveclient-2.17.0/releasenotes/notes/add-configuration-groups-for-clusters-6183b0b7b4fb8c9e.yaml --- old/python-troveclient-2.16.0/releasenotes/notes/add-configuration-groups-for-clusters-6183b0b7b4fb8c9e.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/python-troveclient-2.17.0/releasenotes/notes/add-configuration-groups-for-clusters-6183b0b7b4fb8c9e.yaml 2018-10-31 15:05:42.000000000 +0100 @@ -0,0 +1,6 @@ +--- +features: + - | + A --configuration flag was added to the ``trove cluster-create`` + command, in order to allow a user to attach specific configuration + for cluster. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/releasenotes/notes/add-instance-detailed-list-23dc77ed898cc6db.yaml new/python-troveclient-2.17.0/releasenotes/notes/add-instance-detailed-list-23dc77ed898cc6db.yaml --- old/python-troveclient-2.16.0/releasenotes/notes/add-instance-detailed-list-23dc77ed898cc6db.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/python-troveclient-2.17.0/releasenotes/notes/add-instance-detailed-list-23dc77ed898cc6db.yaml 2018-10-31 15:05:42.000000000 +0100 @@ -0,0 +1,7 @@ +--- +features: + - | + Added ``detailed`` option to instances client in ``instances.list`` + command. Now, detailed instance list can be obtained by setting + ``detailed`` parameter to ``True``. Trove will then include more details + in the API response. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/releasenotes/notes/fix-wrong-datastore-flavors-args-in-osc-e0322cb5424f8c1b.yaml new/python-troveclient-2.17.0/releasenotes/notes/fix-wrong-datastore-flavors-args-in-osc-e0322cb5424f8c1b.yaml --- old/python-troveclient-2.16.0/releasenotes/notes/fix-wrong-datastore-flavors-args-in-osc-e0322cb5424f8c1b.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/python-troveclient-2.17.0/releasenotes/notes/fix-wrong-datastore-flavors-args-in-osc-e0322cb5424f8c1b.yaml 2018-10-31 15:05:42.000000000 +0100 @@ -0,0 +1,7 @@ +--- +fixes: + - | + [`bug 1794663 <https://bugs.launchpad.net/python-troveclient/+bug/1794663>`_] + Fixed wrong keyword arguments to make ``openstack database flavor list`` + command work properly with ``--datastore-type`` and + ``--datastore-version-id`` options. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/releasenotes/notes/mongo-cluster-create-use-extended-perperties-be7c075585dc709a.yaml new/python-troveclient-2.17.0/releasenotes/notes/mongo-cluster-create-use-extended-perperties-be7c075585dc709a.yaml --- old/python-troveclient-2.16.0/releasenotes/notes/mongo-cluster-create-use-extended-perperties-be7c075585dc709a.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/python-troveclient-2.17.0/releasenotes/notes/mongo-cluster-create-use-extended-perperties-be7c075585dc709a.yaml 2018-10-31 15:05:42.000000000 +0100 @@ -0,0 +1,8 @@ +--- +features: + - | + User can specify the number and volume of mongos/configserver by using + the extends argument when creating mongodb cluster. Currently, + the supported parameters are, num_configsvr, num_mongos, + configsvr_volume_size, configsvr_volume_type, mongos_volume_size + and mongos_volume_type. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/releasenotes/source/index.rst new/python-troveclient-2.17.0/releasenotes/source/index.rst --- old/python-troveclient-2.16.0/releasenotes/source/index.rst 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/releasenotes/source/index.rst 2018-10-31 15:05:42.000000000 +0100 @@ -8,6 +8,7 @@ :maxdepth: 2 unreleased + rocky queens pike ocata diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/releasenotes/source/rocky.rst new/python-troveclient-2.17.0/releasenotes/source/rocky.rst --- old/python-troveclient-2.16.0/releasenotes/source/rocky.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/python-troveclient-2.17.0/releasenotes/source/rocky.rst 2018-10-31 15:05:42.000000000 +0100 @@ -0,0 +1,6 @@ +=================================== + Rocky Series Release Notes +=================================== + +.. release-notes:: + :branch: stable/rocky diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/test-requirements.txt new/python-troveclient-2.17.0/test-requirements.txt --- old/python-troveclient-2.16.0/test-requirements.txt 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/test-requirements.txt 2018-10-31 15:05:42.000000000 +0100 @@ -7,7 +7,7 @@ oslotest>=3.2.0 # Apache-2.0 python-openstackclient>=3.12.0 # Apache-2.0 requests-mock>=1.2.0 # Apache-2.0 -testrepository>=0.0.18 # Apache-2.0/BSD +stestr>=2.0.0 # Apache-2.0 testscenarios>=0.4 # Apache-2.0/BSD testtools>=2.2.0 # MIT mock>=2.0.0 # BSD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/tox.ini new/python-troveclient-2.17.0/tox.ini --- old/python-troveclient-2.16.0/tox.ini 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/tox.ini 2018-10-31 15:05:51.000000000 +0100 @@ -19,8 +19,7 @@ -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt commands = find . -type f -name "*.pyc" -delete - rm -f .testrepository/times.dbm - python setup.py testr --testr-args='{posargs}' + stestr run {posargs} whitelist_externals = find rm @@ -46,10 +45,14 @@ [testenv:cover] basepython = python3 +setenv = + PYTHON=coverage run --source troveclient --parallel-mode commands = coverage erase - python setup.py testr --coverage --testr-args='{posargs}' - coverage html + stestr run {posargs} + coverage combine + coverage html -d cover + coverage xml -o cover/coverage.xml coverage report [testenv:docs] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/troveclient/apiclient/base.py new/python-troveclient-2.17.0/troveclient/apiclient/base.py --- old/python-troveclient-2.16.0/troveclient/apiclient/base.py 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/troveclient/apiclient/base.py 2018-10-31 15:05:42.000000000 +0100 @@ -458,6 +458,8 @@ pass def __getattr__(self, k): + if k == "__setstate__": + raise AttributeError(k) if k not in self.__dict__: # NOTE(bcwaldon): disallow lazy-loading if already loaded once if not self.is_loaded: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/troveclient/compat/base.py new/python-troveclient-2.17.0/troveclient/compat/base.py --- old/python-troveclient-2.16.0/troveclient/compat/base.py 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/troveclient/compat/base.py 2018-10-31 15:05:42.000000000 +0100 @@ -246,7 +246,7 @@ return None def _add_details(self, info): - for (k, v) in info.iteritems(): + for (k, v) in info.items(): try: setattr(self, k, v) except AttributeError: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/troveclient/compat/client.py new/python-troveclient-2.17.0/troveclient/compat/client.py --- old/python-troveclient-2.16.0/troveclient/compat/client.py 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/troveclient/compat/client.py 2018-10-31 15:05:42.000000000 +0100 @@ -200,9 +200,9 @@ if 'body' in kwargs: kwargs['body'] = json.dumps(kwargs['body']) - def morph_response_body(self, body_string): + def morph_response_body(self, raw_body): try: - return json.loads(body_string) + return json.loads(raw_body.decode()) except ValueError: raise exceptions.ResponseFormatError() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/troveclient/osc/v1/database_clusters.py new/python-troveclient-2.17.0/troveclient/osc/v1/database_clusters.py --- old/python-troveclient-2.16.0/troveclient/osc/v1/database_clusters.py 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/troveclient/osc/v1/database_clusters.py 2018-10-31 15:05:42.000000000 +0100 @@ -18,7 +18,10 @@ import six from troveclient.i18n import _ +from troveclient.v1.shell import _parse_extended_properties from troveclient.v1.shell import _parse_instance_options +from troveclient.v1.shell import EXT_PROPS_HELP +from troveclient.v1.shell import EXT_PROPS_METAVAR from troveclient.v1.shell import INSTANCE_HELP from troveclient.v1.shell import INSTANCE_METAVAR @@ -165,16 +168,37 @@ help=_('Locality policy to use when creating cluster. ' 'Choose one of %(choices)s.'), ) + parser.add_argument( + '--extended-properties', + dest='extended_properties', + metavar=EXT_PROPS_METAVAR, + default=None, + help=EXT_PROPS_HELP, + ) + parser.add_argument( + '--configuration', + metavar='<configuration>', + type=str, + default=None, + help=_('ID of the configuration group to attach to the cluster.'), + ) return parser def take_action(self, parsed_args): database = self.app.client_manager.database instances = _parse_instance_options(database, parsed_args.instances) - cluster = database.clusters.create(parsed_args.name, - parsed_args.datastore, - parsed_args.datastore_version, - instances=instances, - locality=parsed_args.locality) + extended_properties = {} + if parsed_args.extended_properties: + extended_properties = _parse_extended_properties( + parsed_args.extended_properties) + cluster = database.clusters.create( + parsed_args.name, + parsed_args.datastore, + parsed_args.datastore_version, + instances=instances, + locality=parsed_args.locality, + extended_properties=extended_properties, + configuration=parsed_args.configuration) cluster = set_attributes_for_print_detail(cluster) return zip(*sorted(six.iteritems(cluster))) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/troveclient/osc/v1/database_flavors.py new/python-troveclient-2.17.0/troveclient/osc/v1/database_flavors.py --- old/python-troveclient-2.16.0/troveclient/osc/v1/database_flavors.py 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/troveclient/osc/v1/database_flavors.py 2018-10-31 15:05:42.000000000 +0100 @@ -58,8 +58,8 @@ db_flavors = self.app.client_manager.database.flavors if parsed_args.datastore_type and parsed_args.datastore_version_id: flavors = db_flavors.list_datastore_version_associated_flavors( - datastore_type=parsed_args.datastore_type, - datastore_version_id=parsed_args.datastore_version_id) + datastore=parsed_args.datastore_type, + version_id=parsed_args.datastore_version_id) elif (not parsed_args.datastore_type and not parsed_args.datastore_version_id): flavors = db_flavors.list() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/troveclient/tests/osc/v1/test_database_clusters.py new/python-troveclient-2.17.0/troveclient/tests/osc/v1/test_database_clusters.py --- old/python-troveclient-2.16.0/troveclient/tests/osc/v1/test_database_clusters.py 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/troveclient/tests/osc/v1/test_database_clusters.py 2018-10-31 15:05:42.000000000 +0100 @@ -140,15 +140,21 @@ 'flavor="03",volume=3'] parsed_instances = [{'flavor': '02', 'volume': 2}, {'flavor': '03', 'volume': 3}] + extended_properties = "foo_properties=foo_value" + parsed_extended_properties = {'foo_properties': 'foo_value'} mock_parse_instance_opts.return_value = parsed_instances args = ['test-name', 'vertica', '7.1', '--instance', instances[0], - '--instance', instances[1]] + '--instance', instances[1], + '--extended-properties', extended_properties, + '--configuration', 'config01'] verifylist = [ ('name', 'test-name'), ('datastore', 'vertica'), ('datastore_version', '7.1'), ('instances', instances), + ('extended_properties', extended_properties), + ('configuration', 'config01'), ] parsed_args = self.check_parser(self.cmd, args, verifylist) columns, data = self.cmd.take_action(parsed_args) @@ -156,7 +162,9 @@ parsed_args.name, parsed_args.datastore, parsed_args.datastore_version, instances=parsed_instances, - locality=parsed_args.locality) + locality=parsed_args.locality, + extended_properties=parsed_extended_properties, + configuration=parsed_args.configuration) self.assertEqual(self.columns, columns) self.assertEqual(self.values, data) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/troveclient/tests/osc/v1/test_database_flavors.py new/python-troveclient-2.17.0/troveclient/tests/osc/v1/test_database_flavors.py --- old/python-troveclient-2.16.0/troveclient/tests/osc/v1/test_database_flavors.py 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/troveclient/tests/osc/v1/test_database_flavors.py 2018-10-31 15:05:42.000000000 +0100 @@ -32,6 +32,8 @@ self.cmd = database_flavors.ListDatabaseFlavors(self.app, None) self.data = [self.fake_flavors.get_flavors_1()] self.flavor_client.list.return_value = self.data + self.flavor_client.list_datastore_version_associated_flavors. \ + return_value = self.data def test_flavor_list_defaults(self): parsed_args = self.check_parser(self.cmd, [], []) @@ -40,6 +42,18 @@ self.assertEqual(self.columns, columns) self.assertEqual([self.values], values) + def test_flavor_list_with_optional_args(self): + args = ['--datastore-type', 'mysql', + '--datastore-version-id', '5.6'] + parsed_args = self.check_parser(self.cmd, args, []) + list_flavor_dict = {'datastore': 'mysql', + 'version_id': '5.6'} + columns, values = self.cmd.take_action(parsed_args) + self.flavor_client.list_datastore_version_associated_flavors. \ + assert_called_once_with(**list_flavor_dict) + self.assertEqual(self.columns, columns) + self.assertEqual([self.values], values) + class TestFlavorShow(TestFlavors): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/troveclient/tests/test_client.py new/python-troveclient-2.17.0/troveclient/tests/test_client.py --- old/python-troveclient-2.16.0/troveclient/tests/test_client.py 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/troveclient/tests/test_client.py 2018-10-31 15:05:42.000000000 +0100 @@ -44,7 +44,7 @@ '0', version_map) def test_client_with_auth_system_without_auth_plugin(self): - self.assertRaisesRegexp( + self.assertRaisesRegex( exceptions.AuthSystemNotFound, "AuthSystemNotFound: 'something'", other_client.HTTPClient, user='user', password='password', projectid='project', timeout=2, auth_url="http://www.blah.com", @@ -147,7 +147,7 @@ mock_request.side_effect = requests.exceptions.ConnectionError( 'connection refused') with mock.patch('requests.request', mock_request): - self.assertRaisesRegexp( + self.assertRaisesRegex( exceptions.ClientException, 'Unable to establish connection: connection refused', instance.get, '/instances') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/troveclient/tests/test_clusters.py new/python-troveclient-2.17.0/troveclient/tests/test_clusters.py --- old/python-troveclient-2.16.0/troveclient/tests/test_clusters.py 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/troveclient/tests/test_clusters.py 2018-10-31 15:05:42.000000000 +0100 @@ -72,9 +72,19 @@ clusters_test._create = mock.Mock(side_effect=side_effect_func) instances = [{'flavor-id': 11, 'volume': 2}] locality = 'affinity' + extended_properties = { + 'num_configsvr': 5, + 'num_mongos': 7, + 'configsvr_volume_size': 11, + 'configsvr_volume_type': 'foo_type', + 'mongos_volume_size': 12, + 'mongos_volume_type': 'bar_type'} + configuration = 'test-config' path, body, resp_key = clusters_test.create("test-name", "datastore", "datastore-version", - instances, locality) + instances, locality, + extended_properties, + configuration) self.assertEqual("/clusters", path) self.assertEqual("cluster", resp_key) self.assertEqual("test-name", body["cluster"]["name"]) @@ -83,6 +93,9 @@ body["cluster"]["datastore"]["version"]) self.assertEqual(instances, body["cluster"]["instances"]) self.assertEqual(locality, body["cluster"]["locality"]) + self.assertEqual(extended_properties, + body["cluster"]["extended_properties"]) + self.assertEqual(configuration, body["cluster"]["configuration"]) def test_list(self): page_mock = mock.Mock() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/troveclient/tests/test_instances.py new/python-troveclient-2.17.0/troveclient/tests/test_instances.py --- old/python-troveclient-2.16.0/troveclient/tests/test_instances.py 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/troveclient/tests/test_instances.py 2018-10-31 15:05:42.000000000 +0100 @@ -124,6 +124,16 @@ page_mock.assert_called_with("/instances", "instances", limit, marker, include_clustered) + def test_detailed_list(self): + page_mock = mock.Mock() + self.instances._paginated = page_mock + limit = "test-limit" + marker = "test-marker" + include_clustered = {'include_clustered': False} + self.instances.list(limit, marker, detailed=True) + page_mock.assert_called_with("/instances/detail", "instances", limit, + marker, include_clustered) + def test_get(self): def side_effect_func(path, inst): return path, inst diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/troveclient/tests/test_v1_shell.py new/python-troveclient-2.17.0/troveclient/tests/test_v1_shell.py --- old/python-troveclient-2.16.0/troveclient/tests/test_v1_shell.py 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/troveclient/tests/test_v1_shell.py 2018-10-31 15:05:42.000000000 +0100 @@ -223,7 +223,7 @@ cmd = 'flavor-list --datastore_type mysql' exepcted_error_msg = ('Missing argument\(s\): ' 'datastore_type, datastore_version_id') - self.assertRaisesRegexp( + self.assertRaisesRegex( exceptions.MissingArgs, exepcted_error_msg, self.run_command, cmd) @@ -258,7 +258,7 @@ cmd = 'volume-type-list --datastore_type mysql' exepcted_error_msg = ('Missing argument\(s\): ' 'datastore_type, datastore_version_id') - self.assertRaisesRegexp( + self.assertRaisesRegex( exceptions.MissingArgs, exepcted_error_msg, self.run_command, cmd) @@ -390,7 +390,7 @@ def test_boot_locality_error(self): cmd = ('create slave-1 1 --size 1 --locality=affinity ' '--replica_of=master_1') - self.assertRaisesRegexp( + self.assertRaisesRegex( exceptions.ValidationError, 'Cannot specify locality when adding replicas to existing ' 'master.', @@ -399,7 +399,7 @@ def test_boot_nic_error(self): cmd = ('create test-member-1 1 --size 1 --volume_type lvm ' '--nic net-id=some-id,port-id=some-id') - self.assertRaisesRegexp( + self.assertRaisesRegex( exceptions.ValidationError, 'Invalid NIC argument: nic=\'net-id=some-id,port-id=some-id\'', self.run_command, cmd) @@ -474,7 +474,7 @@ def test_cluster_create_error(self): cmd = ('cluster-create test-clstr vertica 7.1 --instance volume=2 ' '--instance flavor=2,volume=1') - self.assertRaisesRegexp( + self.assertRaisesRegex( exceptions.MissingArgs, "Missing option 'flavor'", self.run_command, cmd) @@ -516,6 +516,50 @@ 'name': 'test-clstr2', 'locality': 'affinity'}}) + def test_cluster_create_with_configuration(self): + cmd = ('cluster-create test-clstr2 redis 3.0 ' + '--configuration=config01 ' + '--instance flavor=2,volume=1 ' + '--instance flavor=02,volume=1 ' + '--instance flavor=2,volume=1 ') + self.run_command(cmd) + self.assert_called_anytime( + 'POST', '/clusters', + {'cluster': { + 'instances': [ + {'flavorRef': '2', + 'volume': {'size': '1'}}, + {'flavorRef': '02', + 'volume': {'size': '1'}}, + {'flavorRef': '2', + 'volume': {'size': '1'}}, + ], + 'datastore': {'version': '3.0', 'type': 'redis'}, + 'name': 'test-clstr2', + 'configuration': 'config01'}}) + + def test_cluster_create_with_extended_properties(self): + cmd = ('cluster-create test-clstr3 mongodb 4.0 ' + '--instance flavor=2,volume=1 ' + '--instance flavor=02,volume=1 ' + '--instance flavor=2,volume=1 ' + '--extended_properties num_mongos=3') + self.run_command(cmd) + self.assert_called_anytime( + 'POST', '/clusters', + {'cluster': { + 'instances': [ + {'flavorRef': '2', + 'volume': {'size': '1'}}, + {'flavorRef': '02', + 'volume': {'size': '1'}}, + {'flavorRef': '2', + 'volume': {'size': '1'}}, + ], + 'datastore': {'version': '4.0', 'type': 'mongodb'}, + 'name': 'test-clstr3', + 'extended_properties': {'num_mongos': '3'}}}) + def test_cluster_create_with_nic_az(self): cmd = ('cluster-create test-clstr1 vertica 7.1 ' '--instance flavor=2,volume=2,nic=\'net-id=some-id\',' @@ -548,7 +592,7 @@ 'port-id=some-port-id,availability_zone=2 ' '--instance flavor=2,volume=1,nic=net-id=some-id,' 'port-id=some-port-id,availability_zone=2') - self.assertRaisesRegexp( + self.assertRaisesRegex( exceptions.ValidationError, "Invalid 'nic' option. " "The value must be quoted.", self.run_command, cmd) @@ -559,7 +603,7 @@ 'availability_zone=2 ' '--instance flavor=2,volume=1,nic=\'v4-fixed-ip=10.0.0.1\',' 'availability_zone=2') - self.assertRaisesRegexp( + self.assertRaisesRegex( exceptions.ValidationError, 'Invalid NIC argument', self.run_command, cmd) @@ -582,9 +626,9 @@ def test_datastore_version_show_error(self): expected_error_msg = ('The datastore name or id is required to ' 'retrieve a datastore version by name.') - self.assertRaisesRegexp(exceptions.NoUniqueMatch, expected_error_msg, - self.run_command, - 'datastore-version-show v-56') + self.assertRaisesRegex(exceptions.NoUniqueMatch, expected_error_msg, + self.run_command, + 'datastore-version-show v-56') def test_configuration_list(self): self.run_command('configuration-list') @@ -616,7 +660,7 @@ expected_error_msg = ('The datastore name or id is required to ' 'retrieve the parameters for the configuration ' 'group by name') - self.assertRaisesRegexp( + self.assertRaisesRegex( exceptions.NoUniqueMatch, expected_error_msg, self.run_command, 'configuration-parameter-list v-156') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/troveclient/v1/clusters.py new/python-troveclient-2.17.0/troveclient/v1/clusters.py --- old/python-troveclient-2.16.0/troveclient/v1/clusters.py 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/troveclient/v1/clusters.py 2018-10-31 15:05:42.000000000 +0100 @@ -37,7 +37,7 @@ resource_class = Cluster def create(self, name, datastore, datastore_version, instances=None, - locality=None): + locality=None, extended_properties=None, configuration=None): """Create (boot) a new cluster.""" body = {"cluster": { "name": name @@ -51,6 +51,10 @@ body["cluster"]["instances"] = instances if locality: body["cluster"]["locality"] = locality + if extended_properties: + body["cluster"]["extended_properties"] = extended_properties + if configuration: + body["cluster"]["configuration"] = configuration return self._create("/clusters", body, "cluster") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/troveclient/v1/instances.py new/python-troveclient-2.17.0/troveclient/v1/instances.py --- old/python-troveclient-2.16.0/troveclient/v1/instances.py 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/troveclient/v1/instances.py 2018-10-31 15:05:42.000000000 +0100 @@ -179,12 +179,15 @@ resp, body = self.api.client.patch(url, body=body) common.check_for_exceptions(resp, body, url) - def list(self, limit=None, marker=None, include_clustered=False): + def list(self, limit=None, marker=None, include_clustered=False, + detailed=False): """Get a list of all instances. :rtype: list of :class:`Instance`. """ - return self._paginated("/instances", "instances", limit, marker, + detail = "/detail" if detailed else "" + url = "/instances%s" % detail + return self._paginated(url, "instances", limit, marker, {"include_clustered": include_clustered}) def get(self, instance): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-troveclient-2.16.0/troveclient/v1/shell.py new/python-troveclient-2.17.0/troveclient/v1/shell.py --- old/python-troveclient-2.16.0/troveclient/v1/shell.py 2018-07-26 16:04:48.000000000 +0200 +++ new/python-troveclient-2.17.0/troveclient/v1/shell.py 2018-10-31 15:05:42.000000000 +0100 @@ -41,6 +41,17 @@ NO_LOG_FOUND_ERROR = _("ERROR: No published '%(log_name)s' log was found for " "%(instance)s.") LOCALITY_DOMAIN = ['affinity', 'anti-affinity'] +EXT_PROPS_METAVAR = INSTANCE_METAVAR +EXT_PROPS_HELP = _("Add extended properties for cluster create. " + "Currently only support MongoDB options, other databases " + "will be added in the future. " + "MongoDB: " + " num_configsvr=<number_of_configsvr>, " + " num_mongos=<number_of_mongos>, " + " configsvr_volume_size=<disk_size_in_GB>, " + " configsvr_volume_type=<volume_type>, " + " mongos_volume_size=<disk_size_in_GB>, " + " mongos_volume_type=<volume_type>.") try: import simplejson as json @@ -860,6 +871,11 @@ return instances +def _parse_extended_properties(extended_properties): + return dict([(k, v) for (k, v) in [kv.strip().split("=") + for kv in extended_properties.split(",")]]) + + @utils.arg('name', metavar='<name>', type=str, @@ -879,15 +895,30 @@ choices=LOCALITY_DOMAIN, help=_('Locality policy to use when creating cluster. Choose ' 'one of %(choices)s.')) [email protected]('--extended_properties', + metavar=EXT_PROPS_METAVAR, + default=None, + help=EXT_PROPS_HELP) [email protected]('--configuration', + metavar='<configuration>', + type=str, + default=None, + help=_('ID of the configuration group to attach to the cluster.')) @utils.service_type('database') def do_cluster_create(cs, args): """Creates a new cluster.""" instances = _parse_instance_options(cs, args.instances) + extended_properties = {} + if args.extended_properties: + extended_properties = _parse_extended_properties( + args.extended_properties) cluster = cs.clusters.create(args.name, args.datastore, args.datastore_version, instances=instances, - locality=args.locality) + locality=args.locality, + extended_properties=extended_properties, + configuration=args.configuration) _print_cluster(cluster)
