Revision b4f69041 kamaki/cli/commands/__init__.py

b/kamaki/cli/commands/__init__.py
38 38
log = get_logger(__name__)
39 39

  
40 40

  
41
def DontRaiseKeyError(foo):
42
    def wrap(*args, **kwargs):
43
        try:
44
            return foo(*args, **kwargs)
45
        except KeyError:
46
            return None
47
    return wrap
48

  
49

  
50
def addLogSettings(foo):
51
    def wrap(self, *args, **kwargs):
52
        try:
53
            return foo(self, *args, **kwargs)
54
        finally:
55
            self._set_log_params()
56
            self._update_max_threads
57
    return wrap
58

  
59

  
41 60
class _command_init(object):
42 61

  
43 62
    def __init__(self, arguments={}, auth_base=None, cloud=None):
......
55 74
        self.auth_base = auth_base or getattr(self, 'auth_base', None)
56 75
        self.cloud = cloud or getattr(self, 'cloud', None)
57 76

  
77
    @DontRaiseKeyError
78
    def _custom_url(self, service):
79
        return self.config.get_remote(self.cloud, '%s_url' % service)
80

  
81
    @DontRaiseKeyError
82
    def _custom_token(self, service):
83
        return self.config.get_remote(self.cloud, '%s_token' % service)
84

  
85
    @DontRaiseKeyError
86
    def _custom_type(self, service):
87
        return self.config.get_remote(self.cloud, '%s_type' % service)
88

  
89
    @DontRaiseKeyError
90
    def _custom_version(self, service):
91
        return self.config.get_remote(self.cloud, '%s_version' % service)
92

  
58 93
    def _set_log_params(self):
59 94
        try:
60 95
            self.client.LOG_TOKEN, self.client.LOG_DATA = (
......
65 100
                '%s\n defaults for token and data logging are off' % e)
66 101

  
67 102
    def _update_max_threads(self):
68
        try:
103
        if getattr(self, 'client', None):
69 104
            max_threads = int(self['config'].get_global('max_threads'))
70 105
            assert max_threads > 0
71 106
            self.client.MAX_THREADS = max_threads
72
        except Exception as e:
73
            log.warning('Failed to read custom thread settings: '
74
                '%s, use default max threads (%s)' % (
75
                    e, self.client.MAX_THREADS))
76 107

  
77 108
    def _safe_progress_bar(self, msg, arg='progress_bar'):
78 109
        """Try to get a progress bar, but do not raise errors"""

Also available in: Unified diff