Hello community, here is the log from the commit of package python-aodhclient for openSUSE:Factory checked in at 2018-09-07 15:36:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-aodhclient (Old) and /work/SRC/openSUSE:Factory/.python-aodhclient.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-aodhclient" Fri Sep 7 15:36:48 2018 rev:6 rq:633058 version:1.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-aodhclient/python-aodhclient.changes 2018-03-19 23:34:08.282531034 +0100 +++ /work/SRC/openSUSE:Factory/.python-aodhclient.new/python-aodhclient.changes 2018-09-07 15:36:51.838700671 +0200 @@ -1,0 +2,26 @@ +Fri Aug 31 16:23:21 UTC 2018 - [email protected] + +- update to version 1.1.0 + - tests: stop using Ceilometer legacy resource types + - Cleanup setup.cfg + - Fixup README + - Remove log translations + - Fix Gnocchi tarball URL + - Update reno for stable/pike + - Fix doc builds + - remove threshold alarms + - Remove setting of version/release from releasenotes + - cleanup coveragerc + - cli: replace metrics by metric + - Update reno for stable/queens + - doc: remove mention of combination alarms + - Update documentation URLs + - Follow the new PTI for document build + - Set the Cliff namespace + - Fix gnocchi/pifpaf requirements + - Not able to set threshold value to ‘0’ in aodh alarm creation + - block sphinx 1.6.1 + - Docs: switch to openstackdocstheme + - delete --debug in a shell command + +------------------------------------------------------------------- Old: ---- aodhclient-0.9.0.tar.gz New: ---- aodhclient-1.1.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-aodhclient.spec ++++++ --- /var/tmp/diff_new_pack.xHlm84/_old 2018-09-07 15:36:52.282700174 +0200 +++ /var/tmp/diff_new_pack.xHlm84/_new 2018-09-07 15:36:52.286700169 +0200 @@ -18,37 +18,38 @@ %global sname aodhclient Name: python-aodhclient -Version: 0.9.0 +Version: 1.1.0 Release: 0 Summary: Python client library for Aodh License: Apache-2.0 Group: Development/Languages/Python -Url: https://github.com/openstack/python-aodhclient +URL: https://github.com/openstack/python-aodhclient Source0: https://files.pythonhosted.org/packages/source/a/%{sname}/%{sname}-%{version}.tar.gz BuildRequires: openstack-macros -BuildRequires: python-cliff >= 2.8.0 +BuildRequires: python-cliff >= 1.14.0 BuildRequires: python-devel -BuildRequires: python-keystoneauth1 >= 3.3.0 -BuildRequires: python-oslo.serialization >= 2.18.0 -BuildRequires: python-oslo.utils >= 3.33.0 -BuildRequires: python-oslotest >= 3.2.0 -BuildRequires: python-pbr >= 2.0.0 -BuildRequires: python-pyparsing >= 2.1.0 -BuildRequires: python-python-subunit >= 1.0.0 -BuildRequires: python-requests >= 2.14.2 -BuildRequires: python-setuptools >= 16.0 -BuildRequires: python-testrepository >= 0.0.18 -BuildRequires: python-testtools >= 2.2.0 -Requires: python-cliff >= 2.8.0 -Requires: python-debtcollector >= 1.2.0 -Requires: python-keystoneauth1 >= 3.3.0 -Requires: python-osc-lib >= 1.8.0 -Requires: python-oslo.i18n >= 3.15.3 -Requires: python-oslo.serialization >= 2.18.0 -Requires: python-oslo.utils >= 3.33.0 -Requires: python-pbr >= 2.0.0 -Requires: python-pyparsing >= 2.1.0 -Requires: python-six >= 1.10.0 +BuildRequires: python-keystoneauth1 >= 1.0.0 +BuildRequires: python-openstackdocstheme +BuildRequires: python-oslo.serialization >= 1.4.0 +BuildRequires: python-oslo.utils >= 2.0.0 +BuildRequires: python-oslotest +BuildRequires: python-pbr >= 1.4 +BuildRequires: python-pyparsing +BuildRequires: python-python-subunit +BuildRequires: python-requests +BuildRequires: python-setuptools +BuildRequires: python-testrepository +BuildRequires: python-testtools +Requires: python-cliff >= 1.14.0 +Requires: python-debtcollector +Requires: python-keystoneauth1 >= 1.0.0 +Requires: python-osc-lib >= 1.0.1 +Requires: python-oslo.i18n >= 1.5.0 +Requires: python-oslo.serialization >= 1.4.0 +Requires: python-oslo.utils >= 2.0.0 +Requires: python-pbr >= 1.4 +Requires: python-pyparsing +Requires: python-six BuildArch: noarch %description @@ -59,7 +60,7 @@ Summary: Documentation for OpenStack Aodh API Client Group: Documentation/HTML BuildRequires: python-Sphinx -BuildRequires: python-oslosphinx >= 4.7.0 +BuildRequires: python-oslosphinx %description doc This is a client library for Aodh built on the Aodh API. It @@ -77,7 +78,7 @@ %install %py2_install -%{__python2} setup.py build_sphinx +PBR_VERSION=%{version} sphinx-build -b html doc/source doc/build/html # Fix hidden-file-or-dir warnings rm -rf html/.doctrees html/.buildinfo ++++++ _service ++++++ --- /var/tmp/diff_new_pack.xHlm84/_old 2018-09-07 15:36:52.318700133 +0200 +++ /var/tmp/diff_new_pack.xHlm84/_new 2018-09-07 15:36:52.318700133 +0200 @@ -1,8 +1,8 @@ <services> <service mode="disabled" name="renderspec"> - <param name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/queens/openstack/aodhclient/aodhclient.spec.j2</param> + <param name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/rocky/openstack/aodhclient/aodhclient.spec.j2</param> <param name="output-name">python-aodhclient.spec</param> - <param name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/queens/requirements.txt</param> + <param name="requirements">https://raw.githubusercontent.com/openstack/python-aodhclient/stable/rocky/requirements.txt</param> <param name="changelog-email">[email protected]</param> <param name="changelog-provider">gh,openstack,python-aodhclient</param> </service> ++++++ aodhclient-0.9.0.tar.gz -> aodhclient-1.1.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/.coveragerc new/aodhclient-1.1.0/.coveragerc --- old/aodhclient-0.9.0/.coveragerc 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/.coveragerc 2018-06-18 14:37:32.000000000 +0200 @@ -1,7 +1,6 @@ [run] branch = True source = aodhclient -omit = aodhclient/openstack/* [report] ignore_errors = True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/AUTHORS new/aodhclient-1.1.0/AUTHORS --- old/aodhclient-0.9.0/AUTHORS 2017-03-01 23:27:16.000000000 +0100 +++ new/aodhclient-1.1.0/AUTHORS 2018-06-18 14:40:38.000000000 +0200 @@ -2,6 +2,7 @@ Cao Xuan Hoang <[email protected]> Chaozhe.Chen <[email protected]> Doug Hellmann <[email protected]> +Eyal <[email protected]> Hanxi Liu <[email protected]> Jon Schlueter <[email protected]> Julien Danjou <[email protected]> @@ -11,21 +12,29 @@ Mehdi Abaakouk <[email protected]> Mehdi Abaakouk <[email protected]> Monty Taylor <[email protected]> +Nguyen Hai <[email protected]> OpenStack Release Bot <[email protected]> PanFengyun <[email protected]> Pradeep Kilambi <[email protected]> +Rui Yuan Dou <[email protected]> Stéphane Albert <[email protected]> Swapnil Kulkarni (coolsvap) <[email protected]> Thomas Bechtold <[email protected]> Tony Breeds <[email protected]> +Tovin Seven <[email protected]> Zhao Lei <[email protected]> ZhiQiang Fan <[email protected]> Zi Lian Ji <[email protected]> +Zuul <[email protected]> +gord chung <[email protected]> gordon chung <[email protected]> houweichao <[email protected]> +lipan <[email protected]> liusheng <[email protected]> liyuanzhen <[email protected]> +rajat29 <[email protected]> venkatamahesh <[email protected]> xialinjuan <[email protected]> xiaozhuangqing <[email protected]> zhangguoqing <[email protected]> +zhangyangyang <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/ChangeLog new/aodhclient-1.1.0/ChangeLog --- old/aodhclient-0.9.0/ChangeLog 2017-03-01 23:27:16.000000000 +0100 +++ new/aodhclient-1.1.0/ChangeLog 2018-06-18 14:40:38.000000000 +0200 @@ -1,6 +1,35 @@ CHANGES ======= +1.1.0 +----- + +* Fixup README +* cli: replace metrics by metric +* Follow the new PTI for document build +* Not able to set threshold value to ‘0’ in aodh alarm creation +* Update reno for stable/queens + +1.0.0 +----- + +* remove threshold alarms +* Set the Cliff namespace +* Fix doc builds +* delete --debug in a shell command +* Remove setting of version/release from releasenotes +* doc: remove mention of combination alarms +* Cleanup setup.cfg +* Update reno for stable/pike +* Docs: switch to openstackdocstheme +* Fix gnocchi/pifpaf requirements +* Update documentation URLs +* Fix Gnocchi tarball URL +* block sphinx 1.6.1 +* cleanup coveragerc +* tests: stop using Ceilometer legacy resource types +* Remove log translations + 0.9.0 ----- @@ -8,7 +37,7 @@ * Clean deprecated "query" paremeter in alarm.list() * Correct the port number of gnocchi endpoint * Trivial-fix: make the capabilities help message more specific in OSC -* Remove the duplicated __version__ definition +* Remove the duplicated \_\_version\_\_ definition * Trivial: remove support for py34 * Update reno for stable/ocata * Remove unused test dependency @@ -20,7 +49,7 @@ * Modified the help info * Enable coverage report in console output * [doc] Note lack of constraints is a choice -* Replaces uuid.uuid4 with uuidutils.generate_uuid() +* Replaces uuid.uuid4 with uuidutils.generate\_uuid() * Bump hacking to 0.12 * Add plug-in summary for osc doc * Enable release notes translation @@ -41,12 +70,12 @@ ----- * Add Python 3.5 classifier and venv -* Add event_id for alarm-history display +* Add event\_id for alarm-history display * Add pagination support in Aodhclient * Split alarm query and alarm list in SDK layer * Support get/set alarm state interfaces * Add releasenotes for Newton updates -* add default value for http_status in ClientException +* add default value for http\_status in ClientException * fix help text for option --composite-rule * improve threshold & event alarm query formatting * Add explanation for how to get meter name @@ -79,7 +108,7 @@ * Remove keystonemiddleware dependency * Use pifpaf to setup tests * Remove Babel dependency -* format the output of time_constraints +* format the output of time\_constraints * Add --filter to "alarm list" * Remove unused mailmap file * Support easier query usage for alarm history search @@ -88,12 +117,12 @@ * Add --query to alarm list * Clean flake8 paths and unused config options * Don't support "alarm search" and mandatory --type in "alarm list" -* tox: remove useless install_command +* tox: remove useless install\_command * Use overtest to run Gnocchi in tests * Trival fix a typo * Fix aodh client fails when command with the arg --time-constraint * Fix the -q/--query in threshold alarm creation -* Use assert_called_once_with() in test_alarm_cli.py +* Use assert\_called\_once\_with() in test\_alarm\_cli.py * Fix the wrong error info of parameter resource-type * Fix a minor doc error * Remove unused package requirement of "futurist" @@ -152,13 +181,13 @@ * Set x-roles when noauth is used * Convert keystoneauth exceptions by ours * Fix some spelling typo in manual and help output -* Always make resource_id positional +* Always make resource\_id positional * cli: make resource type non positional * benchmark: use processes rather than threads * benchmark: add support for measures add -* metric: change all resource_id options to -r +* metric: change all resource\_id options to -r * benchmark: add get metric -* benchmark: rename argument to `count' +* benchmark: rename argument to \`count' * benchmark: add metric create * get gnocchi api version from args/env * noauth: simplify class reference @@ -170,22 +199,22 @@ * Add capabilities support to cli * Remove upper cap on Sphinx * Remove Python 3.3 support -* Name the package `gnocchiclient' -* metric: allow to create metric with name and no resource_id +* Name the package \`gnocchiclient' +* metric: allow to create metric with name and no resource\_id * shell: improve error info * Add six in requirements * shell: fix exception catching on cleanup * Replaces 'archive policy' by 'archive-policy' -* Change ignore-errors to ignore_errors -* Remove entry_points +* Change ignore-errors to ignore\_errors +* Remove entry\_points * Don't always load client -* Remove now useless build_url method +* Remove now useless build\_url method * Replace keystoneclient by keystoneauth1 * Fix help typo -* tox: Allow to pass some OS_* variables +* tox: Allow to pass some OS\_\* variables * Support aggregation accross metrics and resources * Allow CRUD measurements -* Allow CRUD metric with an resource_id and an name +* Allow CRUD metric with an resource\_id and an name * Support CRUD for metric * resource: remove -q for --query it conflicts with --quiet * Allow quoted string with ' in query parser diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/HACKING.rst new/aodhclient-1.1.0/HACKING.rst --- old/aodhclient-0.9.0/HACKING.rst 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/HACKING.rst 2018-06-18 14:37:32.000000000 +0200 @@ -1,4 +1,4 @@ aodhclient Style Commandments ================================ -Read the OpenStack Style Commandments http://docs.openstack.org/developer/hacking/ +Read the OpenStack Style Commandments https://docs.openstack.org/hacking/latest/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/PKG-INFO new/aodhclient-1.1.0/PKG-INFO --- old/aodhclient-0.9.0/PKG-INFO 2017-03-01 23:27:17.000000000 +0100 +++ new/aodhclient-1.1.0/PKG-INFO 2018-06-18 14:40:39.000000000 +0200 @@ -1,26 +1,28 @@ -Metadata-Version: 1.1 +Metadata-Version: 2.1 Name: aodhclient -Version: 0.9.0 +Version: 1.1.0 Summary: Python client library for Aodh -Home-page: http://docs.openstack.org/developer/python-aodhclient +Home-page: https://docs.openstack.org/python-aodhclient/latest/ Author: OpenStack Author-email: [email protected] License: UNKNOWN -Description: ============= +Description: ========== aodhclient - ============= + ========== Python bindings to the OpenStack Aodh API - This is a client for OpenStack Aodh API. There's :doc:`a Python API - <api>` (the :mod:`aodhclient` module), and a :doc:`command-line script - <shell>` (installed as :program:`aodh`). Each implements the entire - OpenStack Aodh API. + This is a client for OpenStack Aodh API. There's a `Python API + <https://docs.openstack.org/python-aodhclient/latest/api.html>`_ (the + aodhclient module), and a `command-line script + <https://docs.openstack.org/python-aodhclient/latest/shell.html>`_ (installed + as aodh). Each implements the entire OpenStack Aodh API. * Free software: Apache license - * Documentation: http://docs.openstack.org/developer/python-aodhclient - * Source: http://git.openstack.org/cgit/openstack/python-aodhclient - * Bugs: http://bugs.launchpad.net/python-aodhclient + * Release notes: https://releases.openstack.org/teams/telemetry.html + * Documentation: https://docs.openstack.org/python-aodhclient/latest/ + * Source: https://git.openstack.org/cgit/openstack/python-aodhclient + * Bugs: https://bugs.launchpad.net/python-aodhclient Platform: UNKNOWN @@ -34,3 +36,4 @@ Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.5 +Provides-Extra: test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/README.rst new/aodhclient-1.1.0/README.rst --- old/aodhclient-0.9.0/README.rst 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/README.rst 2018-06-18 14:37:32.000000000 +0200 @@ -1,15 +1,17 @@ -============= +========== aodhclient -============= +========== Python bindings to the OpenStack Aodh API -This is a client for OpenStack Aodh API. There's :doc:`a Python API -<api>` (the :mod:`aodhclient` module), and a :doc:`command-line script -<shell>` (installed as :program:`aodh`). Each implements the entire -OpenStack Aodh API. +This is a client for OpenStack Aodh API. There's a `Python API +<https://docs.openstack.org/python-aodhclient/latest/api.html>`_ (the +aodhclient module), and a `command-line script +<https://docs.openstack.org/python-aodhclient/latest/shell.html>`_ (installed +as aodh). Each implements the entire OpenStack Aodh API. * Free software: Apache license -* Documentation: http://docs.openstack.org/developer/python-aodhclient -* Source: http://git.openstack.org/cgit/openstack/python-aodhclient -* Bugs: http://bugs.launchpad.net/python-aodhclient +* Release notes: https://releases.openstack.org/teams/telemetry.html +* Documentation: https://docs.openstack.org/python-aodhclient/latest/ +* Source: https://git.openstack.org/cgit/openstack/python-aodhclient +* Bugs: https://bugs.launchpad.net/python-aodhclient diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/aodhclient/i18n.py new/aodhclient-1.1.0/aodhclient/i18n.py --- old/aodhclient-0.9.0/aodhclient/i18n.py 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/aodhclient/i18n.py 2018-06-18 14:37:32.000000000 +0200 @@ -16,13 +16,3 @@ # The primary translation function using the well-known name "_" _ = _translators.primary - -# Translators for log levels. -# -# The abbreviated names are meant to reflect the usual use of a short -# name like '_'. The "L" is for "log" and the other letter comes from -# the level. -_LI = _translators.log_info -_LW = _translators.log_warning -_LE = _translators.log_error -_LC = _translators.log_critical diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/aodhclient/shell.py new/aodhclient-1.1.0/aodhclient/shell.py --- old/aodhclient-0.9.0/aodhclient/shell.py 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/aodhclient/shell.py 2018-06-18 14:37:32.000000000 +0200 @@ -57,7 +57,7 @@ super(AodhShell, self).__init__( description='Aodh command line client', version=__version__, - command_manager=AodhCommandManager(None), + command_manager=AodhCommandManager('aodhclient'), deferred_help=True, ) @@ -74,8 +74,8 @@ :param version: version number for the application :paramtype version: str """ - parser = super(AodhShell, self).build_option_parser(description, - version) + parser = super(AodhShell, self).build_option_parser( + description, version, argparse_kwargs={'allow_abbrev': False}) # Global arguments, one day this should go to keystoneauth1 parser.add_argument( '--os-region-name', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/aodhclient/tests/functional/test_alarm.py new/aodhclient-1.1.0/aodhclient/tests/functional/test_alarm.py --- old/aodhclient-0.9.0/aodhclient/tests/functional/test_alarm.py 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/aodhclient/tests/functional/test_alarm.py 2018-06-18 14:37:32.000000000 +0200 @@ -184,171 +184,27 @@ self.assertNotIn(ALARM_ID, [r['alarm_id'] for r in self.parser.listing(result)]) - def test_threshold_scenario(self): - - PROJECT_ID = uuidutils.generate_uuid() - - # CREATE - result = self.aodh(u'alarm', - params=(u"create --type threshold --name alarm_th " - "-m meter_name --threshold 5 " - "--project-id %s" % PROJECT_ID)) - alarm = self.details_multiple(result)[0] - ALARM_ID = alarm['alarm_id'] - self.assertEqual('alarm_th', alarm['name']) - self.assertEqual('meter_name', alarm['meter_name']) - self.assertEqual('5.0', alarm['threshold']) - - # CREATE WITH --TIME-CONSTRAINT - result = self.aodh( - u'alarm', - params=(u"create --type threshold --name alarm_tc " - "-m meter_name --threshold 5 " - "--time-constraint " - "name=cons1;start='0 11 * * *';duration=300 " - "--time-constraint " - "name=cons2;start='0 23 * * *';duration=600 " - "--project-id %s" % PROJECT_ID)) - alarm = self.details_multiple(result)[0] - self.assertEqual('alarm_tc', alarm['name']) - self.assertEqual('meter_name', alarm['meter_name']) - self.assertEqual('5.0', alarm['threshold']) - self.assertIsNotNone(alarm['time_constraints']) - - # CREATE FAIL MISSING PARAM - self.assertRaises(exceptions.CommandFailed, - self.aodh, u'alarm', - params=(u"create --type threshold --name alarm_th " - "--project-id %s" % PROJECT_ID)) - - # UPDATE - result = self.aodh( - 'alarm', params=("update %s --severity critical --threshold 10" - % ALARM_ID)) - alarm_updated = self.details_multiple(result)[0] - self.assertEqual(ALARM_ID, alarm_updated["alarm_id"]) - self.assertEqual('critical', alarm_updated['severity']) - self.assertEqual('10.0', alarm_updated["threshold"]) - - # GET - result = self.aodh( - 'alarm', params="show %s" % ALARM_ID) - alarm_show = self.details_multiple(result)[0] - self.assertEqual(ALARM_ID, alarm_show["alarm_id"]) - self.assertEqual(PROJECT_ID, alarm_show["project_id"]) - self.assertEqual('alarm_th', alarm_show['name']) - self.assertEqual('meter_name', alarm_show['meter_name']) - self.assertEqual('10.0', alarm_show['threshold']) - - # GET BY NAME - result = self.aodh( - 'alarm', params="show --name alarm_th") - alarm_show = self.details_multiple(result)[0] - self.assertEqual(ALARM_ID, alarm_show["alarm_id"]) - self.assertEqual(PROJECT_ID, alarm_show["project_id"]) - self.assertEqual('alarm_th', alarm_show['name']) - self.assertEqual('meter_name', alarm_show['meter_name']) - self.assertEqual('10.0', alarm_show['threshold']) - - # GET BY NAME AND ID ERROR - self.assertRaises(exceptions.CommandFailed, - self.aodh, u'alarm', - params=(u"show %s --name alarm_th" % - ALARM_ID)) - - # LIST - result = self.aodh('alarm', params="list") - self.assertIn(ALARM_ID, - [r['alarm_id'] for r in self.parser.listing(result)]) - output_colums = ['alarm_id', 'type', 'name', 'state', 'severity', - 'enabled'] - for alarm_list in self.parser.listing(result): - self.assertEqual(sorted(output_colums), sorted(alarm_list.keys())) - if alarm_list["alarm_id"] == ALARM_ID: - self.assertEqual('alarm_th', alarm_list['name']) - - # LIST WITH PAGINATION - # list with limit - result = self.aodh('alarm', - params="list --limit 1") - alarm_list = self.parser.listing(result) - self.assertEqual(1, len(alarm_list)) - # list with sort with key=name dir=asc - result = self.aodh('alarm', - params="list --sort name:asc") - names = [r['name'] for r in self.parser.listing(result)] - sorted_name = sorted(names) - self.assertEqual(sorted_name, names) - # list with sort with key=name dir=asc and key=alarm_id dir=asc - result = self.aodh(u'alarm', - params=(u"create --type threshold --name alarm_th " - "-m meter_name --threshold 5 " - "--project-id %s" % PROJECT_ID)) - created_alarm_id = self.details_multiple(result)[0]['alarm_id'] - result = self.aodh('alarm', - params="list --sort name:asc --sort alarm_id:asc") - alarm_list = self.parser.listing(result) - ids_with_same_name = [] - names = [] - for alarm in alarm_list: - names.append(['alarm_name']) - if alarm['name'] == 'alarm_th': - ids_with_same_name.append(alarm['alarm_id']) - sorted_ids = sorted(ids_with_same_name) - sorted_names = sorted(names) - self.assertEqual(sorted_names, names) - self.assertEqual(sorted_ids, ids_with_same_name) - # list with sort with key=name dir=desc and with the marker equal to - # the alarm_id of the alarm_th we created for this test. - result = self.aodh('alarm', - params="list --sort name:desc " - "--marker %s" % created_alarm_id) - self.assertIn('alarm_tc', - [r['name'] for r in self.parser.listing(result)]) - self.aodh('alarm', params="delete %s" % created_alarm_id) - - # LIST WITH QUERY - result = self.aodh('alarm', - params=("list --query project_id=%s" % PROJECT_ID)) - alarm_list = self.parser.listing(result)[0] - self.assertEqual(ALARM_ID, alarm_list["alarm_id"]) - self.assertEqual('alarm_th', alarm_list['name']) - - # DELETE - result = self.aodh('alarm', params="delete %s" % ALARM_ID) - self.assertEqual("", result) - - # GET FAIL - result = self.aodh('alarm', params="show %s" % ALARM_ID, - fail_ok=True, merge_stderr=True) - expected = "Alarm %s not found (HTTP 404)" % ALARM_ID - self.assertFirstLineStartsWith(result.splitlines(), expected) - - # DELETE FAIL - result = self.aodh('alarm', params="delete %s" % ALARM_ID, - fail_ok=True, merge_stderr=True) - self.assertFirstLineStartsWith(result.splitlines(), expected) - - # LIST DOES NOT HAVE ALARM - result = self.aodh('alarm', params="list") - self.assertNotIn(ALARM_ID, - [r['alarm_id'] for r in self.parser.listing(result)]) - def test_composite_scenario(self): project_id = uuidutils.generate_uuid() + res_id = uuidutils.generate_uuid() # CREATE - result = self.aodh(u'alarm', - params=(u'create --type composite --name calarm1 ' - ' --composite-rule \'{"or":[{"threshold"' - ': 0.8,"meter_name": "cpu_util",' - '"type": "threshold"},{"and": [' - '{"threshold": 200, "meter_name": ' - '"disk.iops", "type": "threshold"},' - '{"threshold": 1000,"meter_name":' - '"network.incoming.packets.rate",' - '"type": "threshold"}]}]}\' ' - '--project-id %s' % project_id)) + result = self.aodh( + u'alarm', + params=(u'create --type composite --name calarm1 --composite-rule ' + '\'{"or":[{"threshold": 0.8, "metric": "cpu_util", ' + '"type": "gnocchi_resources_threshold", "resource_type": ' + '"generic", "resource_id": "%s", ' + '"aggregation_method": "mean"},' + '{"and": [{"threshold": 200, "metric": "disk.iops", ' + '"type": "gnocchi_resources_threshold", "resource_type": ' + '"generic", "resource_id": "%s", ' + '"aggregation_method": "mean"},' + '{"threshold": 1000, "metric": "memory",' + '"type": "gnocchi_resources_threshold", "resource_type": ' + '"generic", "resource_id": "%s", ' + '"aggregation_method": "mean"}]}]}\' --project-id %s' % + (res_id, res_id, res_id, project_id))) alarm = self.details_multiple(result)[0] alarm_id = alarm['alarm_id'] self.assertEqual('calarm1', alarm['name']) @@ -442,25 +298,6 @@ test(params) self.aodh('alarm', params='delete %s' % alarm['alarm_id']) - def test_threshold_alarm_create_show_query(self): - params = ('create --type threshold --name alarm-multiple-query ' - '-m cpu_util --threshold 90 --query "project_id=123;' - 'resource_id=456"') - expected_lines = { - 'query': 'project_id = 123 AND', - '': 'resource_id = 456' - } - self._test_alarm_create_show_query(params, expected_lines) - - params = ('create --type threshold --name alarm-single-query ' - '-m cpu_util --threshold 90 --query project_id=123') - expected_lines = {'query': 'project_id = 123'} - self._test_alarm_create_show_query(params, expected_lines) - - params = ('create --type threshold --name alarm-no-query ' - '-m cpu_util --threshold 90') - self._test_alarm_create_show_query(params, {'query': ''}) - def test_event_alarm_create_show_query(self): params = ('create --type event --name alarm-multiple-query ' '--query "traits.project_id=789;traits.resource_id=012"') @@ -481,8 +318,8 @@ def test_set_get_alarm_state(self): result = self.aodh( 'alarm', - params=("create --type threshold --name alarm_state_test " - "-m meter_name --threshold 5")) + params=('create --type event --name alarm_state_test ' + '--query "traits.project_id=789;traits.resource_id=012"')) alarm = self.details_multiple(result)[0] alarm_id = alarm['alarm_id'] result = self.aodh( @@ -508,15 +345,10 @@ RESOURCE_ID = uuidutils.generate_uuid() req = requests.post( - os.environ.get("GNOCCHI_ENDPOINT") + "/v1/resource/instance", + os.environ.get("GNOCCHI_ENDPOINT") + "/v1/resource/generic", auth=requests.auth.HTTPBasicAuth('admin', ''), json={ - "display_name": "myvm", - "flavor_id": "2", "host": "blah", "id": RESOURCE_ID, - "image_ref": "http://image", - "project_id": "BD3A1E52-1C62-44CB-BF04-660BD88CD74D", - "user_id": "BD3A1E52-1C62-44CB-BF04-660BD88CD74D", }) self.assertEqual(201, req.status_code) @@ -526,7 +358,7 @@ "--type gnocchi_resources_threshold " "--name alarm_gn1 --metric cpu_util " "--threshold 80 " - "--resource-id %s --resource-type instance " + "--resource-id %s --resource-type generic " "--aggregation-method last " "--project-id %s" % (RESOURCE_ID, PROJECT_ID))) @@ -538,7 +370,24 @@ self.assertEqual('last', alarm['aggregation_method']) self.assertEqual(RESOURCE_ID, alarm['resource_id']) - self.assertEqual('instance', alarm['resource_type']) + self.assertEqual('generic', alarm['resource_type']) + + # CREATE WITH --TIME-CONSTRAINT + result = self.aodh( + u'alarm', + params=(u"create --type gnocchi_resources_threshold " + "--name alarm_tc --metric cpu_util --threshold 80 " + "--resource-id %s --resource-type generic " + "--aggregation-method last --project-id %s " + "--time-constraint " + "name=cons1;start='0 11 * * *';duration=300 " + "--time-constraint " + "name=cons2;start='0 23 * * *';duration=600 " + % (RESOURCE_ID, PROJECT_ID))) + alarm = self.details_multiple(result)[0] + self.assertEqual('alarm_tc', alarm['name']) + self.assertEqual('80.0', alarm['threshold']) + self.assertIsNotNone(alarm['time_constraints']) # CREATE FAIL MISSING PARAM self.assertRaises(exceptions.CommandFailed, @@ -546,7 +395,7 @@ params=(u"create " "--type gnocchi_resources_threshold " "--name alarm1 --metric cpu_util " - "--resource-id %s --resource-type instance " + "--resource-id %s --resource-type generic " "--aggregation-method last " "--project-id %s" % (RESOURCE_ID, PROJECT_ID))) @@ -571,7 +420,7 @@ self.assertEqual('90.0', alarm_show['threshold']) self.assertEqual('critical', alarm_show['severity']) self.assertEqual('last', alarm_show['aggregation_method']) - self.assertEqual('instance', alarm_show['resource_type']) + self.assertEqual('generic', alarm_show['resource_type']) # GET BY NAME result = self.aodh( @@ -583,7 +432,7 @@ self.assertEqual('90.0', alarm_show['threshold']) self.assertEqual('critical', alarm_show['severity']) self.assertEqual('last', alarm_show['aggregation_method']) - self.assertEqual('instance', alarm_show['resource_type']) + self.assertEqual('generic', alarm_show['resource_type']) # GET BY NAME AND ID ERROR self.assertRaises(exceptions.CommandFailed, @@ -602,6 +451,49 @@ if alarm_list["alarm_id"] == ALARM_ID: self.assertEqual('alarm_gn1', alarm_list['name']) + # LIST WITH PAGINATION + # list with limit + result = self.aodh('alarm', + params="list --limit 1") + alarm_list = self.parser.listing(result) + self.assertEqual(1, len(alarm_list)) + # list with sort with key=name dir=asc + result = self.aodh('alarm', + params="list --sort name:asc") + names = [r['name'] for r in self.parser.listing(result)] + sorted_name = sorted(names) + self.assertEqual(sorted_name, names) + # list with sort with key=name dir=asc and key=alarm_id dir=asc + result = self.aodh( + u'alarm', + params=(u"create --type gnocchi_resources_threshold " + "--name alarm_th --metric cpu_util --threshold 80 " + "--resource-id %s --resource-type generic " + "--aggregation-method last --project-id %s " + % (RESOURCE_ID, PROJECT_ID))) + created_alarm_id = self.details_multiple(result)[0]['alarm_id'] + result = self.aodh('alarm', + params="list --sort name:asc --sort alarm_id:asc") + alarm_list = self.parser.listing(result) + ids_with_same_name = [] + names = [] + for alarm in alarm_list: + names.append(['alarm_name']) + if alarm['name'] == 'alarm_th': + ids_with_same_name.append(alarm['alarm_id']) + sorted_ids = sorted(ids_with_same_name) + sorted_names = sorted(names) + self.assertEqual(sorted_names, names) + self.assertEqual(sorted_ids, ids_with_same_name) + # list with sort with key=name dir=desc and with the marker equal to + # the alarm_id of the alarm_th we created for this test. + result = self.aodh('alarm', + params="list --sort name:desc " + "--marker %s" % created_alarm_id) + self.assertIn('alarm_tc', + [r['name'] for r in self.parser.listing(result)]) + self.aodh('alarm', params="delete %s" % created_alarm_id) + # LIST WITH QUERY result = self.aodh('alarm', params=("list --query project_id=%s" % PROJECT_ID)) @@ -641,8 +533,8 @@ "gnocchi_aggregation_by_resources_threshold " "--name alarm1 --metric cpu --threshold 80 " "--query " - '\'{"=": {"server_group": "my_group"}}\' ' - "--resource-type instance " + '\'{"=": {"creator": "cr3at0r"}}\' ' + "--resource-type generic " "--aggregation-method last " "--project-id %s" % PROJECT_ID)) alarm = self.details_multiple(result)[0] @@ -651,8 +543,8 @@ self.assertEqual('cpu', alarm['metric']) self.assertEqual('80.0', alarm['threshold']) self.assertEqual('last', alarm['aggregation_method']) - self.assertEqual('instance', alarm['resource_type']) - self.assertEqual('{"=": {"server_group": "my_group"}}', + self.assertEqual('generic', alarm['resource_type']) + self.assertEqual('{"=": {"creator": "cr3at0r"}}', alarm['query']) # CREATE FAIL MISSING PARAM @@ -664,8 +556,8 @@ "gnocchi_aggregation_by_resources_threshold " "--name alarm1 --metric cpu " "--query " - '\'{"=": {"server_group": "my_group"}}\' ' - "--resource-type instance " + '\'{"=": {"creator": "cr3at0r"}}\' ' + "--resource-type generic " "--aggregation-method last " "--project-id %s" % PROJECT_ID)) @@ -689,7 +581,7 @@ self.assertEqual('90.0', alarm_show['threshold']) self.assertEqual('critical', alarm_show['severity']) self.assertEqual('last', alarm_show['aggregation_method']) - self.assertEqual('instance', alarm_show['resource_type']) + self.assertEqual('generic', alarm_show['resource_type']) # LIST result = self.aodh('alarm', params="list") @@ -735,7 +627,7 @@ "--type gnocchi_aggregation_by_metrics_threshold " "--name alarm1 " "--metrics %s " - "--metrics %s " + "--metric %s " "--threshold 80 " "--aggregation-method last " "--project-id %s" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/aodhclient/tests/functional/test_alarm_history.py new/aodhclient-1.1.0/aodhclient/tests/functional/test_alarm_history.py --- old/aodhclient-0.9.0/aodhclient/tests/functional/test_alarm_history.py 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/aodhclient/tests/functional/test_alarm_history.py 2018-06-18 14:37:32.000000000 +0200 @@ -25,17 +25,28 @@ def test_alarm_history_scenario(self): PROJECT_ID = uuidutils.generate_uuid() + RESOURCE_ID = uuidutils.generate_uuid() result = self.aodh(u'alarm', - params=(u"create --type threshold --name history1 " - "-m meter_name --threshold 5 " - "--project-id %s" % PROJECT_ID)) + params=(u"create " + "--type gnocchi_resources_threshold " + "--name history1 --metric cpu_util " + "--threshold 5 " + "--resource-id %s --resource-type generic " + "--aggregation-method last " + "--project-id %s" + % (RESOURCE_ID, PROJECT_ID))) alarm = self.details_multiple(result)[0] ALARM_ID = alarm['alarm_id'] result = self.aodh(u'alarm', - params=(u"create --type threshold --name history2 " - "-m meter_name --threshold 10 " - "--project-id %s" % PROJECT_ID)) + params=(u"create " + "--type gnocchi_resources_threshold " + "--name history2 --metric cpu_util " + "--threshold 10 " + "--resource-id %s --resource-type generic " + "--aggregation-method last " + "--project-id %s" + % (RESOURCE_ID, PROJECT_ID))) alarm = self.details_multiple(result)[0] ALARM_ID2 = alarm['alarm_id'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/aodhclient/tests/unit/test_alarm_cli.py new/aodhclient-1.1.0/aodhclient/tests/unit/test_alarm_cli.py --- old/aodhclient-0.9.0/aodhclient/tests/unit/test_alarm_cli.py 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/aodhclient/tests/unit/test_alarm_cli.py 2018-06-18 14:37:32.000000000 +0200 @@ -50,22 +50,6 @@ '--aggregation-method') @mock.patch.object(argparse.ArgumentParser, 'error') - def test_validate_args_threshold(self, mock_arg): - # Cover the test case of the method _validate_args for - # threshold - parser = self.cli_alarm_create.get_parser('aodh alarm create') - test_parsed_args = parser.parse_args([ - '--name', 'threshold_test', - '--type', 'threshold', - '--threshold', '80' - ]) - self.cli_alarm_create._validate_args(test_parsed_args) - mock_arg.assert_called_once_with( - 'Threshold alarm requires -m/--meter-name and ' - '--threshold parameters. Meter name can be ' - 'found in Ceilometer') - - @mock.patch.object(argparse.ArgumentParser, 'error') def test_validate_args_composite(self, mock_arg): # Cover the test case of the method _validate_args for # composite @@ -111,13 +95,13 @@ self.cli_alarm_create._validate_args(test_parsed_args) mock_arg.assert_called_once_with( 'gnocchi_aggregation_by_metrics_threshold requires ' - '--metrics, --threshold and --aggregation-method') + '--metric, --threshold and --aggregation-method') def test_alarm_from_args(self): # The test case to cover the method _alarm_from_args parser = self.cli_alarm_create.get_parser('aodh alarm create') test_parsed_args = parser.parse_args([ - '--type', 'threshold', + '--type', 'event', '--name', 'alarm_from_args_test', '--project-id', '01919bbd-8b0e-451c-be28-abe250ae9b1b', '--user-id', '01919bbd-8b0e-451c-be28-abe250ae9c1c', @@ -132,10 +116,7 @@ 'http://something/insufficient', '--time-constraint', 'name=cons1;start="0 11 * * *";duration=300;description=desc1', - '--meter-name', 'cpu', - '--period', '60', '--evaluation-periods', '60', - '--statistic', 'max', '--comparison-operator', 'le', '--threshold', '80', '--event-type', 'event', @@ -165,18 +146,6 @@ 'name': 'cons1', 'start': '0 11 * * *'}], 'repeat_actions': True, - 'threshold_rule': { - 'meter_name': 'cpu', - 'period': 60, - 'evaluation_periods': 60, - 'statistic': 'max', - 'comparison_operator': 'le', - 'threshold': 80.0, - 'query': [{'field': 'resource', - 'op': 'eq', - 'type': '', - 'value': 'fake-resource-id'}] - }, 'event_rule': { 'event_type': 'event', 'query': [{'field': 'resource', @@ -199,7 +168,8 @@ 'aggregation_method': 'last', 'evaluation_periods': 60, 'comparison_operator': 'le', - 'threshold': 80.0 + 'threshold': 80.0, + 'metrics': ['cpu'], }, 'gnocchi_aggregation_by_resources_threshold_rule': { 'granularity': '60', @@ -215,7 +185,7 @@ 'resource_type': 'generic' }, 'composite_rule': None, - 'type': 'threshold' + 'type': 'event' } alarm_rep = self.cli_alarm_create._alarm_from_args(test_parsed_args) self.assertEqual(alarm, alarm_rep) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/aodhclient/tests/unit/test_alarm_history.py new/aodhclient-1.1.0/aodhclient/tests/unit/test_alarm_history.py --- old/aodhclient-0.9.0/aodhclient/tests/unit/test_alarm_history.py 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/aodhclient/tests/unit/test_alarm_history.py 2018-06-18 14:37:32.000000000 +0200 @@ -37,13 +37,14 @@ @mock.patch.object(alarm_history.AlarmHistoryManager, '_post') def test_search(self, mock_ahm): ahm = alarm_history.AlarmHistoryManager(self.client) - q = ('{"and": [{"=": {"type": "threshold"}}, ' + q = ('{"and": [{"=": {"type": "gnocchi_resources_threshold"}}, ' '{"=": {"alarm_id": "87bacbcb-a09c-4cb9-86d0-ad410dd8ad98"}}]}') ahm.search(q) - expected_called_data = ('{"filter": "{\\"and\\": [{\\"=\\": ' - '{\\"type\\": \\"threshold\\"}}, ' - '{\\"=\\": {\\"alarm_id\\": \\"87bacbcb-' - 'a09c-4cb9-86d0-ad410dd8ad98\\"}}]}"}') + expected_called_data = ( + '{"filter": "{\\"and\\": [' + '{\\"=\\": {\\"type\\": \\"gnocchi_resources_threshold\\"}}, ' + '{\\"=\\": {\\"alarm_id\\": ' + '\\"87bacbcb-a09c-4cb9-86d0-ad410dd8ad98\\"}}]}"}') mock_ahm.assert_called_with( 'v2/query/alarms/history', data=expected_called_data, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/aodhclient/tests/unit/test_alarm_manager.py new/aodhclient-1.1.0/aodhclient/tests/unit/test_alarm_manager.py --- old/aodhclient-0.9.0/aodhclient/tests/unit/test_alarm_manager.py 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/aodhclient/tests/unit/test_alarm_manager.py 2018-06-18 14:37:32.000000000 +0200 @@ -29,7 +29,6 @@ 'gnocchi_aggregation_by_metrics_threshold_rule': {}, 'gnocchi_resources_threshold_rule': {}, 'name': 'event_alarm', - 'threshold_rule': {}, 'gnocchi_aggregation_by_resources_threshold_rule': {}, 'event_rule': {}, 'type': 'event'} @@ -63,10 +62,11 @@ @mock.patch.object(alarm.AlarmManager, '_get') def test_list_with_filters(self, mock_am): am = alarm.AlarmManager(self.client) - filters = dict(type='threshold', severity='low') + filters = dict(type='gnocchi_resources_threshold', severity='low') am.list(filters=filters) - expected_url = ("v2/alarms?q.field=severity&q.op=eq&q.value=low&" - "q.field=type&q.op=eq&q.value=threshold") + expected_url = ( + "v2/alarms?q.field=severity&q.op=eq&q.value=low&" + "q.field=type&q.op=eq&q.value=gnocchi_resources_threshold") mock_am.assert_called_with(expected_url) @mock.patch.object(alarm.AlarmManager, '_get') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/aodhclient/utils.py new/aodhclient-1.1.0/aodhclient/utils.py --- old/aodhclient-0.9.0/aodhclient/utils.py 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/aodhclient/utils.py 2018-06-18 14:37:32.000000000 +0200 @@ -123,7 +123,13 @@ def dict_from_parsed_args(parsed_args, attrs): d = {} for attr in attrs: - value = getattr(parsed_args, attr) + if attr == "metric": + if parsed_args.metrics: + value = parsed_args.metrics[0] + else: + value = None + else: + value = getattr(parsed_args, attr) if value is not None: d[attr] = value return d diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/aodhclient/v2/alarm.py new/aodhclient-1.1.0/aodhclient/v2/alarm.py --- old/aodhclient-0.9.0/aodhclient/v2/alarm.py 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/aodhclient/v2/alarm.py 2018-06-18 14:37:32.000000000 +0200 @@ -35,8 +35,9 @@ """List alarms. :param filters: A dict includes filters parameters, for example, - {'type': 'threshold', 'severity': 'low'} represent - filters to query alarms with type='threshold' and + {'type': 'gnocchi_resources_threshold', + 'severity': 'low'} represent filters to query alarms + with type='gnocchi_resources_threshold' and severity='low'. :type filters: dict :param limit: maximum number of resources to return @@ -64,8 +65,9 @@ """Query alarms. :param query: A json format complex query expression, like this: - '{"=":{"type":"threshold"}}', this expression is used to - query all the threshold type alarms. + '{"=":{"type":"gnocchi_resources_threshold"}}', this + expression is used to query all the + gnocchi_resources_threshold type alarms. :type query: json """ query = {'filter': query} @@ -110,10 +112,7 @@ alarm = self._get(self.url + '/' + alarm_id).json() self._clean_rules(alarm['type'], alarm_update) - if 'threshold_rule' in alarm_update: - alarm['threshold_rule'].update(alarm_update.get('threshold_rule')) - alarm_update.pop('threshold_rule') - elif 'event_rule' in alarm_update: + if 'event_rule' in alarm_update: alarm['event_rule'].update(alarm_update.get('event_rule')) alarm_update.pop('event_rule') elif 'gnocchi_resources_threshold_rule' in alarm_update: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/aodhclient/v2/alarm_cli.py new/aodhclient-1.1.0/aodhclient/v2/alarm_cli.py --- old/aodhclient-0.9.0/aodhclient/v2/alarm_cli.py 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/aodhclient/v2/alarm_cli.py 2018-06-18 14:37:32.000000000 +0200 @@ -24,7 +24,7 @@ from aodhclient.i18n import _ from aodhclient import utils -ALARM_TYPES = ['threshold', 'event', 'composite', +ALARM_TYPES = ['event', 'composite', 'gnocchi_resources_threshold', 'gnocchi_aggregation_by_metrics_threshold', 'gnocchi_aggregation_by_resources_threshold'] @@ -32,7 +32,6 @@ ALARM_SEVERITY = ['low', 'moderate', 'critical'] ALARM_OPERATORS = ['lt', 'le', 'eq', 'ne', 'ge', 'gt'] ALARM_OP_MAP = dict(zip(ALARM_OPERATORS, ('<', '<=', '=', '!=', '>=', '>'))) -STATISTICS = ['max', 'min', 'avg', 'sum', 'count'] ALARM_LIST_COLS = ['alarm_id', 'type', 'name', 'state', 'severity', 'enabled'] @@ -103,7 +102,7 @@ alarm["time_constraints"] = jsonutils.dumps(alarm["time_constraints"], sort_keys=True, indent=2) - # only works for threshold and event alarm + # only works for event alarm if isinstance(alarm.get('query'), list): query_rows = [] for q in alarm['query']: @@ -265,7 +264,7 @@ common_group = parser.add_argument_group('common alarm rules') common_group.add_argument( '--query', metavar='<QUERY>', dest='query', - help="For alarms of type threshold or event: " + help="For alarms of type event: " "key[op]data_type::value; list. data_type is optional, " "but if supplied must be string, integer, float, or boolean. " 'For alarms of ' @@ -283,23 +282,6 @@ common_group.add_argument( '--threshold', type=float, metavar='<THRESHOLD>', dest='threshold', help='Threshold to evaluate against.') - common_group.add_argument( - '--metric', metavar='<METRIC>', - dest='metric', help='Metric to evaluate against.') - - threshold_group = parser.add_argument_group('threshold alarm') - threshold_group.add_argument( - '-m', '--meter-name', metavar='<METER NAME>', - dest='meter_name', help='Meter to evaluate against') - - threshold_group.add_argument( - '--period', type=int, metavar='<PERIOD>', dest='period', - help='Length of each period (seconds) to evaluate over.') - - threshold_group.add_argument( - '--statistic', metavar='<STATISTIC>', dest='statistic', - choices=STATISTICS, - help='Statistic to evaluate, one of: ' + str(STATISTICS)) event_group = parser.add_argument_group('event alarm') event_group.add_argument( @@ -316,6 +298,10 @@ '--aggregation-method', metavar='<AGGR_METHOD>', dest='aggregation_method', help='The aggregation_method to compare to the threshold.') + gnocchi_common_group.add_argument( + '--metric', '--metrics', metavar='<METRIC>', action='append', + dest='metrics', help='The metric id or name ' + 'depending of the alarm type') gnocchi_resource_threshold_group = parser.add_argument_group( 'gnocchi resource threshold alarm') @@ -326,23 +312,15 @@ '--resource-id', metavar='<RESOURCE_ID>', dest='resource_id', help='The id of a resource.') - gnocchi_aggr_metrics_group = parser.add_argument_group( - 'gnocchi aggregation by metrics alarm') - gnocchi_aggr_metrics_group.add_argument( - '--metrics', metavar='<METRICS>', action='append', - dest='metrics', help='The list of metric ids.') composite_group = parser.add_argument_group('composite alarm') composite_group.add_argument( '--composite-rule', metavar='<COMPOSITE_RULE>', dest='composite_rule', type=jsonutils.loads, help='Composite threshold rule with JSON format, the form can ' - 'be a nested dict which combine threshold/gnocchi rules by ' + 'be a nested dict which combine gnocchi rules by ' '"and", "or". For example, the form is like: ' - '{"or":[RULE1, RULE2, {"and": [RULE3, RULE4]}]}, The ' - 'RULEx can be basic threshold rules but must include a ' - '"type" field, like this: {"threshold": 0.8,' - '"meter_name":"cpu_util","type":"threshold"}' + '{"or":[RULE1, RULE2, {"and": [RULE3, RULE4]}]}.' ) self.parser = parser return parser @@ -361,27 +339,24 @@ raise argparse.ArgumentTypeError(msg) def _validate_args(self, parsed_args): - if (parsed_args.type == 'threshold' and - not (parsed_args.meter_name and parsed_args.threshold)): - self.parser.error('Threshold alarm requires -m/--meter-name and ' - '--threshold parameters. Meter name can be ' - 'found in Ceilometer') - elif (parsed_args.type == 'gnocchi_resources_threshold' and - not (parsed_args.metric and parsed_args.threshold and - parsed_args.resource_id and parsed_args.resource_type - and parsed_args.aggregation_method)): + if (parsed_args.type == 'gnocchi_resources_threshold' and + not (parsed_args.metrics and parsed_args.threshold is not None + and parsed_args.resource_id and parsed_args.resource_type + and parsed_args.aggregation_method)): self.parser.error('gnocchi_resources_threshold requires --metric, ' '--threshold, --resource-id, --resource-type ' 'and --aggregation-method') elif (parsed_args.type == 'gnocchi_aggregation_by_metrics_threshold' - and not (parsed_args.metrics and parsed_args.threshold and - parsed_args.aggregation_method)): + and not (parsed_args.metrics + and parsed_args.threshold is not None + and parsed_args.aggregation_method)): self.parser.error('gnocchi_aggregation_by_metrics_threshold ' - 'requires --metrics, --threshold and ' + 'requires --metric, --threshold and ' '--aggregation-method') elif (parsed_args.type == 'gnocchi_aggregation_by_resources_threshold' - and not (parsed_args.metric and parsed_args.threshold and - parsed_args.query and parsed_args.resource_type and + and not (parsed_args.metrics + and parsed_args.threshold is not None + and parsed_args.query and parsed_args.resource_type and parsed_args.aggregation_method)): self.parser.error('gnocchi_aggregation_by_resources_threshold ' 'requires --metric, --threshold, ' @@ -398,12 +373,8 @@ 'state', 'severity', 'enabled', 'alarm_actions', 'ok_actions', 'insufficient_data_actions', 'time_constraints', 'repeat_actions']) - if parsed_args.type in ('threshold', 'event') and parsed_args.query: + if parsed_args.type == 'event' and parsed_args.query: parsed_args.query = utils.cli_to_array(parsed_args.query) - alarm['threshold_rule'] = utils.dict_from_parsed_args( - parsed_args, ['meter_name', 'period', 'evaluation_periods', - 'statistic', 'comparison_operator', 'threshold', - 'query']) alarm['event_rule'] = utils.dict_from_parsed_args( parsed_args, ['event_type', 'query']) alarm['gnocchi_resources_threshold_rule'] = ( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/aodhclient.egg-info/PKG-INFO new/aodhclient-1.1.0/aodhclient.egg-info/PKG-INFO --- old/aodhclient-0.9.0/aodhclient.egg-info/PKG-INFO 2017-03-01 23:27:16.000000000 +0100 +++ new/aodhclient-1.1.0/aodhclient.egg-info/PKG-INFO 2018-06-18 14:40:38.000000000 +0200 @@ -1,26 +1,28 @@ -Metadata-Version: 1.1 +Metadata-Version: 2.1 Name: aodhclient -Version: 0.9.0 +Version: 1.1.0 Summary: Python client library for Aodh -Home-page: http://docs.openstack.org/developer/python-aodhclient +Home-page: https://docs.openstack.org/python-aodhclient/latest/ Author: OpenStack Author-email: [email protected] License: UNKNOWN -Description: ============= +Description: ========== aodhclient - ============= + ========== Python bindings to the OpenStack Aodh API - This is a client for OpenStack Aodh API. There's :doc:`a Python API - <api>` (the :mod:`aodhclient` module), and a :doc:`command-line script - <shell>` (installed as :program:`aodh`). Each implements the entire - OpenStack Aodh API. + This is a client for OpenStack Aodh API. There's a `Python API + <https://docs.openstack.org/python-aodhclient/latest/api.html>`_ (the + aodhclient module), and a `command-line script + <https://docs.openstack.org/python-aodhclient/latest/shell.html>`_ (installed + as aodh). Each implements the entire OpenStack Aodh API. * Free software: Apache license - * Documentation: http://docs.openstack.org/developer/python-aodhclient - * Source: http://git.openstack.org/cgit/openstack/python-aodhclient - * Bugs: http://bugs.launchpad.net/python-aodhclient + * Release notes: https://releases.openstack.org/teams/telemetry.html + * Documentation: https://docs.openstack.org/python-aodhclient/latest/ + * Source: https://git.openstack.org/cgit/openstack/python-aodhclient + * Bugs: https://bugs.launchpad.net/python-aodhclient Platform: UNKNOWN @@ -34,3 +36,4 @@ Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.5 +Provides-Extra: test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/aodhclient.egg-info/SOURCES.txt new/aodhclient-1.1.0/aodhclient.egg-info/SOURCES.txt --- old/aodhclient-0.9.0/aodhclient.egg-info/SOURCES.txt 2017-03-01 23:27:17.000000000 +0100 +++ new/aodhclient-1.1.0/aodhclient.egg-info/SOURCES.txt 2018-06-18 14:40:39.000000000 +0200 @@ -49,6 +49,7 @@ aodhclient/v2/capabilities.py aodhclient/v2/capabilities_cli.py aodhclient/v2/client.py +doc/requirements.txt doc/source/api.rst doc/source/conf.py doc/source/contributing.rst @@ -59,6 +60,7 @@ releasenotes/notes/add-pagination-support-fcdf1cef0cfa5ca9.yaml releasenotes/notes/merge-search-to-list-d44cd65ede348c3e.yaml releasenotes/notes/osc-support-9f9dae2d2203f307.yaml +releasenotes/notes/remove-ceilometer-alarms-02049eef189c2812.yaml releasenotes/notes/split-alarm-query-and-list-5998020b88ddc9f5.yaml releasenotes/notes/support-get-set-state-interfaces-67419b925ffd6877.yaml releasenotes/source/conf.py @@ -66,6 +68,8 @@ releasenotes/source/mitaka.rst releasenotes/source/newton.rst releasenotes/source/ocata.rst +releasenotes/source/pike.rst +releasenotes/source/queens.rst releasenotes/source/unreleased.rst releasenotes/source/_static/.placeholder releasenotes/source/_templates/.placeholder \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/aodhclient.egg-info/pbr.json new/aodhclient-1.1.0/aodhclient.egg-info/pbr.json --- old/aodhclient-0.9.0/aodhclient.egg-info/pbr.json 2017-03-01 23:27:16.000000000 +0100 +++ new/aodhclient-1.1.0/aodhclient.egg-info/pbr.json 2018-06-18 14:40:38.000000000 +0200 @@ -1 +1 @@ -{"git_version": "eb82760", "is_release": true} \ No newline at end of file +{"git_version": "6d1ad0f", "is_release": true} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/aodhclient.egg-info/requires.txt new/aodhclient-1.1.0/aodhclient.egg-info/requires.txt --- old/aodhclient-0.9.0/aodhclient.egg-info/requires.txt 2017-03-01 23:27:16.000000000 +0100 +++ new/aodhclient-1.1.0/aodhclient.egg-info/requires.txt 2018-06-18 14:40:38.000000000 +0200 @@ -8,17 +8,13 @@ six pyparsing -[doc] -sphinx!=1.2.0,!=1.3b1,>=1.1.2 -oslosphinx>=2.5.0 # Apache-2.0 - [test] coverage>=3.6 -python-subunit>=0.0.18 -oslotest>=1.10.0 # Apache-2.0 -reno>=1.6.2 # Apache2 +oslotest>=1.10.0 +reno>=1.6.2 tempest>=10 testrepository>=0.0.18 testtools>=1.4.0 -pifpaf>=0.23 -mock>=1.2 # BSD +pifpaf[gnocchi]>=0.23 +gnocchi[file,postgresql] +mock>=1.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/doc/requirements.txt new/aodhclient-1.1.0/doc/requirements.txt --- old/aodhclient-0.9.0/doc/requirements.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/aodhclient-1.1.0/doc/requirements.txt 2018-06-18 14:37:32.000000000 +0200 @@ -0,0 +1,2 @@ +sphinx>=1.6.2 # BSD +openstackdocstheme>=1.11.0 # Apache-2.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/doc/source/conf.py new/aodhclient-1.1.0/doc/source/conf.py --- old/aodhclient-0.9.0/doc/source/conf.py 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/doc/source/conf.py 2018-06-18 14:37:32.000000000 +0200 @@ -63,8 +63,8 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [ 'sphinx.ext.autodoc', + 'openstackdocstheme', #'sphinx.ext.intersphinx', - 'oslosphinx' ] # autodoc generation is a bit aggressive and a nuisance when doing heavy @@ -77,7 +77,10 @@ # The master toctree document. master_doc = 'index' -# General information about the project. +# openstackdocstheme options +repository_name = 'openstack/python-aodhclient' +bug_project = 'python-aodhclient' +bug_tag = '' project = u'aodhclient' copyright = u'2015, OpenStack Foundation' @@ -98,6 +101,11 @@ # html_theme_path = ["."] # html_theme = '_theme' # html_static_path = ['static'] +html_theme = 'openstackdocs' +html_last_updated_fmt = '%Y-%m-%d %H:%M' + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = ['_theme'] # Output file base name for HTML help builder. htmlhelp_basename = '%sdoc' % project diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/doc/source/index.rst new/aodhclient-1.1.0/doc/source/index.rst --- old/aodhclient-0.9.0/doc/source/index.rst 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/doc/source/index.rst 2018-06-18 14:37:32.000000000 +0200 @@ -24,10 +24,11 @@ least -- to get an idea of the concepts. By understanding the concepts this library should make more sense. - __ http://docs.openstack.org/developer/aodh/ + __ https://docs.openstack.org/aodh/latest/ -Contents: +Contents +-------- .. toctree:: :maxdepth: 2 @@ -38,7 +39,7 @@ contributing Indices and tables -================== +------------------ * :ref:`genindex` * :ref:`modindex` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/doc/source/shell.rst new/aodhclient-1.1.0/doc/source/shell.rst --- old/aodhclient-0.9.0/doc/source/shell.rst 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/doc/source/shell.rst 2018-06-18 14:37:51.000000000 +0200 @@ -5,8 +5,7 @@ .. highlight:: bash The :program:`aodh` shell utility interacts with Aodh API -from the command line. It supports the entirety of the Aodh API excluding -deprecated combination alarms. +from the command line. It supports the entirety of the Aodh API. You'll need to provide :program:`aodh` with your OpenStack credentials. You can do this with the :option:`--os-username`, :option:`--os-password`, @@ -67,7 +66,9 @@ Create an alarm:: - aodh alarm create -t threshold --name alarm1 -m cpu_util --threshold 5 + aodh alarm create -t gnocchi_resources_threshold --name alarm1 \ + --metric cpu_util --threshold 5 --resource_id <RES_ID> \ + --resource_type generic --aggregation_method mean --project-id <PROJ_ID> List alarms:: @@ -75,7 +76,7 @@ List alarm with query parameters:: - aodh alarm list --query "state=alarm and type=threshold" + aodh alarm list --query "state=alarm and type=gnocchi_resources_threshold" Show an alarm's history:: @@ -83,5 +84,5 @@ Search alarm history data:: - aodh --debug alarm-history search --query 'timestamp>"2016-03-09T01:22:35"' + aodh alarm-history search --query 'timestamp>"2016-03-09T01:22:35"' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/releasenotes/notes/remove-ceilometer-alarms-02049eef189c2812.yaml new/aodhclient-1.1.0/releasenotes/notes/remove-ceilometer-alarms-02049eef189c2812.yaml --- old/aodhclient-0.9.0/releasenotes/notes/remove-ceilometer-alarms-02049eef189c2812.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/aodhclient-1.1.0/releasenotes/notes/remove-ceilometer-alarms-02049eef189c2812.yaml 2018-06-18 14:37:32.000000000 +0200 @@ -0,0 +1,9 @@ +--- +features: + - | + Ceilometer alarms are no longer supported. +upgrade: + - | + Ceilometer alarms will need to be recreated as alarms that target Gnocchi + as storage is not provided in Ceilometer anymore. You must downgrade client + if you still continue to use Ceilometer storage in older deployments. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/releasenotes/source/conf.py new/aodhclient-1.1.0/releasenotes/source/conf.py --- old/aodhclient-0.9.0/releasenotes/source/conf.py 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/releasenotes/source/conf.py 2018-06-18 14:37:32.000000000 +0200 @@ -12,9 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# Aodh Client Release Notes documentation build configuration file, created by -# sphinx-quickstart on Mon Nov 23 20:38:38 2015. -# # This file is execfile()d with the current directory set to its # containing dir. # @@ -38,7 +35,7 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'oslosphinx', + 'openstackdocstheme', 'reno.sphinxext', ] @@ -54,20 +51,18 @@ # The master toctree document. master_doc = 'index' -# General information about the project. +# openstackdocstheme options +repository_name = 'openstack/python-aodhclient' +bug_project = 'python-aodhclient' +bug_tag = '' project = u'Aodh Client Release Notes' copyright = u'2015-present, Aodh 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. -# -import pbr.version -aodh_version = pbr.version.VersionInfo('aodhclient') +# Release notes are version independent. # The short X.Y version. -version = aodh_version.canonical_version_string() +version = '' # The full version, including alpha/beta/rc tags. -release = aodh_version.version_string_with_vcs() +release = '' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -112,7 +107,7 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -html_theme = 'default' +html_theme = 'openstackdocs' # 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 @@ -150,7 +145,7 @@ # 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' +html_last_updated_fmt = '%Y-%m-%d %H:%M' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/releasenotes/source/index.rst new/aodhclient-1.1.0/releasenotes/source/index.rst --- old/aodhclient-0.9.0/releasenotes/source/index.rst 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/releasenotes/source/index.rst 2018-06-18 14:37:32.000000000 +0200 @@ -8,6 +8,8 @@ :maxdepth: 2 unreleased + queens + pike ocata newton mitaka diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/releasenotes/source/pike.rst new/aodhclient-1.1.0/releasenotes/source/pike.rst --- old/aodhclient-0.9.0/releasenotes/source/pike.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/aodhclient-1.1.0/releasenotes/source/pike.rst 2018-06-18 14:37:32.000000000 +0200 @@ -0,0 +1,6 @@ +=================================== + Pike Series Release Notes +=================================== + +.. release-notes:: + :branch: stable/pike diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/releasenotes/source/queens.rst new/aodhclient-1.1.0/releasenotes/source/queens.rst --- old/aodhclient-0.9.0/releasenotes/source/queens.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/aodhclient-1.1.0/releasenotes/source/queens.rst 2018-06-18 14:37:32.000000000 +0200 @@ -0,0 +1,6 @@ +=================================== + Queens Series Release Notes +=================================== + +.. release-notes:: + :branch: stable/queens diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/setup.cfg new/aodhclient-1.1.0/setup.cfg --- old/aodhclient-0.9.0/setup.cfg 2017-03-01 23:27:17.000000000 +0100 +++ new/aodhclient-1.1.0/setup.cfg 2018-06-18 14:40:39.000000000 +0200 @@ -5,7 +5,7 @@ README.rst author = OpenStack author-email = [email protected] -home-page = http://docs.openstack.org/developer/python-aodhclient +home-page = https://docs.openstack.org/python-aodhclient/latest/ classifier = Environment :: OpenStack Intended Audience :: Information Technology @@ -25,17 +25,14 @@ [extras] test = coverage>=3.6 - python-subunit>=0.0.18 oslotest>=1.10.0 # Apache-2.0 reno>=1.6.2 # Apache2 tempest>=10 testrepository>=0.0.18 testtools>=1.4.0 - pifpaf>=0.23 + pifpaf[gnocchi]>=0.23 + gnocchi[postgresql,file] mock>=1.2 # BSD -doc = - sphinx!=1.2.0,!=1.3b1,>=1.1.2 - oslosphinx>=2.5.0 # Apache-2.0 [entry_points] console_scripts = @@ -56,14 +53,6 @@ alarm-history show = aodhclient.v2.alarm_history_cli:CliAlarmHistoryShow alarming capabilities list = aodhclient.v2.capabilities_cli:CliCapabilitiesList -[build_sphinx] -source-dir = doc/source -build-dir = doc/build -all_files = 1 - -[upload_sphinx] -upload-dir = doc/build/html - [compile_catalog] directory = aodhclient/locale domain = aodhclient diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aodhclient-0.9.0/tox.ini new/aodhclient-1.1.0/tox.ini --- old/aodhclient-0.9.0/tox.ini 2017-03-01 23:25:59.000000000 +0100 +++ new/aodhclient-1.1.0/tox.ini 2018-06-18 14:37:51.000000000 +0200 @@ -12,11 +12,11 @@ GNOCCHI_ENDPOINT=http://localhost:8041 passenv = GNOCCHI_* AODH_* OS_TEST_TIMEOUT OS_STDOUT_CAPTURE OS_STDERR_CAPTURE OS_LOG_CAPTURE # NOTE(tonyb): This project has chosen to *NOT* consume upper-constraints.txt +# NOTE(jd): the -e is on its own line so it is passed a separate argument to pip deps = .[test] http://tarballs.openstack.org/aodh/aodh-master.tar.gz#egg=aodh[mysql] - http://tarballs.openstack.org/gnocchi/gnocchi-master.tar.gz#egg=gnocchi[postgresql,file] -commands = pifpaf run aodh --gnocchi-create-legacy-resource-types -- python setup.py test --slowest --testr-args='{posargs}' +commands = pifpaf run aodh -- python setup.py test --slowest --testr-args='{posargs}' [testenv:pep8] deps = hacking<0.13,>=0.12 @@ -24,7 +24,7 @@ [testenv:venv] # Used by openstack-infra to build the doc -deps = .[doc] +deps = -r{toxinidir}/doc/requirements.txt commands = {posargs} [testenv:cover] @@ -36,13 +36,14 @@ commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html [testenv:docs] -deps = .[doc] +deps = -r{toxinidir}/doc/requirements.txt commands = - rm -rf doc/source/ref - python setup.py build_sphinx + rm -rf doc/build + sphinx-build -b html doc/source doc/build/html +whitelist_externals = rm [testenv:debug] -commands = pifpaf --debug run aodh --gnocchi-create-legacy-resource-types -- oslo_debug_helper {posargs} +commands = pifpaf --debug run aodh -- oslo_debug_helper {posargs} [flake8] show-source = True
