Skip to content

Commit 6308534

Browse files
committed
extend tools documentation; add metadata diagramm by @7048730
1 parent b494c09 commit 6308534

File tree

5 files changed

+194
-7
lines changed

5 files changed

+194
-7
lines changed

docs/03_system-scope-and-context.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ Communication partner | Exchanged data | Technology/protocol
1818

1919
### 3.2 Technical context
2020

21-
All components use `HTTP` over cable networks connections for communication of all exchanged data (metadata documents, ERC, Linux containers, etc.).
21+
All components use `HTTP(S)` over cable networks connections for communication (metadata documents, ERC, Linux containers, etc.).

docs/04_solution-strategy.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ _The client application manages the control flow_ of all user interactions.
4141

4242
### Tools
4343

44-
If standalone tools are developed, they should provide a command-line interface (CLI).
45-
The CLI allows integration into microservices when needed and to package tools including their dependencies as containers.
46-
Thanks to the container architecture and the controlled, we don't need to worry about documentation for or distribution/packaging of these tools.
47-
It must only be ensured they are correctly installed using the microservice's Dockerfile.
48-
The only required documentation is for the installation into a container and usage of the CLI.
44+
If standalone tools are developed, they provide a command-line interface (CLI).
45+
The CLI allows integration into microservices when needed and to package tools including their dependencies as containers and distributing them using a container registry.
46+
These _2nd level containers_ are started by the microservices and can run either next to the microservices or in an independent container cluster, providing scalability.
47+
It must only be ensured they are correctly configured in each microservice.
48+
The only required documentation is the installation into a container and usage of the CLI.

docs/05_building-block-view.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ The microservices all access one main database and a shared file storage.
148148
##### 5.2.7.4 Blackbox Tools
149149

150150
Some functionality is developed as standalone tools and used as such in the microservices instead of re-implementing features.
151-
These tools are integrated via their command line interface (CLI).
151+
These tools are integrated via their command line interface (CLI) and executed as _2nd level containers_ by microservices.
152152

153153
##### 5.2.7.5 Blackbox Databases
154154

