Clean error message display :)
Change-Id: Ie74e590c7d9c9de0b5a22ca5185c3cd5438a50cb
This commit is contained in:
parent
1e47b5a369
commit
2b97f4560c
monikerclient
@ -17,6 +17,7 @@ import abc
|
||||
from cliff.command import Command as CliffCommand
|
||||
from cliff.lister import Lister
|
||||
from cliff.show import ShowOne
|
||||
from monikerclient import exceptions
|
||||
from monikerclient import utils
|
||||
from monikerclient.v1 import Client
|
||||
|
||||
@ -44,7 +45,30 @@ class Command(CliffCommand):
|
||||
|
||||
self.client = Client(**client_args)
|
||||
|
||||
return super(Command, self).run(parsed_args)
|
||||
try:
|
||||
return super(Command, self).run(parsed_args)
|
||||
except exceptions.RemoteError, e:
|
||||
columns = ['Code', 'Type']
|
||||
values = [e.code, e.type]
|
||||
|
||||
if e.message:
|
||||
columns.append('Message')
|
||||
values.append(e.message)
|
||||
|
||||
if e.errors:
|
||||
columns.append('Errors')
|
||||
values.append(e.errors)
|
||||
|
||||
self.error_output(parsed_args, columns, values)
|
||||
|
||||
return 1
|
||||
|
||||
def error_output(self, parsed_args, column_names, data):
|
||||
self.formatter.emit_one(column_names,
|
||||
data,
|
||||
self.app.stdout,
|
||||
parsed_args)
|
||||
self.app.log.error('The requested action did not complete sucessfully')
|
||||
|
||||
@abc.abstractmethod
|
||||
def execute(self, parsed_args):
|
||||
@ -66,7 +90,6 @@ class Command(CliffCommand):
|
||||
return data
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
# TODO: Common Exception Handling Here
|
||||
results = self.execute(parsed_args)
|
||||
return self.post_execute(results)
|
||||
|
||||
|
@ -24,7 +24,13 @@ class ResourceNotFound(Base):
|
||||
|
||||
|
||||
class RemoteError(Base):
|
||||
pass
|
||||
def __init__(self, message=None, code=None, type=None, errors=None):
|
||||
super(RemoteError, self).__init__(message)
|
||||
|
||||
self.message = message
|
||||
self.code = code
|
||||
self.type = type
|
||||
self.errors = errors
|
||||
|
||||
|
||||
class Unknown(RemoteError):
|
||||
|
@ -13,6 +13,7 @@
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
import logging
|
||||
import os
|
||||
from cliff.app import App
|
||||
from cliff.commandmanager import CommandManager
|
||||
@ -20,6 +21,8 @@ from monikerclient.version import version_info as version
|
||||
|
||||
|
||||
class MonikerShell(App):
|
||||
CONSOLE_MESSAGE_FORMAT = '%(levelname)s: %(message)s'
|
||||
|
||||
def __init__(self):
|
||||
super(MonikerShell, self).__init__(
|
||||
description='Moniker Client',
|
||||
@ -27,6 +30,19 @@ class MonikerShell(App):
|
||||
command_manager=CommandManager('moniker.cli'),
|
||||
)
|
||||
|
||||
self.log = logging.getLogger(__name__)
|
||||
|
||||
def configure_logging(self):
|
||||
super(MonikerShell, self).configure_logging()
|
||||
|
||||
# Set requests logging
|
||||
requests_logger = logging.getLogger('requests')
|
||||
|
||||
if self.options.verbose_level <= 1:
|
||||
requests_logger.setLevel(logging.WARN)
|
||||
else:
|
||||
requests_logger.setLevel(logging.DEBUG)
|
||||
|
||||
def build_option_parser(self, description, version):
|
||||
parser = super(MonikerShell, self).build_option_parser(
|
||||
description, version)
|
||||
|
@ -52,7 +52,6 @@ class Client(object):
|
||||
raise ValueError('Either an endpoint or auth_url must be supplied')
|
||||
|
||||
headers = {'Content-Type': 'application/json'}
|
||||
|
||||
self.requests = requests.Session()
|
||||
self.requests.auth = auth
|
||||
self.requests.headers.update(headers)
|
||||
@ -76,15 +75,15 @@ class Client(object):
|
||||
response = func(*args, **kw)
|
||||
|
||||
if response.status_code == 400:
|
||||
raise exceptions.BadRequest(response.json['errors'])
|
||||
raise exceptions.BadRequest(**response.json)
|
||||
elif response.status_code in (401, 403):
|
||||
raise exceptions.Forbidden()
|
||||
raise exceptions.Forbidden(**response.json)
|
||||
elif response.status_code == 404:
|
||||
raise exceptions.NotFound()
|
||||
raise exceptions.NotFound(**response.json)
|
||||
elif response.status_code == 409:
|
||||
raise exceptions.Conflict()
|
||||
raise exceptions.Conflict(**response.json)
|
||||
elif response.status_code == 500:
|
||||
raise exceptions.Unknown()
|
||||
raise exceptions.Unknown(**response.json)
|
||||
else:
|
||||
return response
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user