forked from Infra/risotto
87 lines
3.2 KiB
Python
87 lines
3.2 KiB
Python
from ...controller import Controller
|
|
from ...register import register
|
|
|
|
sql_init = """
|
|
-- Création de la table ServerModel
|
|
CREATE TABLE ServerModel (
|
|
ServerModelId SERIAL PRIMARY KEY,
|
|
ServerModelName VARCHAR(255) NOT NULL,
|
|
ServerModelDescription VARCHAR(255) NOT NULL,
|
|
ServerModelSourceId INTEGER NOT NULL,
|
|
ServerModelParentId INTEGER,
|
|
ServerModelSubReleaseId INTEGER NOT NULL,
|
|
ServerModelSubReleaseName VARCHAR(255) NOT NULL,
|
|
UNIQUE (ServerModelName, ServerModelSubReleaseId)
|
|
);
|
|
"""
|
|
|
|
|
|
class Risotto(Controller):
|
|
@register('v1.servermodel.init', None, database=True)
|
|
async def servermodel_init(self, risotto_context):
|
|
result = await risotto_context.connection.execute(sql_init)
|
|
return {'retcode': 0, 'return': result}
|
|
|
|
|
|
@register('v1.servermodel.list', None, database=True)
|
|
async def servermodel_list(self, risotto_context, sourceid):
|
|
sql = '''
|
|
SELECT * FROM ServerModel
|
|
'''
|
|
servermodels = await risotto_context.connection.fetch(sql)
|
|
return [dict(r) for r in servermodels]
|
|
|
|
@register('v1.servermodel.describe', None)
|
|
async def servermodel_describe(self, inheritance, creolefuncs, servermodelid, schema, conffiles, resolvdepends, probes):
|
|
schema = """<?xml version='1.0' encoding='UTF-8'?>
|
|
<creole>
|
|
<family name="containers">
|
|
<family name="container0" doc="test">
|
|
<family doc="files" name="files">
|
|
<family doc="file0" name="file0">
|
|
<variable doc="" multi="False" name="mkdir" type="boolean">
|
|
<value>False</value>
|
|
</variable>
|
|
<variable doc="" multi="False" name="name" type="string">
|
|
<value>/etc/mailname</value>
|
|
</variable>
|
|
<variable doc="" multi="False" name="rm" type="boolean">
|
|
<value>False</value>
|
|
</variable>
|
|
<variable doc="" multi="False" name="source" type="string">
|
|
<value>mailname</value>
|
|
</variable>
|
|
<variable doc="" multi="False" name="activate" type="boolean">
|
|
<value>True</value>
|
|
</variable>
|
|
</family>
|
|
</family>
|
|
<property>basic</property>
|
|
</family>
|
|
</family>
|
|
<family doc="" name="creole">
|
|
<family doc="general" name="general">
|
|
<property>normal</property>
|
|
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">
|
|
<choice type="string">oui</choice>
|
|
<choice type="string">non</choice>
|
|
<property>mandatory</property>
|
|
<property>normal</property>
|
|
<value type="string">non</value>
|
|
</variable>
|
|
<leader doc="master" name="master">
|
|
<property>normal</property>
|
|
<variable doc="master" multi="True" name="master" type="string"/>
|
|
<variable doc="slave1" multi="True" name="slave1" type="string">
|
|
<property>normal</property>
|
|
</variable>
|
|
<variable doc="slave2" multi="True" name="slave2" type="string">
|
|
<property>normal</property>
|
|
</variable>
|
|
</leader>
|
|
</family>
|
|
<separators/>
|
|
</family>
|
|
</creole>"""
|
|
return {'servermodelid': 1, 'servermodelname': 'name', 'servermodeldescription': 'description', 'subreleasename': 'name', 'sourceid': 1, 'schema': schema, 'creolefuncs': ''}
|