30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
|
"""Wraps layer1 api methods and converts layer1 dict responses to objects."""
|
||
|
from boto.beanstalk.layer1 import Layer1
|
||
|
import boto.beanstalk.response
|
||
|
from boto.exception import BotoServerError
|
||
|
import boto.beanstalk.exception as exception
|
||
|
|
||
|
|
||
|
def beanstalk_wrapper(func, name):
|
||
|
def _wrapped_low_level_api(*args, **kwargs):
|
||
|
try:
|
||
|
response = func(*args, **kwargs)
|
||
|
except BotoServerError as e:
|
||
|
raise exception.simple(e)
|
||
|
# Turn 'this_is_a_function_name' into 'ThisIsAFunctionNameResponse'.
|
||
|
cls_name = ''.join([part.capitalize() for part in name.split('_')]) + 'Response'
|
||
|
cls = getattr(boto.beanstalk.response, cls_name)
|
||
|
return cls(response)
|
||
|
return _wrapped_low_level_api
|
||
|
|
||
|
|
||
|
class Layer1Wrapper(object):
|
||
|
def __init__(self, *args, **kwargs):
|
||
|
self.api = Layer1(*args, **kwargs)
|
||
|
|
||
|
def __getattr__(self, name):
|
||
|
try:
|
||
|
return beanstalk_wrapper(getattr(self.api, name), name)
|
||
|
except AttributeError:
|
||
|
raise AttributeError("%s has no attribute %r" % (self, name))
|