Merge "network.common.NetworkAndComputeShowOne: catch HttpException"

This commit is contained in:
Jenkins 2016-11-10 18:10:41 +00:00 committed by Gerrit Code Review
commit 95c26cebaa
2 changed files with 25 additions and 6 deletions

View File

@ -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)

View File

@ -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())