@@ -239,6 +239,23 @@ The search index is accessed by clients through the search endpoint provided by
239239
[meta](https://github.com/o2r-project/o2r-meta) | Python | scripts for extraction, translation and validation of metadata; for details see [metadata documentation](/metadata)
240240
[containerit](https://github.com/o2r-project/containerit) | R | generation of Dockerfiles based on R sessions and scripts
241241

242+
Each tool's code repository includes one or more `Dockerfiles`, which are automatically build and published on Docker Hub.
243+
The microservices use the tool's Docker images to execute the tools instead of installing all their dependencies into the microservices.
244+
The advantages are a controlled environment for the tool usage, independent development cycles and updating of the tools, smaller independent images for the microservices, and scalability.
245+
246+
#### Meta
247+
248+
Meta provides a CLI for each step of the metadata processing required in the reproducibility service as shown by the following diagram.
249+
After each step the created metadata is saved as a file per model to a directory in the compendium.
250+
A detailed view of the meta tool usage in the creation process is provided in the runtime view [ERC Creation](#61-erc-creation).
251+
252+
[![whitebox meta tool](img/5.2-whitebox-meta-tool.png)](img/5.2-whitebox-meta-tool.png)
253+
254+
#### Containerit
255+
256+
The containerit tool extracts required dependencies from ERC main documents and uses the information and external configuration to create a Dockerfile, which executes the full computational workflow when the container is started.
257+
Its main strategy is to analyse the session at the end of executing the full workflow.
258+
242259
#### 5.3.4 Whitebox ephemeral file storage
243260

244261
A host directory is mounted into every container to the location `/tmp/o2r`.
8.94 KB
Loading
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2+
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
3+
<!--Created by yEd 3.17-->
4+
<key attr.name="Beschreibung" attr.type="string" for="graph" id="d0"/>
5+
<key for="port" id="d1" yfiles.type="portgraphics"/>
6+
<key for="port" id="d2" yfiles.type="portgeometry"/>
7+
<key for="port" id="d3" yfiles.type="portuserdata"/>
8+
<key attr.name="url" attr.type="string" for="node" id="d4"/>
9+
<key attr.name="description" attr.type="string" for="node" id="d5"/>
10+
<key for="node" id="d6" yfiles.type="nodegraphics"/>
11+
<key for="graphml" id="d7" yfiles.type="resources"/>
12+
<key attr.name="url" attr.type="string" for="edge" id="d8"/>
13+
<key attr.name="description" attr.type="string" for="edge" id="d9"/>
14+
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
15+
<graph edgedefault="directed" id="G">
16+
<data key="d0"/>
17+
<node id="n0">
18+
<data key="d6">
19+
<y:ShapeNode>
20+
<y:Geometry height="113.0" width="113.0" x="350.0" y="405.0"/>
21+
<y:Fill hasColor="false" transparent="false"/>
22+
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
23+
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.9375" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="68.2421875" x="22.37890625" y="40.53125">User
24+
workspace<y:LabelModel>
25+
<y:SmartNodeLabelModel distance="4.0"/>
26+
</y:LabelModel>
27+
<y:ModelParameter>
28+
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
29+
</y:ModelParameter>
30+
</y:NodeLabel>
31+
<y:Shape type="roundrectangle"/>
32+
</y:ShapeNode>
33+
</data>
34+
</node>
35+
<node id="n1">
36+
<data key="d6">
37+
<y:ShapeNode>
38+
<y:Geometry height="113.0" width="113.0" x="601.5" y="405.0"/>
39+
<y:Fill hasColor="false" transparent="false"/>
40+
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
41+
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="90.14453125" x="11.427734375" y="47.515625">Raw Metadata<y:LabelModel>
42+
<y:SmartNodeLabelModel distance="4.0"/>
43+
</y:LabelModel>
44+
<y:ModelParameter>
45+
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
46+
</y:ModelParameter>
47+
</y:NodeLabel>
48+
<y:Shape type="roundrectangle"/>
49+
</y:ShapeNode>
50+
</data>
51+
</node>
52+
<node id="n2">
53+
<data key="d6">
54+
<y:ShapeNode>
55+
<y:Geometry height="113.0" width="113.0" x="853.0" y="405.0"/>
56+
<y:Fill hasColor="false" transparent="false"/>
57+
<y:BorderStyle color="#004286" raised="false" type="line" width="1.0"/>
58+
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="95.125" x="8.9375" y="47.515625">o2r Metadata<y:LabelModel>
59+
<y:SmartNodeLabelModel distance="4.0"/>
60+
</y:LabelModel>
61+
<y:ModelParameter>
62+
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
63+
</y:ModelParameter>
64+
</y:NodeLabel>
65+
<y:Shape type="roundrectangle"/>
66+
</y:ShapeNode>
67+
</data>
68+
</node>
69+
<node id="n3">
70+
<data key="d6">
71+
<y:ShapeNode>
72+
<y:Geometry height="113.0" width="113.0" x="1104.5" y="405.0"/>
73+
<y:Fill hasColor="false" transparent="false"/>
74+
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
75+
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="45.90625" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="68.7578125" x="22.12109375" y="33.546875">3rd party
76+
repository
77+
Metadata<y:LabelModel>
78+
<y:SmartNodeLabelModel distance="4.0"/>
79+
</y:LabelModel>
80+
<y:ModelParameter>
81+
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
82+
</y:ModelParameter>
83+
</y:NodeLabel>
84+
<y:Shape type="roundrectangle"/>
85+
</y:ShapeNode>
86+
</data>
87+
</node>
88+
<edge id="e0" source="n0" target="n1">
89+
<data key="d10">
90+
<y:PolyLineEdge>
91+
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
92+
<y:LineStyle color="#000000" type="line" width="1.0"/>
93+
<y:Arrows source="none" target="standard"/>
94+
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="73.380859375" x="32.53961181640625" y="21.015625">extraction<y:LabelModel>
95+
<y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/>
96+
</y:LabelModel>
97+
<y:ModelParameter>
98+
<y:SmartEdgeLabelModelParameter angle="0.0" distance="30.0" distanceToCenter="true" position="right" ratio="0.5" segment="0"/>
99+
</y:ModelParameter>
100+
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
101+
</y:EdgeLabel>
102+
<y:BendStyle smoothed="false"/>
103+
</y:PolyLineEdge>
104+
</data>
105+
</edge>
106+
<edge id="e1" source="n1" target="n2">
107+
<data key="d10">
108+
<y:PolyLineEdge>
109+
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
110+
<y:LineStyle color="#000000" type="line" width="1.0"/>
111+
<y:Arrows source="none" target="standard"/>
112+
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="31.9375" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="103.69140625" x="17.38433837890625" y="14.03125">brokering with
113+
o2r mapping<y:LabelModel>
114+
<y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/>
115+
</y:LabelModel>
116+
<y:ModelParameter>
117+
<y:SmartEdgeLabelModelParameter angle="0.0" distance="30.0" distanceToCenter="true" position="right" ratio="0.5" segment="0"/>
118+
</y:ModelParameter>
119+
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
120+
</y:EdgeLabel>
121+
<y:BendStyle smoothed="false"/>
122+
</y:PolyLineEdge>
123+
</data>
124+
</edge>
125+
<edge id="e2" source="n2" target="n3">
126+
<data key="d10">
127+
<y:PolyLineEdge>
128+
<y:Path sx="-30.0" sy="0.0" tx="0.0" ty="0.0"/>
129+
<y:LineStyle color="#000000" type="line" width="1.0"/>
130+
<y:Arrows source="none" target="standard"/>
131+
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="45.90625" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="103.69140625" x="17.41314697265625" y="7.046875">brokering with
132+
repository
133+
mapping<y:LabelModel>
134+
<y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/>
135+
</y:LabelModel>
136+
<y:ModelParameter>
137+
<y:SmartEdgeLabelModelParameter angle="0.0" distance="30.0" distanceToCenter="true" position="right" ratio="0.5" segment="0"/>
138+
</y:ModelParameter>
139+
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
140+
</y:EdgeLabel>
141+
<y:BendStyle smoothed="false"/>
142+
</y:PolyLineEdge>
143+
</data>
144+
</edge>
145+
<edge id="e3" source="n2" target="n2">
146+
<data key="d10">
147+
<y:PolyLineEdge>
148+
<y:Path sx="37.75" sy="0.0" tx="-29.5" ty="-41.5">
149+
<y:Point x="947.25" y="358.5"/>
150+
<y:Point x="880.0" y="358.5"/>
151+
</y:Path>
152+
<y:LineStyle color="#000000" type="line" width="1.0"/>
153+
<y:Arrows source="none" target="standard"/>
154+
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="66.23828125" x="-66.744140625" y="-85.480224609375">User Input<y:LabelModel>
155+
<y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/>
156+
</y:LabelModel>
157+
<y:ModelParameter>
158+
<y:SmartEdgeLabelModelParameter angle="0.0" distance="30.0" distanceToCenter="true" position="right" ratio="0.5" segment="1"/>
159+
</y:ModelParameter>
160+
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
161+
</y:EdgeLabel>
162+
<y:BendStyle smoothed="false"/>
163+
</y:PolyLineEdge>
164+
</data>
165+
</edge>
166+
</graph>
167+
<data key="d7">
168+
<y:Resources/>
169+
</data>
170+
</graphml>

0 commit comments

Comments
 (0)