From 3e8ed1db87c0b68f92b5163441751529a79fda4c Mon Sep 17 00:00:00 2001 From: Fabio Verboso Date: Mon, 29 Apr 2019 15:56:54 +0200 Subject: [PATCH] Board Action. New board-action command. Change-Id: I2adb06ed15cd49c9b9e95e688b5c5442c802c63b --- iotronicclient/v1/board.py | 7 +++++++ iotronicclient/v1/board_shell.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/iotronicclient/v1/board.py b/iotronicclient/v1/board.py index 8bb5ca3..4d00e8b 100644 --- a/iotronicclient/v1/board.py +++ b/iotronicclient/v1/board.py @@ -103,3 +103,10 @@ class BoardManager(base.CreateManager): def update(self, board_id, patch, http_method='PATCH'): return self._update(resource_id=board_id, patch=patch, method=http_method) + + def board_action(self, board_ident, action, params={}): + path = "%(board)s/action" % {'board': board_ident} + body = {"action": action, + "parameters": params + } + return self._update(path, body, method='POST') diff --git a/iotronicclient/v1/board_shell.py b/iotronicclient/v1/board_shell.py index 63850bd..d1de04f 100644 --- a/iotronicclient/v1/board_shell.py +++ b/iotronicclient/v1/board_shell.py @@ -15,6 +15,7 @@ from iotronicclient.common import cliutils from iotronicclient.common.i18n import _ from iotronicclient.common import utils from iotronicclient.v1 import resource_fields as res_fields +import json def _print_board_show(board, fields=None, json=False): @@ -225,3 +226,32 @@ def do_board_update(cc, args): board = cc.board.update(args.board, patch) _print_board_show(board, json=args.json) + + +@cliutils.arg('board', + metavar='', + help="Name or UUID of the board.") +@cliutils.arg('action', + metavar='', + help="action of the plugin.") +@cliutils.arg( + '--params', + metavar='', + nargs='+', + action='append', + default=[], + help="Parameters of the action") +@cliutils.arg( + '--params-file', + metavar='', + help="Json file of parameters") +def do_board_action(cc, args): + """Execute an action on the board.""" + params = {} + if args.params_file: + with open(args.params_file, 'r') as fil: + params = json.load(fil) + elif args.params: + params = {k: v for k, v in (x.split('=') for x in args.params[0])} + result = cc.board.board_action(args.board, args.action, params) + print(_('%s') % result)