Architecture¶
![digraph structs {
node [shape=plaintext]
# overlap=false;
# splines=true;
# layout="neato";
Cli [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD PORT="Cli"><font face="Helvetica" point-size="12">CLI<br/></font>
</TD></TR>
</TABLE>>];
PythonApi [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD PORT="PythonApi"><font face="Helvetica" point-size="12">Python API<br/></font>
</TD></TR>
</TABLE>>];
CratonCore [label=<
<TABLE BORDER="0" CELLBORDER="0" CELLSPACING="4">
<TR>
<TD>
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="8">
<TR>
<TD PORT="Horizon"><font face="Helvetica" point-size="12">
<font face="Helvetica" point-size="12">Horizon UI<br/><font point-size="8">
Inventory,<br/>Workflow Panels</font></font>
</font></TD>
</TR>
<TR><TD PORT="Keystone"><font face="Helvetica" point-size="12">Keystone<br/><font point-size="8">
Principals, roles,<br/>privileges,<br/>catalog endpoints</font></font>
</TD></TR>
<TR><TD PORT="Barbican"><font face="Helvetica" point-size="12">Barbican<br/><font point-size="8">
Key Storage for<br/>TaskFlow Workers</font></font>
</TD></TR>
</TABLE>
</TD>
<TD>
<TABLE BORDER="1" CELLBORDER="1" CELLSPACING="4">
<!--font face="Helvetica"-->
<TR>
<TD rowspan="5" PORT="Rbac"><font face="Helvetica" point-size="12">RBAC</font></TD>
<TD colspan="4" PORT="RestApi"><font face="Helvetica" point-size="12">REST API Service (Flask)</font></TD>
</TR>
<TR>
<TD colspan="3" PORT="PythonObjectModel"><font face="Helvetica" point-size="12">Python Object Model</font></TD>
<TD colspan="1" PORT="OsloCache"><font face="Helvetica" point-size="12">oslo.cache</font></TD>
</TR>
<TR>
<TD colspan="2" PORT="InventoryFabric"><font face="Helvetica" point-size="12">Inventory Fabric</font></TD>
<TD colspan="2" PORT="Workflows"><font face="Helvetica" point-size="12">Workflows</font></TD>
</TR>
<TR>
<TD colspan="1" PORT="VirtualizedVariables"><font face="Helvetica" point-size="12">Virtualized <br/>Variables</font></TD>
<TD colspan="2" PORT="DefaultInventoryModel"><font face="Helvetica" point-size="12">Default<br/>Inventory<br/>Model</font></TD>
<TD colspan="1" PORT="TaskFlowController"><font face="Helvetica" point-size="12">TaskFlow<br/>Controller</font></TD>
</TR>
<TR>
<TD colspan="1" PORT="VariablePlugin"><font face="Helvetica" point-size="12">Variable<br/>Plugin<br/>(Stevedore)</font></TD>
<TD colspan="2" PORT="SqlAlchemy"><font face="Helvetica" point-size="12">SQL<br/>Alchemy</font></TD>
<TD colspan="1" PORT="WorkflowPlugin"><font face="Helvetica" point-size="12">Workflow<br/>Plugin<br/>(Stevedore)</font></TD>
</TR>
<!--/font-->
</TABLE>
</TD>
<TD>
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="8">
<TR><TD COLSPAN="2" PORT="Redis"><font face="Helvetica" point-size="12">REDIS<br/></font>
</TD></TR>
<TR><TD COLSPAN="2" PORT="MySqlGalera"><font face="Helvetica" point-size="12">MySQL/Galera<br/></font>
</TD></TR>
<TR>
<TD PORT="TfJobBoard"><font face="Helvetica" point-size="12">TF<br/>JobBoard<br/></font>
</TD>
<TD PORT="WaLogCapture" bgcolor="#D6DBDF"><font face="Helvetica" point-size="12">WA Log<br/>Capture<br/></font>
</TD>
</TR>
<TR>
<TD ><font face="Helvetica" point-size="12">TF<br/>Worker<br/>Pool<br/></font>
</TD>
<TD bgcolor="#D7BDE2"><font face="Helvetica" point-size="12" >ZooKeeper<br/></font>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
>];
NovaPlugin [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD PORT="NovaPlugin"><font face="Helvetica" point-size="12">Nova Plugin<br/><font point-size="8">
(Inventory)</font></font>
</TD></TR>
</TABLE>>];
HistoryPlugin [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD PORT="HistoryPlugin" bgcolor="#D6DBDF"><font face="Helvetica" point-size="12">History Plugin<br/><font point-size="8">
(Inventory)</font></font>
</TD></TR>
</TABLE>>];
AnsiblePlugin [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD PORT="AnsiblePlugin"><font face="Helvetica" point-size="12">Ansible Plugin<br/><font point-size="8">
(Workflow)</font></font>
</TD></TR>
</TABLE>>];
HistoricalData [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD PORT="HistoricalData" bgcolor="#D6DBDF"><font face="Helvetica" point-size="12">Historica lData</font>
</TD></TR>
</TABLE>>];
Legend [label=<
<TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0">
<TR><TD><font face="Helvetica" point-size="12">Legend</font>
</TD></TR>
<TR><TD border="1" bgcolor="#D7BDE2"><font face="Helvetica" point-size="10">Used For Scaling</font>
</TD></TR>
<TR><TD border="1" bgcolor="#D6DBDF"><font face="Helvetica" point-size="10">Future Work</font>
</TD></TR>
</TABLE>>];
//UndercloudIntegrations [pos="1,1"];
#subgraph cluster1 {
# style=invis;
# Barbican;
# Horizon;
# Keystone;
# }
ranksep=.25;
#size = "8,8";
#{ rank = same; Horizon; CratonCore:PythonObjectModel; }
#{ rank = same; UndercloudIntegrations; CratonCore; }
#Horizon -> Keystone [style=invis]
NovaPlugin -> Legend [style=invis];
CratonCore:Barbican -> Legend [style=invis];
CratonCore:WaLogCapture -> HistoricalData:HistoricalData;
HistoryPlugin:HistoryPlugin -> HistoricalData:HistoricalData;
CratonCore:Horizon -> PythonApi:PythonApi [constraint=false];
CratonCore:RBAC -> CratonCore:Keystone;
PythonApi:PythonApi -> CratonCore:RestApi;
Cli:Cli -> PythonApi:PythonApi;
CratonCore:VariablePlugin -> NovaPlugin:NovaPlugin;
CratonCore:VariablePlugin -> HistoryPlugin:HistoryPlugin;
CratonCore:WorkflowPlugin -> AnsiblePlugin:AnsiblePlugin;
CratonCore:OsloCache -> CratonCore:Redis [constraint=false];
CratonCore:SqlAlchemy -> CratonCore:MySqlGalera;
}](_images/graphviz-fe5b6187232302abae23b0fd9923e43f4bb67c05.png)
CLI¶
TODO: Add Documentation
Python API¶
TODO: Add Documentation
RBAC¶
TODO: Add Documentation
REST API Service (Flask)¶
TODO: Add Documentation
Python Object Model¶
TODO: Add Documentation
oslo.cache¶
TODO: Add Documentation
Inventory Fabric¶
TODO: Add Documentation
Workflows¶
TODO: Add Documentation
Virtualized Variables¶
TODO: Add Documentation
Default Inventory Mode¶
TODO: Add Documentation
TaskFlow Controller¶
TODO: Add Documentation
Variable Plugin (Stevedore)¶
TODO: Add Documentation
SQL Alchemy¶
TODO: Add Documentation
Workflow Plugin (Stevedore)¶
TODO: Add Documentation
Nova Plugin¶
TODO: Add Documentation
History Plugin¶
TODO: Add Documentation
Ansible Plugin¶
TODO: Add Documentation