forked from Infra/risotto
update tests
This commit is contained in:
@ -5,6 +5,10 @@ from .context import Context
|
||||
class Controller:
|
||||
"""Common controller used to add a service in Risotto
|
||||
"""
|
||||
def __init__(self,
|
||||
test: bool):
|
||||
pass
|
||||
|
||||
async def call(self,
|
||||
uri: str,
|
||||
risotto_context: Context,
|
||||
|
@ -218,11 +218,11 @@ class RegisterDispatcher:
|
||||
dico['notification'] = notification
|
||||
self.messages[version][message]['functions'].append(dico)
|
||||
|
||||
def set_module(self, module_name, module):
|
||||
def set_module(self, module_name, module, test):
|
||||
""" register and instanciate a new module
|
||||
"""
|
||||
try:
|
||||
self.injected_self[module_name] = module.Risotto()
|
||||
self.injected_self[module_name] = module.Risotto(test)
|
||||
except AttributeError as err:
|
||||
raise RegistrationError(_(f'unable to register the module {module_name}, this module must have Risotto class'))
|
||||
|
||||
|
@ -5,7 +5,8 @@ from ..dispatcher import dispatcher
|
||||
|
||||
|
||||
def load_services(modules=None,
|
||||
validate: bool=True):
|
||||
validate: bool=True,
|
||||
test: bool=False):
|
||||
abs_here = dirname(abspath(__file__))
|
||||
here = basename(abs_here)
|
||||
module = basename(dirname(abs_here))
|
||||
@ -14,6 +15,6 @@ def load_services(modules=None,
|
||||
for filename in modules:
|
||||
absfilename = join(abs_here, filename)
|
||||
if isdir(absfilename) and isfile(join(absfilename, '__init__.py')):
|
||||
dispatcher.set_module(filename, import_module(f'.{here}.{filename}', module))
|
||||
dispatcher.set_module(filename, import_module(f'.{here}.{filename}', module), test)
|
||||
if validate:
|
||||
dispatcher.validate()
|
||||
|
@ -19,15 +19,18 @@ from ...logger import log
|
||||
|
||||
class Risotto(Controller):
|
||||
|
||||
def __init__(self) -> None:
|
||||
def __init__(self,
|
||||
test) -> None:
|
||||
global conf_storage
|
||||
self.cache_root_path = join(get_config().get('cache').get('root_path'), 'servermodel')
|
||||
for dirname in [self.cache_root_path, DATABASE_DIR]:
|
||||
if not isdir(dirname):
|
||||
raise RegistrationError(_(f'unable to find the cache dir "{dirname}"'))
|
||||
self.save_storage = Storage(engine='sqlite3', dir_database=DATABASE_DIR)
|
||||
if not test:
|
||||
self.save_storage = Storage(engine='sqlite3', dir_database=DATABASE_DIR)
|
||||
self.servermodel = {}
|
||||
self.server = {}
|
||||
super().__init__()
|
||||
super().__init__(test)
|
||||
|
||||
async def on_join(self,
|
||||
risotto_context: Context) -> None:
|
||||
@ -80,28 +83,7 @@ class Risotto(Controller):
|
||||
None,
|
||||
f'Load servermodel {servermodel_name} ({servermodel_id})')
|
||||
|
||||
# use file in cache if found, otherwise retrieve it in servermodel context
|
||||
# if isfile(cache_file):
|
||||
# fileio = open(cache_file)
|
||||
# else:
|
||||
# servermodel = await self.call('v1.servermodel.describe',
|
||||
# risotto_context,
|
||||
# servermodel_id=servermodel_id,
|
||||
# inheritance=False,
|
||||
# resolvdepends=False,
|
||||
# schema=True,
|
||||
# creolefuncs=True)
|
||||
# fileio = BytesIO()
|
||||
# fileio.write(servermodel['schema'].encode())
|
||||
# fileio.seek(0)
|
||||
#
|
||||
# with open(cache_file, 'w') as cache:
|
||||
# cache.write(servermodel['schema'])
|
||||
# with open(funcs_file, 'w') as cache:
|
||||
# cache.write(servermodel['creolefuncs'])
|
||||
# del servermodel
|
||||
#
|
||||
# # loads tiramisu config and store it
|
||||
# use file in cache
|
||||
with open(cache_file) as fileio:
|
||||
xmlroot = parse(fileio).getroot()
|
||||
self.servermodel[servermodel_id] = await self.build_metaconfig(servermodel_id,
|
||||
@ -289,7 +271,7 @@ class Risotto(Controller):
|
||||
for server_type in ['server', 'server_to_deploy']:
|
||||
config = self.server[server_id]['server']
|
||||
for parent in await config.config.parents():
|
||||
await parent.config.pop(config.config.name())
|
||||
await parent.config.pop(await config.config.name())
|
||||
delete_session(storage=self.save_storage,
|
||||
session_id=await config.config.name())
|
||||
# delete metaconfig
|
||||
@ -341,46 +323,46 @@ class Risotto(Controller):
|
||||
delete_session(storage=self.save_storage,
|
||||
session_id=await metaconfig.config.name())
|
||||
return children
|
||||
|
||||
@register('v1.servermodel.updated')
|
||||
async def servermodel_updated(self,
|
||||
risotto_context: Context,
|
||||
servermodel_id: int,
|
||||
servermodel_name: str,
|
||||
servermodel_parents_id: List[int]) -> None:
|
||||
log.info_msg(risotto_context,
|
||||
None,
|
||||
f'Reload servermodel {servermodel_name} ({servermodel_id})')
|
||||
# unlink cache to force download new aggregated file
|
||||
cache_file = join(self.cache_root_path, str(servermodel_id)+".xml")
|
||||
if isfile(cache_file):
|
||||
unlink(cache_file)
|
||||
|
||||
# store all informations
|
||||
if servermodel_id in self.servermodel:
|
||||
old_values = await self.servermodel[servermodel_id].value.exportation()
|
||||
old_permissives = await self.servermodel[servermodel_id].permissive.exportation()
|
||||
old_properties = await self.servermodel[servermodel_id].property.exportation()
|
||||
children = await self.servermodel_delete(servermodel_id)
|
||||
else:
|
||||
old_values = None
|
||||
|
||||
# create new one
|
||||
await self.load_and_link_servermodel(risotto_context,
|
||||
servermodel_id,
|
||||
servermodel_name,
|
||||
servermodel_parents_id)
|
||||
|
||||
# migrates informations
|
||||
if old_values is not None:
|
||||
await self.servermodel[servermodel_id].value.importation(old_values)
|
||||
await self.servermodel[servermodel_id].permissive.importation(old_permissives)
|
||||
await self.servermodel[servermodel_id].property.importation(old_properties)
|
||||
for child in children:
|
||||
await self.servermodel_legacy(risotto_context,
|
||||
await child.information.get('servermodel_name'),
|
||||
await child.information.get('servermodel_id'),
|
||||
servermodel_id)
|
||||
#
|
||||
# @register('v1.servermodel.updated')
|
||||
# async def servermodel_updated(self,
|
||||
# risotto_context: Context,
|
||||
# servermodel_id: int,
|
||||
# servermodel_name: str,
|
||||
# servermodel_parents_id: List[int]) -> None:
|
||||
# log.info_msg(risotto_context,
|
||||
# None,
|
||||
# f'Reload servermodel {servermodel_name} ({servermodel_id})')
|
||||
# # unlink cache to force download new aggregated file
|
||||
# cache_file = join(self.cache_root_path, str(servermodel_id)+".xml")
|
||||
# if isfile(cache_file):
|
||||
# unlink(cache_file)
|
||||
#
|
||||
# # store all informations
|
||||
# if servermodel_id in self.servermodel:
|
||||
# old_values = await self.servermodel[servermodel_id].value.exportation()
|
||||
# old_permissives = await self.servermodel[servermodel_id].permissive.exportation()
|
||||
# old_properties = await self.servermodel[servermodel_id].property.exportation()
|
||||
# children = await self.servermodel_delete(servermodel_id)
|
||||
# else:
|
||||
# old_values = None
|
||||
#
|
||||
# # create new one
|
||||
# await self.load_and_link_servermodel(risotto_context,
|
||||
# servermodel_id,
|
||||
# servermodel_name,
|
||||
# servermodel_parents_id)
|
||||
#
|
||||
# # migrates informations
|
||||
# if old_values is not None:
|
||||
# await self.servermodel[servermodel_id].value.importation(old_values)
|
||||
# await self.servermodel[servermodel_id].permissive.importation(old_permissives)
|
||||
# await self.servermodel[servermodel_id].property.importation(old_properties)
|
||||
# for child in children:
|
||||
# await self.servermodel_legacy(risotto_context,
|
||||
# await child.information.get('servermodel_name'),
|
||||
# await child.information.get('servermodel_id'),
|
||||
# servermodel_id)
|
||||
|
||||
@register('v1.config.configuration.server.get', None)
|
||||
async def get_configuration(self,
|
||||
|
@ -41,9 +41,9 @@ class Risotto(Controller):
|
||||
'server_servermodel_id': server_servermodel_id}
|
||||
|
||||
@register('v1.server.describe', None, database=True)
|
||||
async def server_create(self,
|
||||
risotto_context: Context,
|
||||
server_name: str) -> Dict:
|
||||
async def server_describe(self,
|
||||
risotto_context: Context,
|
||||
server_name: str) -> Dict:
|
||||
sql = '''
|
||||
SELECT ServerId as server_id, ServerName as server_name, ServerDescription as server_description, ServerServermodelId as server_servermodel_id
|
||||
FROM Server
|
||||
|
@ -16,7 +16,8 @@ from ...dispatcher import dispatcher
|
||||
|
||||
|
||||
class Risotto(Controller):
|
||||
def __init__(self):
|
||||
def __init__(self,
|
||||
test):
|
||||
self.modify_storage = Storage(engine='dictionary')
|
||||
|
||||
def get_storage(self,
|
||||
@ -221,7 +222,7 @@ class Risotto(Controller):
|
||||
type)
|
||||
info = self.format_session(session_id, session)
|
||||
if name is not None:
|
||||
content = {name: await session['option'].option(name).value.get()}
|
||||
content = {name: await session['config'].option(name).value.get()}
|
||||
else:
|
||||
content = await session['option'].value.dict(fullpath=True,
|
||||
leader_to_list=True)
|
||||
|
@ -44,8 +44,8 @@ class Storage(object):
|
||||
break
|
||||
await config.property.read_write()
|
||||
# set the default owner
|
||||
self.set_owner(config,
|
||||
username)
|
||||
await self.set_owner(config,
|
||||
username)
|
||||
|
||||
# store it
|
||||
self.sessions[session_id] = {'config': config,
|
||||
@ -113,10 +113,10 @@ class StorageServer(Storage):
|
||||
server_id: int):
|
||||
return f'std_{server_id}'
|
||||
|
||||
def set_owner(self,
|
||||
config: Config,
|
||||
username: str):
|
||||
config.owner.set(username)
|
||||
async def set_owner(self,
|
||||
config: Config,
|
||||
username: str):
|
||||
await config.owner.set(username)
|
||||
|
||||
|
||||
class StorageServermodel(Storage):
|
||||
@ -124,10 +124,10 @@ class StorageServermodel(Storage):
|
||||
server_id: int):
|
||||
return f'v_{server_id}'
|
||||
|
||||
def set_owner(self,
|
||||
config: Config,
|
||||
username: str):
|
||||
config.owner.set('servermodel_' + username)
|
||||
async def set_owner(self,
|
||||
config: Config,
|
||||
username: str):
|
||||
await config.owner.set('servermodel_' + username)
|
||||
|
||||
|
||||
storage_server = StorageServer()
|
||||
|
Reference in New Issue
Block a user