cucchiaiata/src/cucchiaiata/configuration.py

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()