cucchiaiata/src/cucchiaiata/configuration.py

76 lines
2.4 KiB
Python
Raw Normal View History

2019-12-02 10:30:29 +01:00
from sys import argv, exit
from tiramisu_cmdline_parser import TiramisuCmdlineParser
from tiramisu_api import Config
from .i18n import _
from .parser import Parser
2019-12-02 10:30:29 +01:00
from .common import send_data, Common
class ConfigAPI(Config):
def send_data(self,
data):
for index, payload in enumerate(data['updates']):
2019-12-02 10:30:29 +01:00
payload['session_id'] = self.session_id
if isinstance(payload['value'], list):
payload['value_multi'] = payload['value']
del payload['value']
2019-12-28 12:29:52 +01:00
send_data(self.message,
payload)
2019-12-02 10:30:29 +01:00
self.updates = []
class Configuration(Common):
def configure_server(self):
2021-04-02 09:16:53 +02:00
version = self.message.split('.', 1)[0]
2020-11-14 08:18:24 +01:00
url = '{}/{}/setting/{}'.format(self.cucchiaiata_config.remote_url,
2021-03-27 22:17:39 +01:00
version,
self.session_id,
)
2019-12-02 10:30:29 +01:00
tconfig = self.remote_json_to_config(url,
ConfigAPI,
)
2019-12-02 10:30:29 +01:00
tconfig.message = self.message
tconfig.session_id = self.session_id
return tconfig
def get_parameters(self):
parameters = argv.copy()
2019-12-03 08:33:34 +01:00
# get and remove session.xxxxx.configure
2019-12-02 10:30:29 +01:00
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('--session_id')
2019-12-02 10:30:29 +01:00
except ValueError:
parser = Parser()
2019-12-02 10:30:29 +01:00
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()
2021-03-27 22:17:39 +01:00
option = next(tiramisu_config.option.list('all'))
namespace = option.option.path().split('.', 1)[0]
2019-12-02 10:30:29 +01:00
parser = TiramisuCmdlineParser(tiramisu_config,
self.prog,
2021-03-27 22:17:39 +01:00
root=namespace,
2019-12-02 10:30:29 +01:00
unrestraint=True,
fullpath=True)
parser.parse_args(parameters,
valid_mandatory=False)
tiramisu_config.send()