Add files from GitHub.

This commit is contained in:
WickedJack99
2025-12-07 01:00:15 +01:00
commit a0b6239334
53 changed files with 2843 additions and 0 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,42 @@
Table instances:
A. id - Python int - SQLite INTEGER - ID der Instanz
B. owner - Python str - SQLite TEXT - wer besitzt die Instanz?
C. calculated_demand - Python bytes (UTF-8 encoding) - SQLite BLOB - die vorberechnete Liste ueber
den Energiebedarf jeder Instanz
im json Format
Beispiel:
{
"energy_demands":[
{
"date": "01.01.2024",
"energy_demand_in_watts": 4
}
]
}
D. number_of_persons_in_household - Python int - SQLite INTEGER - Anzahl Personen in Haushalt
E. fulfilled_demand - Python bytes (UTF-8 encoding) - SQLite BLOB - der tatsaechlich gedeckte Energiebedarf
am jeweiligen Datum im json Format
Beispiel:
{
"scored_demand":[
{
"date": "01.01.2024",
"scored_energy_demand_in_watts": 3,
"busy_method_used":[
"hpc"
]
}
]
}
F. status - Python str - SQLite TEXT - Status der Instanz, "offline", "online", "error"
G. heater_busy_methods - Python bytes (UTF-8 encoding) - SQLite BLOB - Methoden, welche die Instanz ausfuehrt im json Format
Beispiel:
{
"busy_methods_active":[
"hpc"
]
}
Table application:
A. state - Python constants.State - SQLite TEXT - Zustand der Anwendung, Running oder Stopped

7
docs/demod/demod_use.md Normal file
View File

@@ -0,0 +1,7 @@
# Demod installieren
> pip install demod
> pip install openpyxl
> pip install odfpy

View File

