Revision 392d902d kamaki/cli/commands/errors.py
b/kamaki/cli/commands/errors.py | ||
---|---|---|
46 | 46 |
class generic(object): |
47 | 47 |
|
48 | 48 |
@classmethod |
49 |
def all(this, foo):
|
|
49 |
def all(this, func):
|
|
50 | 50 |
def _raise(self, *args, **kwargs): |
51 | 51 |
try: |
52 |
return foo(self, *args, **kwargs)
|
|
52 |
return func(self, *args, **kwargs)
|
|
53 | 53 |
except Exception as e: |
54 | 54 |
if _debug: |
55 | 55 |
print_stack() |
... | ... | |
60 | 60 |
return _raise |
61 | 61 |
|
62 | 62 |
@classmethod |
63 |
def _connection(this, foo):
|
|
63 |
def _connection(this, func):
|
|
64 | 64 |
def _raise(self, *args, **kwargs): |
65 | 65 |
try: |
66 |
foo(self, *args, **kwargs)
|
|
66 |
func(self, *args, **kwargs)
|
|
67 | 67 |
except ClientError as ce: |
68 | 68 |
ce_msg = ('%s' % ce).lower() |
69 | 69 |
if ce.status == 401: |
... | ... | |
102 | 102 |
'* (temporary): re-run with <token> parameter'] + CLOUDNAME |
103 | 103 |
|
104 | 104 |
@classmethod |
105 |
def astakosclient(this, foo):
|
|
105 |
def astakosclient(this, func):
|
|
106 | 106 |
def _raise(self, *args, **kwargs): |
107 | 107 |
try: |
108 |
r = foo(self, *args, **kwargs)
|
|
108 |
r = func(self, *args, **kwargs)
|
|
109 | 109 |
except AstakosClientException as ace: |
110 | 110 |
raiseCLIError(ace, 'Error in synnefo-AstakosClient') |
111 | 111 |
return r |
112 | 112 |
return _raise |
113 | 113 |
|
114 | 114 |
@classmethod |
115 |
def load(this, foo):
|
|
115 |
def load(this, func):
|
|
116 | 116 |
def _raise(self, *args, **kwargs): |
117 |
r = foo(self, *args, **kwargs)
|
|
117 |
r = func(self, *args, **kwargs)
|
|
118 | 118 |
try: |
119 | 119 |
client = getattr(self, 'client') |
120 | 120 |
except AttributeError as ae: |
... | ... | |
135 | 135 |
return _raise |
136 | 136 |
|
137 | 137 |
@classmethod |
138 |
def authenticate(this, foo):
|
|
138 |
def authenticate(this, func):
|
|
139 | 139 |
def _raise(self, *args, **kwargs): |
140 | 140 |
try: |
141 |
return foo(self, *args, **kwargs)
|
|
141 |
return func(self, *args, **kwargs)
|
|
142 | 142 |
except (ClientError, AstakosClientException) as ce: |
143 | 143 |
if ce.status == 401: |
144 | 144 |
token = kwargs.get('custom_token', 0) or self.client.token |
... | ... | |
147 | 147 |
details = [] if token else this._token_details |
148 | 148 |
raiseCLIError(ce, msg, details=details) |
149 | 149 |
raise ce |
150 |
self._raise = foo
|
|
150 |
self._raise = func
|
|
151 | 151 |
return _raise |
152 | 152 |
|
153 | 153 |
|
154 | 154 |
class history(object): |
155 | 155 |
@classmethod |
156 |
def init(this, foo):
|
|
156 |
def init(this, func):
|
|
157 | 157 |
def _raise(self, *args, **kwargs): |
158 |
r = foo(self, *args, **kwargs)
|
|
158 |
r = func(self, *args, **kwargs)
|
|
159 | 159 |
if not hasattr(self, 'history'): |
160 | 160 |
raise CLIError('Failed to load history', importance=2) |
161 | 161 |
return r |
162 | 162 |
return _raise |
163 | 163 |
|
164 | 164 |
@classmethod |
165 |
def _get_cmd_ids(this, foo):
|
|
165 |
def _get_cmd_ids(this, func):
|
|
166 | 166 |
def _raise(self, cmd_ids, *args, **kwargs): |
167 | 167 |
if not cmd_ids: |
168 | 168 |
raise CLISyntaxError( |
169 | 169 |
'Usage: <id1|id1-id2> [id3|id3-id4] ...', |
170 | 170 |
details=self.__doc__.split('\n')) |
171 |
return foo(self, cmd_ids, *args, **kwargs)
|
|
171 |
return func(self, cmd_ids, *args, **kwargs)
|
|
172 | 172 |
return _raise |
173 | 173 |
|
174 | 174 |
|
... | ... | |
186 | 186 |
net_types = ('CUSTOM', 'MAC_FILTERED', 'IP_LESS_ROUTED', 'PHYSICAL_VLAN') |
187 | 187 |
|
188 | 188 |
@classmethod |
189 |
def connection(this, foo):
|
|
190 |
return generic._connection(foo)
|
|
189 |
def connection(this, func):
|
|
190 |
return generic._connection(func)
|
|
191 | 191 |
|
192 | 192 |
@classmethod |
193 |
def date(this, foo):
|
|
193 |
def date(this, func):
|
|
194 | 194 |
def _raise(self, *args, **kwargs): |
195 | 195 |
try: |
196 |
return foo(self, *args, **kwargs)
|
|
196 |
return func(self, *args, **kwargs)
|
|
197 | 197 |
except ClientError as ce: |
198 | 198 |
if ce.status == 400 and 'changes-since' in ('%s' % ce): |
199 | 199 |
raise CLIError( |
... | ... | |
203 | 203 |
return _raise |
204 | 204 |
|
205 | 205 |
@classmethod |
206 |
def cluster_size(this, foo):
|
|
206 |
def cluster_size(this, func):
|
|
207 | 207 |
def _raise(self, *args, **kwargs): |
208 | 208 |
size = kwargs.get('size', None) |
209 | 209 |
try: |
210 | 210 |
size = int(size) |
211 | 211 |
assert size > 0, 'Cluster size must be a positive integer' |
212 |
return foo(self, *args, **kwargs)
|
|
212 |
return func(self, *args, **kwargs)
|
|
213 | 213 |
except ValueError as ve: |
214 | 214 |
msg = 'Invalid cluster size value %s' % size |
215 | 215 |
raiseCLIError(ve, msg, importance=1, details=[ |
... | ... | |
222 | 222 |
return _raise |
223 | 223 |
|
224 | 224 |
@classmethod |
225 |
def network_id(this, foo):
|
|
225 |
def network_id(this, func):
|
|
226 | 226 |
def _raise(self, *args, **kwargs): |
227 | 227 |
network_id = kwargs.get('network_id', None) |
228 | 228 |
try: |
229 | 229 |
network_id = int(network_id) |
230 |
return foo(self, *args, **kwargs)
|
|
230 |
return func(self, *args, **kwargs)
|
|
231 | 231 |
except ValueError as ve: |
232 | 232 |
msg = 'Invalid network id %s ' % network_id |
233 | 233 |
details = 'network id must be a positive integer' |
... | ... | |
242 | 242 |
return _raise |
243 | 243 |
|
244 | 244 |
@classmethod |
245 |
def network_type(this, foo):
|
|
245 |
def network_type(this, func):
|
|
246 | 246 |
def _raise(self, *args, **kwargs): |
247 | 247 |
network_type = kwargs.get('network_type', None) |
248 | 248 |
msg = 'Invalid network type %s.\nValid types: %s' % ( |
249 | 249 |
network_type, ' '.join(this.net_types)) |
250 | 250 |
assert network_type in this.net_types, msg |
251 |
return foo(self, *args, **kwargs)
|
|
251 |
return func(self, *args, **kwargs)
|
|
252 | 252 |
return _raise |
253 | 253 |
|
254 | 254 |
@classmethod |
255 |
def network_max(this, foo):
|
|
255 |
def network_max(this, func):
|
|
256 | 256 |
def _raise(self, *args, **kwargs): |
257 | 257 |
try: |
258 |
return foo(self, *args, **kwargs)
|
|
258 |
return func(self, *args, **kwargs)
|
|
259 | 259 |
except ClientError as ce: |
260 | 260 |
if ce.status == 413: |
261 | 261 |
msg = 'Cannot create another network', |
... | ... | |
268 | 268 |
return _raise |
269 | 269 |
|
270 | 270 |
@classmethod |
271 |
def network_in_use(this, foo):
|
|
271 |
def network_in_use(this, func):
|
|
272 | 272 |
def _raise(self, *args, **kwargs): |
273 | 273 |
network_id = kwargs.get('network_id', None) |
274 | 274 |
try: |
275 |
return foo(self, *args, **kwargs)
|
|
275 |
return func(self, *args, **kwargs)
|
|
276 | 276 |
except ClientError as ce: |
277 | 277 |
if network_id and ce.status in (400, ): |
278 | 278 |
msg = 'Network with id %s does not exist' % network_id, |
... | ... | |
288 | 288 |
return _raise |
289 | 289 |
|
290 | 290 |
@classmethod |
291 |
def flavor_id(this, foo):
|
|
291 |
def flavor_id(this, func):
|
|
292 | 292 |
def _raise(self, *args, **kwargs): |
293 | 293 |
flavor_id = kwargs.get('flavor_id', None) |
294 | 294 |
try: |
295 | 295 |
flavor_id = int(flavor_id) |
296 |
return foo(self, *args, **kwargs)
|
|
296 |
return func(self, *args, **kwargs)
|
|
297 | 297 |
except ValueError as ve: |
298 | 298 |
msg = 'Invalid flavor id %s ' % flavor_id, |
299 | 299 |
details = 'Flavor id must be a positive integer' |
... | ... | |
308 | 308 |
return _raise |
309 | 309 |
|
310 | 310 |
@classmethod |
311 |
def server_id(this, foo):
|
|
311 |
def server_id(this, func):
|
|
312 | 312 |
def _raise(self, *args, **kwargs): |
313 | 313 |
server_id = kwargs.get('server_id', None) |
314 | 314 |
try: |
315 | 315 |
server_id = int(server_id) |
316 |
return foo(self, *args, **kwargs)
|
|
316 |
return func(self, *args, **kwargs)
|
|
317 | 317 |
except ValueError as ve: |
318 | 318 |
msg = 'Invalid virtual server id %s' % server_id, |
319 | 319 |
details = 'Server id must be a positive integer' |
... | ... | |
333 | 333 |
return _raise |
334 | 334 |
|
335 | 335 |
@classmethod |
336 |
def firewall(this, foo):
|
|
336 |
def firewall(this, func):
|
|
337 | 337 |
def _raise(self, *args, **kwargs): |
338 | 338 |
profile = kwargs.get('profile', None) |
339 | 339 |
try: |
340 |
return foo(self, *args, **kwargs)
|
|
340 |
return func(self, *args, **kwargs)
|
|
341 | 341 |
except ClientError as ce: |
342 | 342 |
if ce.status == 400 and profile and ( |
343 | 343 |
'firewall' in ('%s' % ce).lower() |
... | ... | |
352 | 352 |
return _raise |
353 | 353 |
|
354 | 354 |
@classmethod |
355 |
def nic_id(this, foo):
|
|
355 |
def nic_id(this, func):
|
|
356 | 356 |
def _raise(self, *args, **kwargs): |
357 | 357 |
try: |
358 |
return foo(self, *args, **kwargs)
|
|
358 |
return func(self, *args, **kwargs)
|
|
359 | 359 |
except ClientError as ce: |
360 | 360 |
nic_id = kwargs.get('nic_id', None) |
361 | 361 |
if nic_id and ce.status == 404 and ( |
... | ... | |
375 | 375 |
return _raise |
376 | 376 |
|
377 | 377 |
@classmethod |
378 |
def nic_format(this, foo):
|
|
378 |
def nic_format(this, func):
|
|
379 | 379 |
def _raise(self, *args, **kwargs): |
380 | 380 |
try: |
381 |
return foo(self, *args, **kwargs)
|
|
381 |
return func(self, *args, **kwargs)
|
|
382 | 382 |
except IndexError as ie: |
383 | 383 |
nic_id = kwargs.get('nic_id', None) |
384 | 384 |
msg = 'Invalid format for network interface (nic) %s' % nic_id |
... | ... | |
389 | 389 |
return _raise |
390 | 390 |
|
391 | 391 |
@classmethod |
392 |
def metadata(this, foo):
|
|
392 |
def metadata(this, func):
|
|
393 | 393 |
def _raise(self, *args, **kwargs): |
394 | 394 |
key = kwargs.get('key', None) |
395 | 395 |
try: |
396 |
foo(self, *args, **kwargs)
|
|
396 |
func(self, *args, **kwargs)
|
|
397 | 397 |
except ClientError as ce: |
398 | 398 |
if key and ce.status == 404 and ( |
399 | 399 |
'metadata' in ('%s' % ce).lower() |
... | ... | |
412 | 412 |
'* details of image: /image meta <image id>'] |
413 | 413 |
|
414 | 414 |
@classmethod |
415 |
def connection(this, foo):
|
|
416 |
return generic._connection(foo)
|
|
415 |
def connection(this, func):
|
|
416 |
return generic._connection(func)
|
|
417 | 417 |
|
418 | 418 |
@classmethod |
419 |
def id(this, foo):
|
|
419 |
def id(this, func):
|
|
420 | 420 |
def _raise(self, *args, **kwargs): |
421 | 421 |
image_id = kwargs.get('image_id', None) |
422 | 422 |
try: |
423 |
foo(self, *args, **kwargs)
|
|
423 |
func(self, *args, **kwargs)
|
|
424 | 424 |
except ClientError as ce: |
425 | 425 |
if image_id and ( |
426 | 426 |
ce.status == 404 |
... | ... | |
435 | 435 |
return _raise |
436 | 436 |
|
437 | 437 |
@classmethod |
438 |
def metadata(this, foo):
|
|
438 |
def metadata(this, func):
|
|
439 | 439 |
def _raise(self, *args, **kwargs): |
440 | 440 |
key = kwargs.get('key', None) |
441 | 441 |
try: |
442 |
return foo(self, *args, **kwargs)
|
|
442 |
return func(self, *args, **kwargs)
|
|
443 | 443 |
except ClientError as ce: |
444 | 444 |
ce_msg = ('%s' % ce).lower() |
445 | 445 |
if ce.status == 404 or ( |
... | ... | |
460 | 460 |
'For a list of containers: /file list'] |
461 | 461 |
|
462 | 462 |
@classmethod |
463 |
def connection(this, foo):
|
|
464 |
return generic._connection(foo)
|
|
463 |
def connection(this, func):
|
|
464 |
return generic._connection(func)
|
|
465 | 465 |
|
466 | 466 |
@classmethod |
467 |
def account(this, foo):
|
|
467 |
def account(this, func):
|
|
468 | 468 |
def _raise(self, *args, **kwargs): |
469 | 469 |
try: |
470 |
return foo(self, *args, **kwargs)
|
|
470 |
return func(self, *args, **kwargs)
|
|
471 | 471 |
except ClientError as ce: |
472 | 472 |
if ce.status == 403: |
473 | 473 |
raiseCLIError( |
... | ... | |
478 | 478 |
return _raise |
479 | 479 |
|
480 | 480 |
@classmethod |
481 |
def quota(this, foo):
|
|
481 |
def quota(this, func):
|
|
482 | 482 |
def _raise(self, *args, **kwargs): |
483 | 483 |
try: |
484 |
return foo(self, *args, **kwargs)
|
|
484 |
return func(self, *args, **kwargs)
|
|
485 | 485 |
except ClientError as ce: |
486 | 486 |
if ce.status == 413: |
487 | 487 |
raiseCLIError(ce, 'User quota exceeded', details=[ |
... | ... | |
495 | 495 |
return _raise |
496 | 496 |
|
497 | 497 |
@classmethod |
498 |
def container(this, foo):
|
|
498 |
def container(this, func):
|
|
499 | 499 |
def _raise(self, *args, **kwargs): |
500 | 500 |
dst_cont = kwargs.get('dst_cont', None) |
501 | 501 |
try: |
502 |
return foo(self, *args, **kwargs)
|
|
502 |
return func(self, *args, **kwargs)
|
|
503 | 503 |
except ClientError as ce: |
504 | 504 |
if ce.status == 404 and 'container' in ('%s' % ce).lower(): |
505 | 505 |
cont = ('%s or %s' % ( |
... | ... | |
511 | 511 |
return _raise |
512 | 512 |
|
513 | 513 |
@classmethod |
514 |
def local_path_download(this, foo):
|
|
514 |
def local_path_download(this, func):
|
|
515 | 515 |
def _raise(self, *args, **kwargs): |
516 | 516 |
try: |
517 |
return foo(self, *args, **kwargs)
|
|
517 |
return func(self, *args, **kwargs)
|
|
518 | 518 |
except IOError as ioe: |
519 | 519 |
msg = 'Failed to access a file', |
520 | 520 |
raiseCLIError(ioe, msg, importance=2, details=[ |
... | ... | |
527 | 527 |
return _raise |
528 | 528 |
|
529 | 529 |
@classmethod |
530 |
def local_path(this, foo):
|
|
530 |
def local_path(this, func):
|
|
531 | 531 |
def _raise(self, *args, **kwargs): |
532 | 532 |
local_path = kwargs.get('local_path', None) |
533 | 533 |
try: |
534 |
return foo(self, *args, **kwargs)
|
|
534 |
return func(self, *args, **kwargs)
|
|
535 | 535 |
except IOError as ioe: |
536 | 536 |
msg = 'Failed to access file %s' % local_path, |
537 | 537 |
raiseCLIError(ioe, msg, importance=2) |
538 | 538 |
return _raise |
539 | 539 |
|
540 | 540 |
@classmethod |
541 |
def object_path(this, foo):
|
|
541 |
def object_path(this, func):
|
|
542 | 542 |
def _raise(self, *args, **kwargs): |
543 | 543 |
try: |
544 |
return foo(self, *args, **kwargs)
|
|
544 |
return func(self, *args, **kwargs)
|
|
545 | 545 |
except ClientError as ce: |
546 | 546 |
err_msg = ('%s' % ce).lower() |
547 | 547 |
if ( |
... | ... | |
555 | 555 |
return _raise |
556 | 556 |
|
557 | 557 |
@classmethod |
558 |
def object_size(this, foo):
|
|
558 |
def object_size(this, func):
|
|
559 | 559 |
def _raise(self, *args, **kwargs): |
560 | 560 |
size = kwargs.get('size', None) |
561 | 561 |
start = kwargs.get('start', 0) |
... | ... | |
587 | 587 |
importance=1) |
588 | 588 |
size = end - start |
589 | 589 |
try: |
590 |
return foo(self, *args, **kwargs)
|
|
590 |
return func(self, *args, **kwargs)
|
|
591 | 591 |
except ClientError as ce: |
592 | 592 |
err_msg = ('%s' % ce).lower() |
593 | 593 |
expected = 'object length is smaller than range length' |
Also available in: Unified diff