Hello community, here is the log from the commit of package python-ironic-inspector-client for openSUSE:Factory checked in at 2016-10-13 11:32:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-ironic-inspector-client (Old) and /work/SRC/openSUSE:Factory/.python-ironic-inspector-client.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ironic-inspector-client" Changes: -------- --- /work/SRC/openSUSE:Factory/python-ironic-inspector-client/python-ironic-inspector-client.changes 2016-09-30 15:28:49.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.python-ironic-inspector-client.new/python-ironic-inspector-client.changes 2016-10-13 11:32:39.000000000 +0200 @@ -1,0 +2,20 @@ +Sun Oct 2 12:20:17 UTC 2016 - dmuel...@suse.com + +- update to 1.9.0: + * Sync tools/tox_install.sh + * Using assertIsNone() is preferred over assertIs(None,..) + * Switch to osc-lib instead of cliff + * Add functional tests for CLI + * Updated from global requirements + * Increase verbosity for functional tests + * Add functional test for wait_for_finish + * Use constraints for all the things + * Fix functional tests broken by the latest refactoring + * Deprecate global functions in favor of ClientV1 methods + * Updated from global requirements + * Updated from global requirements + * Add Python 3.5 tox env and detailed setup.cfg classifiers + * Updated from global requirements + * Add a test dependency on requests-mock + +------------------------------------------------------------------- Old: ---- python-ironic-inspector-client-1.8.0.tar.gz New: ---- python-ironic-inspector-client-1.9.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-ironic-inspector-client.spec ++++++ --- /var/tmp/diff_new_pack.jyPHqP/_old 2016-10-13 11:32:40.000000000 +0200 +++ /var/tmp/diff_new_pack.jyPHqP/_new 2016-10-13 11:32:40.000000000 +0200 @@ -18,7 +18,7 @@ %global sname python-ironic-inspector-client Name: python-ironic-inspector-client -Version: 1.8.0 +Version: 1.9.0 Release: 0 Summary: Python client and CLI tool for Ironic Inspector License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.jyPHqP/_old 2016-10-13 11:32:41.000000000 +0200 +++ /var/tmp/diff_new_pack.jyPHqP/_new 2016-10-13 11:32:41.000000000 +0200 @@ -1,13 +1,11 @@ <services> <service mode="disabled" name="renderspec"> - <param name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/master/openstack/python-ironic-inspector-client/python-ironic-inspector-client.spec.j2</param> + <param name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/newton/openstack/python-ironic-inspector-client/python-ironic-inspector-client.spec.j2</param> <param name="output-name">python-ironic-inspector-client.spec</param> - <param name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/master/global-requirements.txt</param> + <param name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/newton/global-requirements.txt</param> </service> <service mode="disabled" name="download_files"> <param name="changesgenerate">enable</param> </service> - <service name="refresh_patches" mode="disabled"> - <param name="changesgenerate">enable</param> - </service> + <service name="format_spec_file" mode="disabled"/> </services> ++++++ python-ironic-inspector-client-1.8.0.tar.gz -> python-ironic-inspector-client-1.9.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/AUTHORS new/python-ironic-inspector-client-1.9.0/AUTHORS --- old/python-ironic-inspector-client-1.8.0/AUTHORS 2016-07-11 16:19:14.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/AUTHORS 2016-09-01 10:09:05.000000000 +0200 @@ -1,8 +1,12 @@ +Andreas Jaeger <a...@suse.com> Anton Arefiev <aaref...@mirantis.com> Clenimar Filemon <cleni...@lsd.ufcg.edu.br> +Dmitry Tantsur <divius.ins...@gmail.com> Dmitry Tantsur <dtant...@redhat.com> Doug Hellmann <d...@doughellmann.com> Janonymous <janonymous.codevult...@gmail.com> +Jim Rollenhagen <j...@jimrollenhagen.com> +Luong Anh Tuan <tua...@vn.fujitsu.com> Monty Taylor <mord...@inaugust.com> Tang Chen <chen.t...@easystack.cn> Yuiko Takada <yui-tak...@tg.jp.nec.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/ChangeLog new/python-ironic-inspector-client-1.9.0/ChangeLog --- old/python-ironic-inspector-client-1.8.0/ChangeLog 2016-07-11 16:19:14.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/ChangeLog 2016-09-01 10:09:05.000000000 +0200 @@ -1,6 +1,25 @@ CHANGES ======= +1.9.0 +----- + +* Sync tools/tox_install.sh +* Using assertIsNone() is preferred over assertIs(None,..) +* Switch to osc-lib instead of cliff +* Add functional tests for CLI +* Updated from global requirements +* Increase verbosity for functional tests +* Add functional test for wait_for_finish +* Use constraints for all the things +* Fix functional tests broken by the latest refactoring +* Deprecate global functions in favor of ClientV1 methods +* Updated from global requirements +* Updated from global requirements +* Add Python 3.5 tox env and detailed setup.cfg classifiers +* Updated from global requirements +* Add a test dependency on requests-mock + 1.8.0 ----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/PKG-INFO new/python-ironic-inspector-client-1.9.0/PKG-INFO --- old/python-ironic-inspector-client-1.8.0/PKG-INFO 2016-07-11 16:19:15.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/PKG-INFO 2016-09-01 10:09:06.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: python-ironic-inspector-client -Version: 1.8.0 +Version: 1.9.0 Summary: Python client for Ironic Inspector Home-page: https://launchpad.net/python-ironic-inspector-client Author: UNKNOWN @@ -235,29 +235,6 @@ $ openstack baremetal introspection rule delete <UUID> - Shortcut Functions - ~~~~~~~~~~~~~~~~~~ - - The following functions are available for simplified access to the most common - functionality: - - * Starting introspection:: - - ironic_inspector_client.introspect(uuid[, new_ipmi_password[, new_ipmi_username]][, base_url][, api_version] **) - - * Getting introspection status:: - - ironic_inspector_client.get_status(uuid[, base_url][, api_version] **) - - * Getting API versions supported by a server:: - - ironic_inspector_client.server_api_versions([base_url] **) - - Here ``base_url`` argument is the same as ``inspector_url`` argument - to the ``ClientV1`` constructor. Keyword arguments are passed to the client - constructor intact. The first 2 functions also accept deprecated ``auth_token`` - argument, which should not be used. - Using names instead of UUID ~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -284,4 +261,7 @@ Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/README.rst new/python-ironic-inspector-client-1.9.0/README.rst --- old/python-ironic-inspector-client-1.8.0/README.rst 2016-07-11 16:16:59.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/README.rst 2016-09-01 10:06:39.000000000 +0200 @@ -227,29 +227,6 @@ $ openstack baremetal introspection rule delete <UUID> -Shortcut Functions -~~~~~~~~~~~~~~~~~~ - -The following functions are available for simplified access to the most common -functionality: - -* Starting introspection:: - - ironic_inspector_client.introspect(uuid[, new_ipmi_password[, new_ipmi_username]][, base_url][, api_version] **) - -* Getting introspection status:: - - ironic_inspector_client.get_status(uuid[, base_url][, api_version] **) - -* Getting API versions supported by a server:: - - ironic_inspector_client.server_api_versions([base_url] **) - -Here ``base_url`` argument is the same as ``inspector_url`` argument -to the ``ClientV1`` constructor. Keyword arguments are passed to the client -constructor intact. The first 2 functions also accept deprecated ``auth_token`` -argument, which should not be used. - Using names instead of UUID ~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/ironic_inspector_client/client.py new/python-ironic-inspector-client-1.9.0/ironic_inspector_client/client.py --- old/python-ironic-inspector-client-1.8.0/ironic_inspector_client/client.py 2016-07-11 16:16:59.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/ironic_inspector_client/client.py 2016-09-01 10:06:39.000000000 +0200 @@ -13,10 +13,15 @@ """Shorthand client functions using V1 API.""" +import logging + from ironic_inspector_client.common import http +from ironic_inspector_client.common.i18n import _LW from ironic_inspector_client import v1 +LOG = logging.getLogger(__name__) + DEFAULT_API_VERSION = v1.DEFAULT_API_VERSION MAX_API_VERSION = v1.MAX_API_VERSION @@ -31,6 +36,8 @@ api_version=DEFAULT_API_VERSION, session=None, **kwargs): """Start introspection for a node. + This function is deprecated. Please use ClientV1.introspect. + :param uuid: node uuid :param base_url: *Ironic Inspector* URL in form: http://host:port[/ver], defaults to ``http://<current host>:5050/v1``. @@ -48,6 +55,8 @@ :raises: VersionNotSupported if requested api_version is not supported :raises: *requests* library exception on connection problems. """ + LOG.warning(_LW('The "introspect" function is deprecated, please use ' + 'ClientV1.introspect method instead')) c = v1.ClientV1(api_version=api_version, auth_token=auth_token, inspector_url=base_url, session=session, **kwargs) return c.introspect(uuid, new_ipmi_username=new_ipmi_username, @@ -58,6 +67,8 @@ api_version=DEFAULT_API_VERSION, session=None, **kwargs): """Get introspection status for a node. + This function is deprecated. Please use ClientV1.get_status. + New in Ironic Inspector version 1.0.0. :param uuid: node uuid. :param base_url: *Ironic Inspector* URL in form: http://host:port[/ver], @@ -71,6 +82,8 @@ :raises: VersionNotSupported if requested api_version is not supported :raises: *requests* library exception on connection problems. """ + LOG.warning(_LW('The "get_status" function is deprecated, please use ' + 'ClientV1.get_status method instead')) c = v1.ClientV1(api_version=api_version, auth_token=auth_token, inspector_url=base_url, session=session, **kwargs) return c.get_status(uuid) @@ -79,6 +92,8 @@ def server_api_versions(base_url=None, session=None, **kwargs): """Get minimum and maximum supported API versions from a server. + This function is deprecated. Please use ClientV1.server_api_versions. + :param base_url: *Ironic Inspector* URL in form: http://host:port[/ver], defaults to ``http://<current host>:5050/v1``. :param session: keystone session (authentication is not required). @@ -88,6 +103,8 @@ :raises: *requests* library exception on connection problems. :raises: ValueError if returned version cannot be parsed """ + LOG.warning(_LW('The "server_api_versions" function is deprecated, ' + 'please use ClientV1.server_api_versions method instead')) c = http.BaseClient(1, inspector_url=base_url, session=session, **kwargs) return c.server_api_versions() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/ironic_inspector_client/shell.py new/python-ironic-inspector-client-1.9.0/ironic_inspector_client/shell.py --- old/python-ironic-inspector-client-1.8.0/ironic_inspector_client/shell.py 2016-07-11 16:17:00.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/ironic_inspector_client/shell.py 2016-09-01 10:06:39.000000000 +0200 @@ -19,9 +19,7 @@ import logging import sys -from cliff import command -from cliff import lister -from cliff import show +from osc_lib.command import command from osc_lib import utils import ironic_inspector_client @@ -61,7 +59,7 @@ return parser -class StartCommand(lister.Lister): +class StartCommand(command.Lister): """Start the introspection.""" COLUMNS = ('UUID', 'Error') @@ -117,7 +115,7 @@ client.reprocess(parsed_args.uuid) -class StatusCommand(show.ShowOne): +class StatusCommand(command.ShowOne): """Get introspection status.""" def get_parser(self, prog_name): @@ -144,7 +142,7 @@ client.abort(parsed_args.uuid) -class RuleImportCommand(lister.Lister): +class RuleImportCommand(command.Lister): """Import one or several introspection rules from a json file.""" COLUMNS = ("UUID", "Description") @@ -169,7 +167,7 @@ return self.COLUMNS, result -class RuleListCommand(lister.Lister): +class RuleListCommand(command.Lister): """List all introspection rules.""" COLUMNS = ("UUID", "Description") @@ -182,7 +180,7 @@ return self.COLUMNS, rules -class RuleShowCommand(show.ShowOne): +class RuleShowCommand(command.ShowOne): """Show an introspection rule.""" def get_parser(self, prog_name): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/ironic_inspector_client/test/functional.py new/python-ironic-inspector-client-1.9.0/ironic_inspector_client/test/functional.py --- old/python-ironic-inspector-client-1.8.0/ironic_inspector_client/test/functional.py 2016-07-11 16:16:59.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/ironic_inspector_client/test/functional.py 2016-09-01 10:06:39.000000000 +0200 @@ -16,11 +16,14 @@ import json import mock -import requests +import os +import sys +import tempfile import unittest from ironic_inspector.common import swift from ironic_inspector.test import functional +from oslo_concurrency import processutils import ironic_inspector_client as client @@ -51,6 +54,31 @@ status = self.client.get_status(self.uuid) self.assertEqual({'finished': True, 'error': None}, status) + def test_wait_for_finish(self): + shared = [0] # mutable structure to hold number of retries + + def fake_waiter(delay): + shared[0] += 1 + if shared[0] == 2: + # On the second wait simulate data arriving + res = self.call_continue(self.data) + self.assertEqual({'uuid': self.uuid}, res) + elif shared[0] > 2: + # Just wait afterwards + eventlet.greenthread.sleep(delay) + + self.client.introspect(self.uuid) + eventlet.greenthread.sleep(functional.DEFAULT_SLEEP) + + status = self.client.get_status(self.uuid) + self.assertEqual({'finished': False, 'error': None}, status) + + self.client.wait_for_finish([self.uuid], sleep_function=fake_waiter, + retry_interval=functional.DEFAULT_SLEEP) + + status = self.client.get_status(self.uuid) + self.assertEqual({'finished': True, 'error': None}, status) + @mock.patch.object(swift, 'store_introspection_data', autospec=True) @mock.patch.object(swift, 'get_introspection_data', autospec=True) def test_reprocess_stored_introspection_data(self, get_mock, @@ -122,7 +150,7 @@ 'operator'}, status) # assert continue doesn't work after abort - self.assertRaises(requests.HTTPError, self.call_continue, self.data) + self.call_continue(self.data, expect_error=400) def test_setup_ipmi(self): self.node.provision_state = 'enroll' @@ -247,6 +275,110 @@ client.get_status, self.uuid, api_version=(1, 0)) +BASE_CMD = [os.path.join(sys.prefix, 'bin', 'openstack'), + '--os-auth-type', 'token_endpoint', '--os-token', 'fake', + '--os-url', 'http://127.0.0.1:5050'] + + +class BaseCLITest(functional.Base): + def openstack(self, cmd, expect_error=False, parse_json=False): + real_cmd = BASE_CMD + cmd + if parse_json: + real_cmd += ['-f', 'json'] + try: + out, _err = processutils.execute(*real_cmd) + except processutils.ProcessExecutionError as exc: + if expect_error: + return exc.stderr + else: + raise + else: + if expect_error: + raise AssertionError('Command %s returned unexpected success' % + cmd) + elif parse_json: + return json.loads(out) + else: + return out + + def run_cli(self, *cmd, **kwargs): + return self.openstack(['baremetal', 'introspection'] + list(cmd), + **kwargs) + + +class TestCLI(BaseCLITest): + def test_cli_negative(self): + err = self.run_cli('start', expect_error=True) + self.assertIn('too few arguments', err) + err = self.run_cli('status', expect_error=True) + self.assertIn('too few arguments', err) + err = self.run_cli('start', 'uuid', '--new-ipmi-username', 'user', + expect_error=True) + self.assertIn('requires a new password', err) + err = self.run_cli('rule', 'show', 'uuid', expect_error=True) + self.assertIn('not found', err) + err = self.run_cli('rule', 'delete', 'uuid', expect_error=True) + self.assertIn('not found', err) + + def test_introspect_get_status(self): + self.run_cli('start', self.uuid) + eventlet.greenthread.sleep(functional.DEFAULT_SLEEP) + self.cli.node.set_power_state.assert_called_once_with(self.uuid, + 'reboot') + + status = self.run_cli('status', self.uuid, parse_json=True) + self.assertEqual({'finished': False, 'error': None}, status) + + res = self.call_continue(self.data) + self.assertEqual({'uuid': self.uuid}, res) + eventlet.greenthread.sleep(functional.DEFAULT_SLEEP) + + self.assertCalledWithPatch(self.patch, self.cli.node.update) + self.cli.port.create.assert_called_once_with( + node_uuid=self.uuid, address='11:22:33:44:55:66') + + status = self.run_cli('status', self.uuid, parse_json=True) + self.assertEqual({'finished': True, 'error': None}, status) + + def test_rules_api(self): + res = self.run_cli('rule', 'list', parse_json=True) + self.assertEqual([], res) + + rule = {'conditions': [], + 'actions': [{'action': 'fail', 'message': 'boom'}], + 'description': 'Cool actions', + 'uuid': self.uuid} + with tempfile.NamedTemporaryFile() as fp: + json.dump(rule, fp) + fp.flush() + res = self.run_cli('rule', 'import', fp.name, parse_json=True) + + self.assertEqual([{'UUID': self.uuid, 'Description': 'Cool actions'}], + res) + + res = self.run_cli('rule', 'show', self.uuid, parse_json=True) + self.assertEqual(rule, res) + + res = self.run_cli('rule', 'list', parse_json=True) + self.assertEqual([{'UUID': self.uuid, + 'Description': 'Cool actions'}], + res) + + self.run_cli('rule', 'delete', self.uuid) + res = self.run_cli('rule', 'list', parse_json=True) + self.assertEqual([], res) + + with tempfile.NamedTemporaryFile() as fp: + rule.pop('uuid') + json.dump([rule, rule], fp) + fp.flush() + res = self.run_cli('rule', 'import', fp.name, parse_json=True) + + self.run_cli('rule', 'purge') + res = self.run_cli('rule', 'list', parse_json=True) + self.assertEqual([], res) + + if __name__ == '__main__': with functional.mocked_server(): - unittest.main() + unittest.main(verbosity=2) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/ironic_inspector_client/test/test_shell.py new/python-ironic-inspector-client-1.9.0/ironic_inspector_client/test/test_shell.py --- old/python-ironic-inspector-client-1.8.0/ironic_inspector_client/test/test_shell.py 2016-07-11 16:17:00.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/ironic_inspector_client/test/test_shell.py 2016-09-01 10:06:39.000000000 +0200 @@ -117,7 +117,7 @@ result = cmd.take_action(parsed_args) self.client.reprocess.assert_called_once_with(node) - self.assertIs(None, result) + self.assertIsNone(result) def test_wait(self): nodes = ['uuid1', 'uuid2', 'uuid3'] @@ -153,7 +153,7 @@ result = cmd.take_action(parsed_args) self.client.abort.assert_called_once_with(node) - self.assertIs(None, result) + self.assertIsNone(result) class TestGetStatus(BaseTest): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/python_ironic_inspector_client.egg-info/PKG-INFO new/python-ironic-inspector-client-1.9.0/python_ironic_inspector_client.egg-info/PKG-INFO --- old/python-ironic-inspector-client-1.8.0/python_ironic_inspector_client.egg-info/PKG-INFO 2016-07-11 16:19:14.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/python_ironic_inspector_client.egg-info/PKG-INFO 2016-09-01 10:09:05.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: python-ironic-inspector-client -Version: 1.8.0 +Version: 1.9.0 Summary: Python client for Ironic Inspector Home-page: https://launchpad.net/python-ironic-inspector-client Author: UNKNOWN @@ -235,29 +235,6 @@ $ openstack baremetal introspection rule delete <UUID> - Shortcut Functions - ~~~~~~~~~~~~~~~~~~ - - The following functions are available for simplified access to the most common - functionality: - - * Starting introspection:: - - ironic_inspector_client.introspect(uuid[, new_ipmi_password[, new_ipmi_username]][, base_url][, api_version] **) - - * Getting introspection status:: - - ironic_inspector_client.get_status(uuid[, base_url][, api_version] **) - - * Getting API versions supported by a server:: - - ironic_inspector_client.server_api_versions([base_url] **) - - Here ``base_url`` argument is the same as ``inspector_url`` argument - to the ``ClientV1`` constructor. Keyword arguments are passed to the client - constructor intact. The first 2 functions also accept deprecated ``auth_token`` - argument, which should not be used. - Using names instead of UUID ~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -284,4 +261,7 @@ Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/python_ironic_inspector_client.egg-info/SOURCES.txt new/python-ironic-inspector-client-1.9.0/python_ironic_inspector_client.egg-info/SOURCES.txt --- old/python-ironic-inspector-client-1.8.0/python_ironic_inspector_client.egg-info/SOURCES.txt 2016-07-11 16:19:15.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/python_ironic_inspector_client.egg-info/SOURCES.txt 2016-09-01 10:09:06.000000000 +0200 @@ -40,6 +40,7 @@ releasenotes/notes/introspect-multiple-uuids-0790d57e0a0b9292.yaml releasenotes/notes/introspection-wait-a7e8fe832c3aaff9.yaml releasenotes/notes/ks-session-ac614a9abda3e228.yaml +releasenotes/notes/old-functions-80ddae9eaa1e7e1d.yaml releasenotes/notes/osc-lib-162db03fed2bc40c.yaml releasenotes/notes/print-import-rule-result-b5c19e9b8679849e.yaml releasenotes/notes/reprocess-stored-introspection-data-c4910325254426c5.yaml @@ -50,4 +51,5 @@ releasenotes/source/mitaka.rst releasenotes/source/unreleased.rst releasenotes/source/_static/.placeholder -releasenotes/source/_templates/.placeholder \ No newline at end of file +releasenotes/source/_templates/.placeholder +tools/tox_install.sh \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/python_ironic_inspector_client.egg-info/pbr.json new/python-ironic-inspector-client-1.9.0/python_ironic_inspector_client.egg-info/pbr.json --- old/python-ironic-inspector-client-1.8.0/python_ironic_inspector_client.egg-info/pbr.json 2016-07-11 16:19:14.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/python_ironic_inspector_client.egg-info/pbr.json 2016-09-01 10:09:05.000000000 +0200 @@ -1 +1 @@ -{"git_version": "fdbefc5", "is_release": true} \ No newline at end of file +{"git_version": "6364bc9", "is_release": true} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/python_ironic_inspector_client.egg-info/requires.txt new/python-ironic-inspector-client-1.9.0/python_ironic_inspector_client.egg-info/requires.txt --- old/python-ironic-inspector-client-1.8.0/python_ironic_inspector_client.egg-info/requires.txt 2016-07-11 16:19:14.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/python_ironic_inspector_client.egg-info/requires.txt 2016-09-01 10:09:05.000000000 +0200 @@ -1,8 +1,7 @@ -cliff!=1.16.0,!=1.17.0,>=1.15.0 -keystoneauth1>=2.7.0 -osc-lib>=0.1.0 +keystoneauth1>=2.10.0 +osc-lib>=1.0.2 oslo.i18n>=2.1.0 -oslo.utils>=3.15.0 +oslo.utils>=3.16.0 pbr>=1.6 python-openstackclient>=2.1.0 requests>=2.10.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/releasenotes/notes/old-functions-80ddae9eaa1e7e1d.yaml new/python-ironic-inspector-client-1.9.0/releasenotes/notes/old-functions-80ddae9eaa1e7e1d.yaml --- old/python-ironic-inspector-client-1.8.0/releasenotes/notes/old-functions-80ddae9eaa1e7e1d.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/python-ironic-inspector-client-1.9.0/releasenotes/notes/old-functions-80ddae9eaa1e7e1d.yaml 2016-09-01 10:06:39.000000000 +0200 @@ -0,0 +1,8 @@ +--- +deprecations: + - | + The following functions are deprecated in favor of ``ClientV1`` methods: + + * ``ironic_inspector_client.introspect`` + * ``ironic_inspector_client.get_status`` + * ``ironic_inspector_client.server_api_versions`` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/requirements.txt new/python-ironic-inspector-client-1.9.0/requirements.txt --- old/python-ironic-inspector-client-1.8.0/requirements.txt 2016-07-11 16:17:00.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/requirements.txt 2016-09-01 10:06:39.000000000 +0200 @@ -1,11 +1,10 @@ # The order of packages is significant, because pip processes them in the order # of appearance. Changing the order has an impact on the overall integration # process, which may cause wedges in the gate later. -cliff!=1.16.0,!=1.17.0,>=1.15.0 # Apache-2.0 -keystoneauth1>=2.7.0 # Apache-2.0 -osc-lib>=0.1.0 # Apache-2.0 +keystoneauth1>=2.10.0 # Apache-2.0 +osc-lib>=1.0.2 # Apache-2.0 oslo.i18n>=2.1.0 # Apache-2.0 -oslo.utils>=3.15.0 # Apache-2.0 +oslo.utils>=3.16.0 # Apache-2.0 pbr>=1.6 # Apache-2.0 python-openstackclient>=2.1.0 # Apache-2.0 requests>=2.10.0 # Apache-2.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/setup.cfg new/python-ironic-inspector-client-1.9.0/setup.cfg --- old/python-ironic-inspector-client-1.8.0/setup.cfg 2016-07-11 16:19:15.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/setup.cfg 2016-09-01 10:09:06.000000000 +0200 @@ -13,7 +13,10 @@ Operating System :: OS Independent Programming Language :: Python Programming Language :: Python :: 2 + Programming Language :: Python :: 2.7 Programming Language :: Python :: 3 + Programming Language :: Python :: 3.4 + Programming Language :: Python :: 3.5 [files] packages = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/test-requirements.txt new/python-ironic-inspector-client-1.9.0/test-requirements.txt --- old/python-ironic-inspector-client-1.8.0/test-requirements.txt 2016-07-11 16:16:59.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/test-requirements.txt 2016-09-01 10:06:39.000000000 +0200 @@ -6,6 +6,8 @@ fixtures>=3.0.0 # Apache-2.0/BSD hacking<0.11,>=0.10.0 mock>=2.0 # BSD +requests-mock>=1.0 # Apache-2.0 sphinx!=1.3b1,<1.3,>=1.2.1 # BSD oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0 reno>=1.8.0 # Apache2 +oslo.concurrency>=3.8.0 # Apache-2.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/tools/tox_install.sh new/python-ironic-inspector-client-1.9.0/tools/tox_install.sh --- old/python-ironic-inspector-client-1.8.0/tools/tox_install.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/python-ironic-inspector-client-1.9.0/tools/tox_install.sh 2016-09-01 10:06:39.000000000 +0200 @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +# Client constraint file contains this client version pin that is in conflict +# with installing the client from source. We should replace the version pin in +# the constraints file before applying it for from-source installation. + +ZUUL_CLONER=/usr/zuul-env/bin/zuul-cloner +BRANCH_NAME=master +CLIENT_NAME=python-ironic-inspector-client +requirements_installed=$(echo "import openstack_requirements" | python 2>/dev/null ; echo $?) + +set -e + +CONSTRAINTS_FILE=$1 +shift + +install_cmd="pip install" +mydir=$(mktemp -dt "$CLIENT_NAME-tox_install-XXXXXXX") +trap "rm -rf $mydir" EXIT +localfile=$mydir/upper-constraints.txt +if [[ $CONSTRAINTS_FILE != http* ]]; then + CONSTRAINTS_FILE=file://$CONSTRAINTS_FILE +fi +curl $CONSTRAINTS_FILE -k -o $localfile +install_cmd="$install_cmd -c$localfile" + +if [ $requirements_installed -eq 0 ]; then + echo "ALREADY INSTALLED" > /tmp/tox_install.txt + echo "Requirements already installed; using existing package" +elif [ -x "$ZUUL_CLONER" ]; then + echo "ZUUL CLONER" > /tmp/tox_install.txt + pushd $mydir + $ZUUL_CLONER --cache-dir \ + /opt/git \ + --branch $BRANCH_NAME \ + git://git.openstack.org \ + openstack/requirements + cd openstack/requirements + $install_cmd -e . + popd +else + echo "PIP HARDCODE" > /tmp/tox_install.txt + if [ -z "$REQUIREMENTS_PIP_LOCATION" ]; then + REQUIREMENTS_PIP_LOCATION="git+https://git.openstack.org/openstack/requirements@$BRANCH_NAME#egg=requirements" + fi + $install_cmd -U -e ${REQUIREMENTS_PIP_LOCATION} +fi + +# This is the main purpose of the script: Allow local installation of +# the current repo. It is listed in constraints file and thus any +# install will be constrained and we need to unconstrain it. +edit-constraints $localfile -- $CLIENT_NAME "-e file://$PWD#egg=$CLIENT_NAME" + +$install_cmd -U $* +exit $? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ironic-inspector-client-1.8.0/tox.ini new/python-ironic-inspector-client-1.9.0/tox.ini --- old/python-ironic-inspector-client-1.8.0/tox.ini 2016-07-11 16:16:59.000000000 +0200 +++ new/python-ironic-inspector-client-1.9.0/tox.ini 2016-09-01 10:06:39.000000000 +0200 @@ -1,7 +1,9 @@ [tox] -envlist = py34,py27,pep8,func +envlist = py35,py34,py27,pep8,func [testenv] +install_command = + {toxinidir}/tools/tox_install.sh {env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages} usedevelop = True deps = -r{toxinidir}/requirements.txt