79 lines
2.6 KiB
Python
79 lines
2.6 KiB
Python
from sys import argv, exit
|
|
|
|
|
|
from tiramisu_cmdline_parser import TiramisuCmdlineParser
|
|
from tiramisu_api import Config
|
|
from cucchiaiata.i18n import _
|
|
|
|
|
|
from .common import send_data, Common
|
|
|
|
|
|
class ConfigAPI(Config):
|
|
def send_data(self,
|
|
data):
|
|
for index, payload in enumerate(data['updates']):
|
|
payload['session_id'] = self.session_id
|
|
if isinstance(payload['value'], list):
|
|
payload['value_multi'] = payload['value']
|
|
del payload['value']
|
|
send_data(self.message,
|
|
payload)
|
|
|
|
self.updates = []
|
|
|
|
|
|
class Configuration(Common):
|
|
def configure_server(self):
|
|
if self.message == 'session.server.configure':
|
|
type = 'server'
|
|
else:
|
|
type = 'servermodel'
|
|
url = '{}/config/{}/{}'.format(self.cucchiaiata_config.remote_url,
|
|
type,
|
|
self.session_id)
|
|
tconfig = self.remote_json_to_config(url,
|
|
ConfigAPI)
|
|
tconfig.message = self.message
|
|
tconfig.session_id = self.session_id
|
|
return tconfig
|
|
|
|
def get_parameters(self):
|
|
parameters = argv.copy()
|
|
|
|
# get and remove session.xxxxx.configure
|
|
self.message = parameters.pop(1)
|
|
|
|
# get and remove commandline name
|
|
self.prog = parameters.pop(0)
|
|
|
|
# get and remove sessionid
|
|
try:
|
|
index = parameters.index('-s')
|
|
except ValueError:
|
|
try:
|
|
index = parameters.index('--sessionid')
|
|
except ValueError:
|
|
# FIXME not working ...
|
|
tiramisu_config = self.remote_json_to_config(ConfigAPI)
|
|
parser = TiramisuCmdlineParser(tiramisu_config,
|
|
self.prog,
|
|
unrestraint=True,
|
|
fullpath=True)
|
|
parser.print_help()
|
|
exit(1)
|
|
parameters.pop(index)
|
|
self.session_id = parameters.pop(index)
|
|
return parameters
|
|
|
|
def get(self):
|
|
parameters = self.get_parameters()
|
|
tiramisu_config = self.configure_server()
|
|
parser = TiramisuCmdlineParser(tiramisu_config,
|
|
self.prog,
|
|
unrestraint=True,
|
|
fullpath=True)
|
|
parser.parse_args(parameters,
|
|
valid_mandatory=False)
|
|
tiramisu_config.send()
|