@@ -0,0 +1,11 @@
### Load Balancer Funktionalitaet
Der Load Balancer wird gestartet. Er prueft ob in der SQLite-DB bereits Daten ueber Instanzen liegen.
Check out [Database columns](../../database/database_description.md)
Pro Eintrag (Zeile) werden A, B, C geholt und ein Instanz - Objekt mit den entsprechenden Daten erzeugt. Die Load - Balancer Klasse kommuniziert ueber die Klasse DBInterface mit der Datenbank. Die Klasse DBInterface implementiert die Funktionalitaeten, die notwendig sind, um mit der Datenbank zu kommunizieren.
[Python SQLite Bibliothek](https://docs.python.org/3/library/sqlite3.html#)
[JSON Validator](https://jsonlint.com/)

View File

@@ -0,0 +1,90 @@
<mxfile host="Electron" modified="2024-05-28T06:53:56.903Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.2.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="tYrShgPT8Ox6WKzFjUai" version="24.2.5" type="device">
<diagram name="Page-1" id="qy58Fjep3ziJMWIOLXcW">
<mxGraphModel dx="1114" dy="663" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="7EknwZf3zE2kvBgCffaO-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="7EknwZf3zE2kvBgCffaO-1" target="7EknwZf3zE2kvBgCffaO-2">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-1" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;LoadBalancer&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="525" y="40" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="7EknwZf3zE2kvBgCffaO-2" target="7EknwZf3zE2kvBgCffaO-3">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="7EknwZf3zE2kvBgCffaO-2" target="7EknwZf3zE2kvBgCffaO-10">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="7EknwZf3zE2kvBgCffaO-2" target="7EknwZf3zE2kvBgCffaO-11">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="7EknwZf3zE2kvBgCffaO-2">
<mxGeometry relative="1" as="geometry">
<mxPoint x="780" y="290" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-2" value="&lt;div style=&quot;font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&lt;font face=&quot;Helvetica&quot;&gt;HeaterInstanceWorkerThreadPoolOrchestrator&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontColor=default;" vertex="1" parent="1">
<mxGeometry x="525" y="160" width="320" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-3" value="&lt;div style=&quot;font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&lt;div style=&quot;line-height: 19px;&quot;&gt;&lt;font face=&quot;Helvetica&quot;&gt;HeaterInstancesOrchestrator&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontColor=default;" vertex="1" parent="1">
<mxGeometry x="690" y="40" width="320" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-7" value="Fetch Data about Instances" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" vertex="1" parent="1">
<mxGeometry x="860" y="110" width="110" height="50" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-9" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;Starts&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="525" y="110" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;dashed=1;" edge="1" parent="1" source="7EknwZf3zE2kvBgCffaO-10" target="7EknwZf3zE2kvBgCffaO-16">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;dashed=1;" edge="1" parent="1" source="7EknwZf3zE2kvBgCffaO-10" target="7EknwZf3zE2kvBgCffaO-17">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-10" value="&lt;div style=&quot;font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;font style=&quot;&quot; face=&quot;Helvetica&quot;&gt;HeaterInstanceWorkerThread A&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fontColor=default;" vertex="1" parent="1">
<mxGeometry x="520" y="290" width="210" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-11" value="&lt;div style=&quot;font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;font style=&quot;&quot; face=&quot;Helvetica&quot;&gt;HeaterInstanceWorkerThread n&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fontColor=default;" vertex="1" parent="1">
<mxGeometry x="830" y="290" width="210" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-12" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="740" y="320" as="sourcePoint" />
<mxPoint x="820" y="320" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="7EknwZf3zE2kvBgCffaO-16" target="7EknwZf3zE2kvBgCffaO-26">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-16" value="daily_task()" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=14;" vertex="1" parent="1">
<mxGeometry x="520" y="414" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-17" value="realtime_task()" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=14;" vertex="1" parent="1">
<mxGeometry x="670" y="414" width="130" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-22" value="&lt;div style=&quot;font-size: 14px; line-height: 19px; white-space-collapse: preserve;&quot;&gt;&lt;font face=&quot;Helvetica&quot;&gt;HeaterInstanceInterface&lt;/font&gt;&lt;/div&gt;" style="shape=message;html=1;html=1;outlineConnect=0;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="480" y="360" width="35" height="20" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-24" value="&lt;div style=&quot;font-size: 14px; line-height: 19px; white-space-collapse: preserve;&quot;&gt;&lt;font face=&quot;Helvetica&quot;&gt;HeaterInstanceInterface&lt;/font&gt;&lt;/div&gt;" style="shape=message;html=1;html=1;outlineConnect=0;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="975" y="140" width="35" height="20" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-25" value="&lt;div style=&quot;font-size: 14px; line-height: 19px; white-space-collapse: preserve;&quot;&gt;&lt;font face=&quot;Helvetica&quot;&gt;HeaterInstanceInterface&lt;/font&gt;&lt;/div&gt;" style="shape=message;html=1;html=1;outlineConnect=0;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="525" y="230" width="35" height="20" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="7EknwZf3zE2kvBgCffaO-26" target="7EknwZf3zE2kvBgCffaO-16">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-26" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;HeaterInstanceInterface.run()&lt;/font&gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;" vertex="1" parent="1">
<mxGeometry x="520" y="520" width="260" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-32" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;HeaterInstance&lt;/font&gt;&lt;span style=&quot;font-size: 14px; background-color: initial;&quot;&gt;.run()&lt;/span&gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;" vertex="1" parent="1">
<mxGeometry x="520" y="580" width="260" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-33" value="Threadcount" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="690" y="225" width="60" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -0,0 +1,201 @@
<mxfile host="Electron" modified="2024-05-07T09:33:55.233Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.2.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="PlsJbYsQtKTGQ-h2Sm5Q" version="24.2.5" type="device">
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
<mxGraphModel dx="1061" dy="1458" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<root>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="k0BLKvAXlocCeE4DJ_wN-23" value="&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;Package: load_balancer" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document;align=left;verticalAlign=top;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="10" y="-820" width="1120" height="790" as="geometry" />
</mxCell>
<mxCell id="k0BLKvAXlocCeE4DJ_wN-25" value="&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;Package: heater_interface" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document;align=left;verticalAlign=top;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="797" y="-720" width="263" height="670" as="geometry" />
</mxCell>
<mxCell id="k0BLKvAXlocCeE4DJ_wN-24" value="&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;Package: db_interface" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document;align=left;verticalAlign=top;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="20" y="-720" width="360" height="370" as="geometry" />
</mxCell>
<mxCell id="k0BLKvAXlocCeE4DJ_wN-22" value="&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;Package: heater" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document;align=left;verticalAlign=top;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="1180" y="-820" width="375" height="525" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--0" value="LoadBalancer" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="440" y="-690" width="290" height="170" as="geometry">
<mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--1" value="heater_instances : HeaterInstance []" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
<mxGeometry y="26" width="290" height="26" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--2" value="db_interface : DBInterface" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
<mxGeometry y="52" width="290" height="30" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--3" value="foo" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
<mxGeometry y="82" width="290" height="26" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--4" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
<mxGeometry y="108" width="290" height="8" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--5" value="add_instance(instance : HeaterInstance) : void" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
<mxGeometry y="116" width="290" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-29" value="remove_instance(instance : HeaterInstance) : void" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
<mxGeometry y="142" width="290" height="26" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--17" value="HeaterInstance" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="835" y="-440" width="160" height="216" as="geometry">
<mxRectangle x="550" y="140" width="160" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--18" value="host : str" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="zkfFHV4jXpPFQw0GAbJ--17" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--19" value="user : str" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="zkfFHV4jXpPFQw0GAbJ--17" vertex="1">
<mxGeometry y="52" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--20" value="ssh_key : ssh_key" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="zkfFHV4jXpPFQw0GAbJ--17" vertex="1">
<mxGeometry y="78" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--22" value="owner : Owner" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="zkfFHV4jXpPFQw0GAbJ--17" vertex="1">
<mxGeometry y="104" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--23" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="zkfFHV4jXpPFQw0GAbJ--17" vertex="1">
<mxGeometry y="130" width="160" height="8" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-31" value="foo" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="zkfFHV4jXpPFQw0GAbJ--17" vertex="1">
<mxGeometry y="138" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-0" value="Instance" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="830" y="-690" width="170" height="160" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-5" value="ssh_session : undefined" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="5vzdqylje9so0Pf0NUx3-0" vertex="1">
<mxGeometry y="26" width="170" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-7" value="demand : undefined" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="5vzdqylje9so0Pf0NUx3-0" vertex="1">
<mxGeometry y="56" width="170" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-8" value="outcome : undefined" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="5vzdqylje9so0Pf0NUx3-0" vertex="1">
<mxGeometry y="86" width="170" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-9" value="status : bool" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="5vzdqylje9so0Pf0NUx3-0" vertex="1">
<mxGeometry y="116" width="170" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-2" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-0" vertex="1">
<mxGeometry y="146" width="170" height="14" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-3" value="" style="endArrow=block;endSize=10;endFill=1;shadow=0;strokeWidth=1;rounded=0;curved=0;edgeStyle=elbowEdgeStyle;elbow=vertical;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--17" target="5vzdqylje9so0Pf0NUx3-0" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="917" y="-418" as="sourcePoint" />
<mxPoint x="807" y="-520" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endArrow=open;endFill=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--2" target="zkfFHV4jXpPFQw0GAbJ--18" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="760" y="-390" as="targetPoint" />
<Array as="points">
<mxPoint x="760" y="-625" />
<mxPoint x="760" y="-401" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-16" value="0..n" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="730" y="-650" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-17" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="760" y="-430" width="37" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-18" value="orchestrates" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="690" y="-510" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-19" value="Owner" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="835" y="-160" width="160" height="90" as="geometry">
<mxRectangle x="130" y="380" width="160" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-20" value="first_name : str" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-19" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-21" value="last_name : str" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="5vzdqylje9so0Pf0NUx3-19" vertex="1">
<mxGeometry y="52" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-22" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-19" vertex="1">
<mxGeometry y="78" width="160" height="8" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" target="5vzdqylje9so0Pf0NUx3-19" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="690" y="-310" as="targetPoint" />
<mxPoint x="915" y="-222" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-26" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="912" y="-190" width="36" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-27" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="910" y="-224" width="40" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-28" value="owned by" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="850" y="-210" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-32" value="DBSettings" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="30" y="-690" width="270" height="70" as="geometry">
<mxRectangle x="130" y="380" width="160" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-33" value="file_path : str" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-32" vertex="1">
<mxGeometry y="26" width="270" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-35" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-32" vertex="1">
<mxGeometry y="52" width="270" height="8" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;endArrow=open;endFill=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="5vzdqylje9so0Pf0NUx3-36" target="5vzdqylje9so0Pf0NUx3-32" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-36" value="DBInterface" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="30" y="-590" width="280" height="220" as="geometry">
<mxRectangle x="130" y="380" width="160" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-37" value="settings : DBSettings" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-36" vertex="1">
<mxGeometry y="26" width="280" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-38" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-36" vertex="1">
<mxGeometry y="52" width="280" height="8" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-46" value="add_instance(instance : HeaterInstance) : void" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-36" vertex="1">
<mxGeometry y="60" width="280" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-47" value="update_instance(instance : HeaterInstance) : void" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-36" vertex="1">
<mxGeometry y="86" width="280" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-51" value="remove_instance(instance : HeaterInstance) : void" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-36" vertex="1">
<mxGeometry y="112" width="280" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-40" value="1&lt;div&gt;1&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="150" y="-620" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;endArrow=open;endFill=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--2" target="5vzdqylje9so0Pf0NUx3-37" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="390" y="-623" />
<mxPoint x="390" y="-551" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-44" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="300" y="-580" width="40" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-45" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="400" y="-650" width="40" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-48" value="uses" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="380" y="-560" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-49" value="has" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="130" y="-620" width="40" height="30" as="geometry" />
</mxCell>
<mxCell id="k0BLKvAXlocCeE4DJ_wN-26" value="get_instances() : HeaterInstance []" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="30" y="-450" width="280" height="26" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -0,0 +1,37 @@
<mxfile host="Electron" modified="2024-06-09T23:20:32.162Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.2.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="i5KB9fsT4zV48CXnobgm" version="24.2.5" type="device">
<diagram name="Page-1" id="Ah_-kuApFwH53ASNQh7D">
<mxGraphModel dx="1114" dy="663" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="8_F79eOSLjp0VsFUqVzp-15" value="LoadBalancer" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="20" y="20" width="670" height="390" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-16" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font style=&quot;font-size: 12px;&quot; face=&quot;Helvetica&quot;&gt;HeaterInstanceWorkerThread&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="40" y="140" width="630" height="80" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-17" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font face=&quot;Helvetica&quot; style=&quot;font-size: 12px;&quot;&gt;HeaterInstanceInterfaceManager&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="40" y="50" width="500" height="80" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-18" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font face=&quot;Helvetica&quot; style=&quot;font-size: 12px;&quot;&gt;HeaterInstanceInterface&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="225" y="60" width="300" height="60" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-19" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font face=&quot;Helvetica&quot; style=&quot;font-size: 12px;&quot;&gt;Simulation&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="550" y="50" width="120" height="80" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-20" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font face=&quot;Helvetica&quot; style=&quot;font-size: 12px;&quot;&gt;GlobalOutcome&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="40" y="320" width="630" height="80" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-21" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font face=&quot;Helvetica&quot; style=&quot;font-size: 12px;&quot;&gt;TaskOutcome&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="40" y="230" width="630" height="80" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-22" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font style=&quot;font-size: 12px;&quot;&gt;HeaterInstance&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="365" y="70" width="150" height="40" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-23" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font style=&quot;font-size: 12px;&quot; face=&quot;Helvetica&quot;&gt;Host&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="455" y="80" width="50" height="20" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -0,0 +1,84 @@
<mxfile host="Electron" modified="2024-05-31T12:12:03.617Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.2.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="Hc0sJxNv_TmvKQj58595" version="24.2.5" type="device">
<diagram name="Page-1" id="qy58Fjep3ziJMWIOLXcW">
<mxGraphModel dx="1114" dy="663" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="7EknwZf3zE2kvBgCffaO-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="7EknwZf3zE2kvBgCffaO-1" target="7EknwZf3zE2kvBgCffaO-2" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-1" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;LoadBalancer&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="525" y="40" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="7EknwZf3zE2kvBgCffaO-2" target="7EknwZf3zE2kvBgCffaO-3" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="7EknwZf3zE2kvBgCffaO-2" target="7EknwZf3zE2kvBgCffaO-10" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="7EknwZf3zE2kvBgCffaO-2" target="7EknwZf3zE2kvBgCffaO-11" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="7EknwZf3zE2kvBgCffaO-2" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="780" y="290" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-2" value="&lt;div style=&quot;font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&lt;font face=&quot;Helvetica&quot;&gt;HeaterInstanceWorkerThreadPoolOrchestrator&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontColor=default;" parent="1" vertex="1">
<mxGeometry x="525" y="160" width="320" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-3" value="&lt;div style=&quot;font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&lt;div style=&quot;line-height: 19px;&quot;&gt;&lt;font face=&quot;Helvetica&quot;&gt;HeaterInstancesOrchestrator&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontColor=default;" parent="1" vertex="1">
<mxGeometry x="690" y="40" width="320" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-7" value="Fetch Data about Instances" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="860" y="110" width="110" height="50" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-9" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;Starts&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="525" y="110" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;dashed=1;" parent="1" source="7EknwZf3zE2kvBgCffaO-10" target="7EknwZf3zE2kvBgCffaO-16" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;dashed=1;" parent="1" source="7EknwZf3zE2kvBgCffaO-10" target="7EknwZf3zE2kvBgCffaO-17" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-10" value="&lt;div style=&quot;font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;font style=&quot;&quot; face=&quot;Helvetica&quot;&gt;HeaterInstanceWorkerThread A&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fontColor=default;" parent="1" vertex="1">
<mxGeometry x="520" y="290" width="210" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-11" value="&lt;div style=&quot;font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;font style=&quot;&quot; face=&quot;Helvetica&quot;&gt;HeaterInstanceWorkerThread n&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fontColor=default;" parent="1" vertex="1">
<mxGeometry x="830" y="290" width="210" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-12" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="740" y="320" as="sourcePoint" />
<mxPoint x="820" y="320" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" parent="1" source="7EknwZf3zE2kvBgCffaO-16" target="7EknwZf3zE2kvBgCffaO-26" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-16" value="daily_task()" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="520" y="414" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-17" value="realtime_task()" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="670" y="414" width="130" height="60" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-22" value="&lt;div style=&quot;font-size: 14px; line-height: 19px; white-space-collapse: preserve;&quot;&gt;&lt;font face=&quot;Helvetica&quot;&gt;HeaterInstanceInterface&lt;/font&gt;&lt;/div&gt;" style="shape=message;html=1;html=1;outlineConnect=0;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="480" y="360" width="35" height="20" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-24" value="&lt;div style=&quot;font-size: 14px; line-height: 19px; white-space-collapse: preserve;&quot;&gt;&lt;font face=&quot;Helvetica&quot;&gt;HeaterInstanceInterface&lt;/font&gt;&lt;/div&gt;" style="shape=message;html=1;html=1;outlineConnect=0;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="975" y="140" width="35" height="20" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-25" value="&lt;div style=&quot;font-size: 14px; line-height: 19px; white-space-collapse: preserve;&quot;&gt;&lt;font face=&quot;Helvetica&quot;&gt;HeaterInstanceInterface&lt;/font&gt;&lt;/div&gt;" style="shape=message;html=1;html=1;outlineConnect=0;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="525" y="230" width="35" height="20" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" parent="1" source="7EknwZf3zE2kvBgCffaO-26" target="7EknwZf3zE2kvBgCffaO-16" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="7EknwZf3zE2kvBgCffaO-26" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;HeaterInstance.run()&lt;/font&gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;" parent="1" vertex="1">
<mxGeometry x="510" y="520" width="180" height="60" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -0,0 +1,201 @@
<mxfile host="Electron" modified="2024-05-07T09:35:52.261Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.2.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="DmmaRJrs2XHzGILdNXqB" version="24.2.5" type="device">
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
<mxGraphModel dx="1061" dy="1458" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<root>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="k0BLKvAXlocCeE4DJ_wN-23" value="&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;Package: load_balancer" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document;align=left;verticalAlign=top;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="10" y="-820" width="1120" height="790" as="geometry" />
</mxCell>
<mxCell id="k0BLKvAXlocCeE4DJ_wN-25" value="&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;Package: heater_interface" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document;align=left;verticalAlign=top;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="797" y="-720" width="263" height="670" as="geometry" />
</mxCell>
<mxCell id="k0BLKvAXlocCeE4DJ_wN-24" value="&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;Package: db_interface" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document;align=left;verticalAlign=top;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="20" y="-720" width="360" height="370" as="geometry" />
</mxCell>
<mxCell id="k0BLKvAXlocCeE4DJ_wN-22" value="&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;Package: heater" style="whiteSpace=wrap;html=1;shape=mxgraph.basic.document;align=left;verticalAlign=top;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="1180" y="-820" width="375" height="525" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--0" value="LoadBalancer" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="440" y="-690" width="290" height="240" as="geometry">
<mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--1" value="heater_instances : HeaterInstance []" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
<mxGeometry y="26" width="290" height="26" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--2" value="db_interface : DBInterface" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
<mxGeometry y="52" width="290" height="30" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--3" value="foo" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
<mxGeometry y="82" width="290" height="26" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--4" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
<mxGeometry y="108" width="290" height="8" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--5" value="bar" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
<mxGeometry y="116" width="290" height="26" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--17" value="HeaterInstance" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="835" y="-440" width="160" height="216" as="geometry">
<mxRectangle x="550" y="140" width="160" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--18" value="host : str" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="zkfFHV4jXpPFQw0GAbJ--17" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--19" value="user : str" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="zkfFHV4jXpPFQw0GAbJ--17" vertex="1">
<mxGeometry y="52" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--20" value="ssh_key : ssh_key" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="zkfFHV4jXpPFQw0GAbJ--17" vertex="1">
<mxGeometry y="78" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--22" value="owner : Owner" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="zkfFHV4jXpPFQw0GAbJ--17" vertex="1">
<mxGeometry y="104" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--23" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="zkfFHV4jXpPFQw0GAbJ--17" vertex="1">
<mxGeometry y="130" width="160" height="8" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-31" value="foo" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="zkfFHV4jXpPFQw0GAbJ--17" vertex="1">
<mxGeometry y="138" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-0" value="Instance" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="830" y="-690" width="170" height="160" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-5" value="ssh_session : undefined" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="5vzdqylje9so0Pf0NUx3-0" vertex="1">
<mxGeometry y="26" width="170" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-7" value="demand : undefined" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="5vzdqylje9so0Pf0NUx3-0" vertex="1">
<mxGeometry y="56" width="170" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-8" value="outcome : undefined" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="5vzdqylje9so0Pf0NUx3-0" vertex="1">
<mxGeometry y="86" width="170" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-9" value="status : bool" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="5vzdqylje9so0Pf0NUx3-0" vertex="1">
<mxGeometry y="116" width="170" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-2" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-0" vertex="1">
<mxGeometry y="146" width="170" height="14" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-3" value="" style="endArrow=block;endSize=10;endFill=1;shadow=0;strokeWidth=1;rounded=0;curved=0;edgeStyle=elbowEdgeStyle;elbow=vertical;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--17" target="5vzdqylje9so0Pf0NUx3-0" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="917" y="-418" as="sourcePoint" />
<mxPoint x="807" y="-520" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endArrow=open;endFill=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--2" target="zkfFHV4jXpPFQw0GAbJ--18" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="760" y="-390" as="targetPoint" />
<Array as="points">
<mxPoint x="760" y="-625" />
<mxPoint x="760" y="-401" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-16" value="0..n" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="730" y="-650" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-17" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="760" y="-430" width="37" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-18" value="orchestrates" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="730" y="-400" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-19" value="Owner" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="835" y="-160" width="160" height="90" as="geometry">
<mxRectangle x="130" y="380" width="160" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-20" value="first_name : str" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-19" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-21" value="last_name : str" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="5vzdqylje9so0Pf0NUx3-19" vertex="1">
<mxGeometry y="52" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-22" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-19" vertex="1">
<mxGeometry y="78" width="160" height="8" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" target="5vzdqylje9so0Pf0NUx3-19" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="690" y="-310" as="targetPoint" />
<mxPoint x="915" y="-222" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-26" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="912" y="-190" width="36" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-27" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="910" y="-224" width="40" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-28" value="owned by" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="850" y="-210" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-32" value="DBSettings" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="30" y="-690" width="270" height="70" as="geometry">
<mxRectangle x="130" y="380" width="160" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-33" value="file_path : str" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-32" vertex="1">
<mxGeometry y="26" width="270" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-35" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-32" vertex="1">
<mxGeometry y="52" width="270" height="8" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;endArrow=open;endFill=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="5vzdqylje9so0Pf0NUx3-36" target="5vzdqylje9so0Pf0NUx3-32" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-36" value="DBInterface" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="30" y="-590" width="280" height="220" as="geometry">
<mxRectangle x="130" y="380" width="160" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-37" value="settings : DBSettings" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-36" vertex="1">
<mxGeometry y="26" width="280" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-38" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-36" vertex="1">
<mxGeometry y="52" width="280" height="8" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-46" value="add_instance(instance : HeaterInstance) : void" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-36" vertex="1">
<mxGeometry y="60" width="280" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-47" value="update_instance(instance : HeaterInstance) : void" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-36" vertex="1">
<mxGeometry y="86" width="280" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-51" value="remove_instance(instance : HeaterInstance) : void" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="5vzdqylje9so0Pf0NUx3-36" vertex="1">
<mxGeometry y="112" width="280" height="26" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-40" value="1&lt;div&gt;1&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="150" y="-620" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;endArrow=open;endFill=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--2" target="5vzdqylje9so0Pf0NUx3-37" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="390" y="-623" />
<mxPoint x="390" y="-551" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-44" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="300" y="-580" width="40" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-45" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="400" y="-650" width="40" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-48" value="uses" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="380" y="-560" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="5vzdqylje9so0Pf0NUx3-49" value="has" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="130" y="-620" width="40" height="30" as="geometry" />
</mxCell>
<mxCell id="k0BLKvAXlocCeE4DJ_wN-26" value="get_instances() : HeaterInstance []" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="30" y="-450" width="280" height="26" as="geometry" />
</mxCell>
<mxCell id="k0BLKvAXlocCeE4DJ_wN-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="5vzdqylje9so0Pf0NUx3-18" target="5vzdqylje9so0Pf0NUx3-18">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -0,0 +1,37 @@
<mxfile host="Electron" modified="2024-06-09T23:20:50.047Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.2.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="oc_10AI9Czrxgo6AxFQL" version="24.2.5" type="device">
<diagram name="Page-1" id="Ah_-kuApFwH53ASNQh7D">
<mxGraphModel dx="1086" dy="663" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="8_F79eOSLjp0VsFUqVzp-15" value="LoadBalancer" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="210" y="140" width="670" height="390" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-16" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font style=&quot;font-size: 12px;&quot; face=&quot;Helvetica&quot;&gt;HeaterInstanceWorkerThread&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="230" y="260" width="630" height="80" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-17" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font face=&quot;Helvetica&quot; style=&quot;font-size: 12px;&quot;&gt;HeaterInstanceInterfaceManager&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="230" y="170" width="500" height="80" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-18" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font face=&quot;Helvetica&quot; style=&quot;font-size: 12px;&quot;&gt;HeaterInstanceInterface&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="415" y="180" width="300" height="60" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-19" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font face=&quot;Helvetica&quot; style=&quot;font-size: 12px;&quot;&gt;Simulation&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="740" y="170" width="120" height="80" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-20" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font face=&quot;Helvetica&quot; style=&quot;font-size: 12px;&quot;&gt;GlobalOutcome&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="230" y="440" width="630" height="80" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-21" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font face=&quot;Helvetica&quot; style=&quot;font-size: 12px;&quot;&gt;TaskOutcome&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="230" y="350" width="630" height="80" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-22" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font style=&quot;font-size: 12px;&quot;&gt;HeaterInstance&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="555" y="190" width="150" height="40" as="geometry" />
</mxCell>
<mxCell id="8_F79eOSLjp0VsFUqVzp-23" value="&lt;div style=&quot;line-height: 19px; white-space: pre;&quot;&gt;&lt;font style=&quot;font-size: 12px;&quot; face=&quot;Helvetica&quot;&gt;Host&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="645" y="200" width="50" height="20" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -0,0 +1,17 @@
Load Balancer lowers Power Consumption in summer
modifizieren des Heaters erlaubt, die Instanz ist der Heater
0.72h
Skalierbarkeit: Aufgabe des Load Balancers
Seed in Zufallsgenerator um Gebaeude auszuwaehlen
min. 4 Personen
Starten und Stoppen von Tasks Kommandozeilenbefehle
Klasse mit hostname, passwort, die eine Instanz repraesentieren
Status abfragen
auf objekt start tasks aufrufen
Parser von Status um Informationen rauszulesen
In 14 Tagen
GUI: An welchen Tagen wurde wie viel gearbeitet, Dashboard, stats von Boinc Instanzen darstellen
Treffen 15 Uhr 23.04.24
Mockup der UI
5 Wochen
GUI

View File

@@ -0,0 +1,18 @@
Von Ziel aus anfangen zu planen
HPC Aufgabe, mit SSH aufschalten, Programm starten, C++
Idee: Falls kein Task verfuegbar, dann HPC Aufgabe, ansonsten Tasks
CPUh zu Waerme 1 CPUh == 4kW Waerme
CPU Zeit muss nicht genau gemessen werden, sondern nur Gesamtlaufzeit des Programms
Demod ein Mal aufrufen um Daten fuer Zeitraum zu generieren
Daten in sqlight DB schreiben
Project Outline (max 1 Din A4 Seite) auf Moodle hochladen, verwendete Progsprachen, Aufgaben pro Teammember
Aaron: Demod, Load Balancer, Definieren, was Load Balancer als Rueckgabewert haben will, ssh session von allen Heatern uebergeben an, Session in Objekt speichern und an Davids Programm uebergeben, Rueckgabe wann wurde es ausgefuehrt, wie lange lief es, Ergebnis soll im Load balancer landen, Verteilung der Aufgabe in Prozent auf die Instanzen an Davids Middleware schicken.
Python Funktion, Load Balancer soll selbstheilend sein, wenn Heater aussteigt
ssh -> Paramiko, pip install paramiko
Array mit Objekten, ein Objekt enthaelt ssh session und Prozentzahl, wie viel Bedarf, Feld fuer Ergebnis, in das Funktion von David Ergebnis schreibt, Statuswert ob Heater erreichbar war oder nicht
David: HPC Aufgabe, dominik.giel dgiel auf GitHub hinzufuegen.

View File

@@ -0,0 +1,7 @@
In Instanz anmelden
nano ./.ssh/authorized_keys
Schluessel einfuegen
Strg x zum Speichern
Fertig

View File

@@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz9n3pJLtqT4p6zYvirbGh+9jTIfPjslK59NUvomnNczwh7Xw80I9bmeykygJNIvsOvwbYkRbTn66712x9pnzlj98kVgUrr2/IgsPHvhTRYF+7m00uaYZWbp24x6AQ4HggeIASKeBx5AVmT+JYLUb/vN2uaF6NnLTYVSn3OgKW65HRkwL+6qIitG18uj1a4G3wfSxQ1neU9gWrg+pf9oLkS3BxZHWhXqgQYuhR6hn4IsqjCRuav+Bv6y4RjoRbqrhOAwaRqysDufwavPGV12Xt0t2YqnqXSc8x9lUfJIvMzYLkWgkYr5pqhSoi3ZJwRaVDLPtZT1ZlVoFEI5hIQ0Zuh4l8bUkmgd1m+O7EzO9A3s1aGfM+LDFmS0xpYrgW84E9w1KIGX/mjXaE/wK1VLg/jTjM1wJ5C9F3G5cyj+spD2GQKD5i671HnYA7lW7Vclw4k2uuyMym9lDguhFWTiOj2EodCex5SwVoSypM1Bc6cEhB3V4YWYRlGedgVRDMBIz4gSL8shKPg8Fw5+czYiIm+lb3d97o51t8RNpeGdsfDuSqKGKPNtl1isGZgUnmZNu+djqlM1ziYmrGqHpZidDwg66y9VFLiWLCxgpNuNjUgvnKoZATVGP18GNfAAMzG8pT4TL3uFPqZ2iaT7o9/jzQjfQIQMDAkfC3a4KKw9turQ== theresaherr@Theresas-MacBook-Pro-9.fritz.box

View File

@@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC6mVWkB/4QlXtq40UjgsYZoE6hEs/vv/aUyJ7bxPtJnHu/S7SnPovWS1UjI8sMhuwXQ+XK/SOwjxosuLfozdrDHisWWmBmKvjrWwmhJPl51K7GRAZNXK/DWyrXhJeuVoYnA2fxzXFUnpBkl3hxtJNTh0kz1beCxATbh4uprJotgh0rrsRCJwivgkgrcrKBUZI3Op6L+VeYdqcxbcpothh3w7FLEmloCn40JRxowQqMozr1Ph5uujCyNk2+imgxnxnzvYBJLyVLr24XV2jzl7FEnGa5knRd9zV0icG2N0Y2gTY1wgCrKqfnsV99WsscPZ+jGG2cntKeaaCrtxLLlwY4JCvHqfJlsi0i724f80Q5BRIiSiaAqa7Sk3VdL7E9A3bd3HeuAuw7YOMKE05DzJ+K+2FZrZT00R1+bYsgpIfHkHSND08cO13gkF4mgPvD+lG0b2ZBn1/9A90gAwP0YqK7ZuQ7YX+uu03ginnZAGkdF9BvNvnvouCb/8EKAsjMrAs= student@student

View File

@@ -0,0 +1,11 @@
1. Muss die GUI schoen aussehen? -> Duerfen wir Graphana verwenden?
> Graphana Beispiel: https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.lionbloggertech.com%2Fwp-content%2Fuploads%2F2020%2F08%2Fgrafana_visualize.jpg&f=1&nofb=1&ipt=600c75674993907aa247a68c66bcff6b88265e5d0e1b1d36351a67d43a1cc4b8&ipo=images
> Graphana Website: https://grafana.com/
Antwort: Ist erlaubt
2. Was tun wenn dauerhafte Ausnutzung der Instanz nicht moeglich ist, da nicht durchgehend Tasks verfuegbar sind?
Antwort: HPC Problem loesen

View File

@@ -0,0 +1,23 @@
Datenbank? Dateien?
sqlight, sehr einfache DB, Daten werden dort rein geschrieben
David: Graphana baut Dashboards aus Datenbank, sql abfragen bauen (naechstes Mal fragen ob graphana oder React? Schoenheit?)
UI holt sich Daten
Load Balancer kommuniziert mit den Heater Instanzen und Heat requirement system und schreibt die Daten in sqlight db.
An welchen Tagen wurde wie viel gearbeitet: Histogram
Hitzebedarf ueber Zeit: Zeitgraph x Zeit y Hitzebedarf
Auf naechsten Dienstag:
Theresa:
kleines GUI Mockup vorbereiten
David:
Load Balancer, demod einlesen, kann erst ab 03.05 wg. Bachelorarbeit
Instanz zum laufen bringen
Aaron:
Anderes Projekt mit einfachen Tasks researchen, Iterationsschritt immer gleich lang, Zuverlaessigkeit der Tasks gegeben? CPU soll was zu tun haben
Parsen des Outputs