Index: third_party/gsutil/boto/boto/beanstalk/wrapper.py |
diff --git a/third_party/gsutil/boto/boto/beanstalk/wrapper.py b/third_party/gsutil/boto/boto/beanstalk/wrapper.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..aa9a7d279b5914071fdbcd0637008673945a4c97 |
--- /dev/null |
+++ b/third_party/gsutil/boto/boto/beanstalk/wrapper.py |
@@ -0,0 +1,29 @@ |
+"""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, 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)) |