From 9db6d710456dece28b3c9201cc8f7b64aafb78cd Mon Sep 17 00:00:00 2001 From: "carlos.novo" Date: Mon, 4 Apr 2016 18:02:48 +0100 Subject: [PATCH] More friendly message reinstalling a v1.0 plugin. Now the code is showing a more friendly message to the user, instead of the full resp response. [root@fuel objects]# fuel plugins --install /tmp/lbaas-1.0.0.fp DEPRECATION WARNING: The plugin has old 1.0 package format, this format does not support many features, such as plugins updates, find plugin in new format or migrate and rebuild this one. Nothing to do: LBaaS plugin for Neutron, version 1.0.0, does not update installed plugin. Change-Id: I865c1024bde851bf4873aff4f775b8aac5329d35 Closes-Bug: 1396154 --- fuelclient/objects/plugins.py | 5 +++++ fuelclient/tests/unit/v1/test_plugins_object.py | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/fuelclient/objects/plugins.py b/fuelclient/objects/plugins.py index 13b9825b..b37d9028 100644 --- a/fuelclient/objects/plugins.py +++ b/fuelclient/objects/plugins.py @@ -453,6 +453,11 @@ class Plugins(base.BaseObject): # Replace plugin information url = cls.class_instance_path.format(id=resp['id']) resp = cls.connection.put_request(url, metadata) + elif resp_raw.status_code == 409: + error.exit_with_error( + "Nothing to do: %(title)s, version " + "%(package_version)s, does not update " + "installed plugin." % metadata) else: resp_raw.raise_for_status() diff --git a/fuelclient/tests/unit/v1/test_plugins_object.py b/fuelclient/tests/unit/v1/test_plugins_object.py index 0d6e8827..09a5f45f 100644 --- a/fuelclient/tests/unit/v1/test_plugins_object.py +++ b/fuelclient/tests/unit/v1/test_plugins_object.py @@ -346,6 +346,21 @@ class TestPluginsObject(base.UnitTestCase): get_for_update_mock.assert_called_once_with(meta) self.assertFalse(put_mock.called) + @patch.object(Plugins, 'get_plugin_for_update', return_value=None) + @patch.object(Plugins.connection, 'post_request_raw', + return_value=MagicMock( + status_code=409, + **{'json.return_value': {'id': 99}})) + @patch.object(Plugins.connection, 'put_request', return_value='put_return') + def test_update_or_create_updates_without_force( + self, put_mock, post_mock, get_for_update_mock): + meta = {'id': 99, 'version': '1.0.0', 'package_version': '2.0.0', + 'title': 'Plugin title'} + self.assertRaises(SystemExit, + self.plugin.update_or_create, + meta, + force=False) + @patch.object(Plugins, 'get_plugin_for_update', return_value=None) @patch.object(Plugins.connection, 'post_request_raw', return_value=MagicMock(