40 |
40 |
from kamaki.cli.command_tree import CommandTree
|
41 |
41 |
from kamaki.cli.utils import print_dict, format_size
|
42 |
42 |
from kamaki.cli.argument import FlagArgument, ValueArgument
|
|
43 |
from kamaki.cli.argument import CommaSeparatedListArgument
|
43 |
44 |
from kamaki.cli.logger import get_logger
|
44 |
45 |
|
45 |
46 |
snfastakos_cmds = CommandTree('astakos', 'astakosclient CLI')
|
... | ... | |
78 |
79 |
self._custom_type('astakos') or 'identity',
|
79 |
80 |
self._custom_version('astakos') or '')
|
80 |
81 |
base_url = astakos_endpoints['SNF:uiURL']
|
81 |
|
base_url = ''.join(base_url.split('/ui'))
|
|
82 |
base_url = base_url[:-3]
|
|
83 |
#base_url = ''.join(base_url.split('/ui'))
|
82 |
84 |
else:
|
83 |
85 |
base_url = self._custom_url('astakos')
|
84 |
86 |
if not base_url:
|
... | ... | |
262 |
264 |
super(self.__class__, self)._run()
|
263 |
265 |
self._run(service_token)
|
264 |
266 |
|
265 |
|
# resources
|
266 |
|
# feedback
|
267 |
|
# endpoints
|
268 |
|
|
269 |
|
# XXX issue_commission, issue_one_commission
|
270 |
|
# get_pending_commissions
|
271 |
|
# get_commission_info
|
272 |
|
# commission_action
|
273 |
|
# accept_commission
|
274 |
|
# reject_commission
|
275 |
|
# resolve_commissions
|
276 |
|
|
277 |
267 |
|
278 |
268 |
@command(snfastakos_cmds)
|
279 |
269 |
class astakos_resources(_astakos_init, _optional_json):
|
... | ... | |
293 |
283 |
class astakos_feedback(_astakos_init):
|
294 |
284 |
"""Send feedback to astakos server"""
|
295 |
285 |
|
296 |
|
arguments = dict(
|
297 |
|
token=ValueArgument('Use this token instead', '--token')
|
298 |
|
)
|
299 |
|
|
300 |
286 |
@errors.generic.all
|
301 |
287 |
@astakoserror
|
302 |
288 |
def _run(self, msg, more_info=None):
|
303 |
|
self.client.send_feedback(
|
304 |
|
self['token'] or self.token, msg, more_info or '')
|
|
289 |
self.client.send_feedback(self.token, msg, more_info or '')
|
305 |
290 |
|
306 |
291 |
def main(self, message, more_info=None):
|
307 |
292 |
super(self.__class__, self)._run()
|
... | ... | |
312 |
297 |
class astakos_endpoints(_astakos_init, _optional_json):
|
313 |
298 |
"""Get endpoints service endpoints"""
|
314 |
299 |
|
|
300 |
arguments = dict(uuid=ValueArgument('User uuid', '--uuid'))
|
|
301 |
|
|
302 |
@errors.generic.all
|
|
303 |
@astakoserror
|
|
304 |
def _run(self):
|
|
305 |
self._print(
|
|
306 |
self.client.get_endpoints(self.token, self['uuid']),
|
|
307 |
print_dict)
|
|
308 |
|
|
309 |
def main(self):
|
|
310 |
super(self.__class__, self)._run()
|
|
311 |
self._run()
|
|
312 |
|
|
313 |
|
|
314 |
@command(snfastakos_cmds)
|
|
315 |
class astakos_commission(_astakos_init):
|
|
316 |
"""Manage commissions (special privileges required)"""
|
|
317 |
|
|
318 |
|
|
319 |
@command(snfastakos_cmds)
|
|
320 |
class astakos_commission_pending(_astakos_init, _optional_json):
|
|
321 |
"""List pending commissions (special privileges required)"""
|
|
322 |
|
|
323 |
@errors.generic.all
|
|
324 |
@astakoserror
|
|
325 |
def _run(self):
|
|
326 |
self._print(self.client.get_pending_commissions(self.token))
|
|
327 |
|
|
328 |
def main(self):
|
|
329 |
super(self.__class__, self)._run()
|
|
330 |
self._run()
|
|
331 |
|
|
332 |
|
|
333 |
@command(snfastakos_cmds)
|
|
334 |
class astakos_commission_info(_astakos_init, _optional_json):
|
|
335 |
"""Get commission info (special privileges required)"""
|
|
336 |
|
|
337 |
@errors.generic.all
|
|
338 |
@astakoserror
|
|
339 |
def _run(self, commission_id):
|
|
340 |
commission_id = int(commission_id)
|
|
341 |
self._print(
|
|
342 |
self.client.get_commission_info(self.token, commission_id),
|
|
343 |
print_dict)
|
|
344 |
|
|
345 |
def main(self, commission_id):
|
|
346 |
super(self.__class__, self)._run()
|
|
347 |
self._run(commission_id)
|
|
348 |
|
|
349 |
|
|
350 |
@command(snfastakos_cmds)
|
|
351 |
class astakos_commission_action(_astakos_init, _optional_json):
|
|
352 |
"""Invoke an action in a commission (special privileges required)
|
|
353 |
Actions can be accept or reject
|
|
354 |
"""
|
|
355 |
|
|
356 |
actions = ('accept', 'reject')
|
|
357 |
|
|
358 |
@errors.generic.all
|
|
359 |
@astakoserror
|
|
360 |
def _run(self, commission_id, action):
|
|
361 |
commission_id = int(commission_id)
|
|
362 |
action = action.lower()
|
|
363 |
assert action in self.actions, 'Actions can be %s' % (
|
|
364 |
' or '.join(self.actions))
|
|
365 |
self._print(
|
|
366 |
self.client.commission_acction(self.token, commission_id, action),
|
|
367 |
print_dict)
|
|
368 |
|
|
369 |
def main(self, commission_id, action):
|
|
370 |
super(self.__class__, self)._run()
|
|
371 |
self._run(commission_id, action)
|
|
372 |
|
|
373 |
|
|
374 |
@command(snfastakos_cmds)
|
|
375 |
class astakos_commission_accept(_astakos_init):
|
|
376 |
"""Accept a pending commission (special privileges required)"""
|
|
377 |
|
|
378 |
@errors.generic.all
|
|
379 |
@astakoserror
|
|
380 |
def _run(self, commission_id):
|
|
381 |
commission_id = int(commission_id)
|
|
382 |
self.client.accept_commission(self.token, commission_id)
|
|
383 |
|
|
384 |
def main(self, commission_id):
|
|
385 |
super(self.__class__, self)._run()
|
|
386 |
self._run(commission_id)
|
|
387 |
|
|
388 |
|
|
389 |
@command(snfastakos_cmds)
|
|
390 |
class astakos_commission_reject(_astakos_init):
|
|
391 |
"""Reject a pending commission (special privileges required)"""
|
|
392 |
|
|
393 |
@errors.generic.all
|
|
394 |
@astakoserror
|
|
395 |
def _run(self, commission_id):
|
|
396 |
commission_id = int(commission_id)
|
|
397 |
self.client.reject_commission(self.token, commission_id)
|
|
398 |
|
|
399 |
def main(self, commission_id):
|
|
400 |
super(self.__class__, self)._run()
|
|
401 |
self._run(commission_id)
|
|
402 |
|
|
403 |
|
|
404 |
@command(snfastakos_cmds)
|
|
405 |
class astakos_commission_resolve(_astakos_init, _optional_json):
|
|
406 |
"""Resolve multiple commissions (special privileges required)"""
|
|
407 |
|
315 |
408 |
arguments = dict(
|
316 |
|
token=ValueArgument('Use this token instead', '--token'),
|
317 |
|
uuid=ValueArgument('User uuid', '--uuid')
|
|
409 |
accept=CommaSeparatedListArgument(
|
|
410 |
'commission ids to accept (e.g. --accept=11,12,13,...',
|
|
411 |
'--accept'),
|
|
412 |
reject=CommaSeparatedListArgument(
|
|
413 |
'commission ids to reject (e.g. --reject=11,12,13,...',
|
|
414 |
'--reject'),
|
318 |
415 |
)
|
319 |
416 |
|
320 |
417 |
@errors.generic.all
|
321 |
418 |
@astakoserror
|
322 |
419 |
def _run(self):
|
|
420 |
print 'accepted ', self['accept']
|
|
421 |
print 'rejected ', self['reject']
|
323 |
422 |
self._print(
|
324 |
|
self.client.get_endpoints(
|
325 |
|
self['token'] or self.token, self['uuid']),
|
|
423 |
self.client.resolve_commissions(
|
|
424 |
self.token, self['accept'], self['reject']),
|
326 |
425 |
print_dict)
|
327 |
426 |
|
328 |
427 |
def main(self):
|
329 |
428 |
super(self.__class__, self)._run()
|
330 |
429 |
self._run()
|
331 |
430 |
|
|
431 |
# commission pending
|
|
432 |
# commission info
|
|
433 |
# commission action
|
|
434 |
# commission accept
|
|
435 |
# commission reject
|
|
436 |
# commission resolve
|
|
437 |
|
|
438 |
# XXX issue_commission, issue_one_commission
|
|
439 |
|
332 |
440 |
|
333 |
441 |
@command(snfastakos_cmds)
|
334 |
442 |
class astakos_test(_astakos_init):
|
... | ... | |
337 |
445 |
@errors.generic.all
|
338 |
446 |
@astakoserror
|
339 |
447 |
def _run(self, *args):
|
340 |
|
pass
|
|
448 |
r = self.client.get_pending_commissions(self.token)
|
|
449 |
print r
|
341 |
450 |
|
342 |
451 |
def main(self, *args):
|
343 |
452 |
super(self.__class__, self)._run()
|