summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-11-10 18:10:41 +0000
committerGerrit Code Review <review@openstack.org>2016-11-10 18:10:41 +0000
commit95c26cebaa6bf7419a54d632b07ea5303ad0d134 (patch)
treea3606f98144eb044912dbd767cb64501349d166f /openstackclient
parent85c26caa2e3f752379172fda104dc06183900741 (diff)
parent52279b1b04924284576966eb33192dd1301683bb (diff)
downloadpython-openstackclient-95c26cebaa6bf7419a54d632b07ea5303ad0d134.tar.gz
Merge "network.common.NetworkAndComputeShowOne: catch HttpException"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/network/common.py17
-rw-r--r--openstackclient/tests/unit/network/test_common.py14
2 files changed, 25 insertions, 6 deletions
diff --git a/openstackclient/network/common.py b/openstackclient/network/common.py
index 2b1a5656..a2e700be 100644
--- a/openstackclient/network/common.py
+++ b/openstackclient/network/common.py
@@ -14,6 +14,7 @@
import abc
import logging
+import openstack.exceptions
from osc_lib.command import command
from osc_lib import exceptions
import six
@@ -181,12 +182,16 @@ class NetworkAndComputeShowOne(command.ShowOne):
"""
def take_action(self, parsed_args):
- if self.app.client_manager.is_network_endpoint_enabled():
- return self.take_action_network(self.app.client_manager.network,
- parsed_args)
- else:
- return self.take_action_compute(self.app.client_manager.compute,
- parsed_args)
+ try:
+ if self.app.client_manager.is_network_endpoint_enabled():
+ return self.take_action_network(
+ self.app.client_manager.network, parsed_args)
+ else:
+ return self.take_action_compute(
+ self.app.client_manager.compute, parsed_args)
+ except openstack.exceptions.HttpException as exc:
+ msg = _("Error while executing command: %s") % exc.message
+ raise exceptions.CommandError(msg)
def get_parser(self, prog_name):
LOG.debug('get_parser(%s)', prog_name)
diff --git a/openstackclient/tests/unit/network/test_common.py b/openstackclient/tests/unit/network/test_common.py
index 325aad2a..4b9a754b 100644
--- a/openstackclient/tests/unit/network/test_common.py
+++ b/openstackclient/tests/unit/network/test_common.py
@@ -14,6 +14,8 @@
import argparse
import mock
+import openstack
+from openstackclient.common import exceptions
from openstackclient.network import common
from openstackclient.tests.unit import utils
@@ -172,3 +174,15 @@ class TestNetworkAndComputeShowOne(TestNetworkAndCompute):
def setUp(self):
super(TestNetworkAndComputeShowOne, self).setUp()
self.cmd = FakeNetworkAndComputeShowOne(self.app, self.namespace)
+
+ def test_take_action_with_http_exception(self):
+ with mock.patch.object(self.cmd, 'take_action_network') as m_action:
+ m_action.side_effect = openstack.exceptions.HttpException("bar")
+ self.assertRaisesRegex(exceptions.CommandError, "bar",
+ self.cmd.take_action, mock.Mock())
+
+ self.app.client_manager.network_endpoint_enabled = False
+ with mock.patch.object(self.cmd, 'take_action_compute') as m_action:
+ m_action.side_effect = openstack.exceptions.HttpException("bar")
+ self.assertRaisesRegex(exceptions.CommandError, "bar",
+ self.cmd.take_action, mock.Mock())