Skip to content

Commit 7006fd2

Browse files
committed
feat: Add Handlebars helpers and utility classes for TOSCA export
- Implemented HandlebarsHelperRegistry to register helpers for TOSCA file generation. - Created ExportErrorHandler for centralized error handling during export operations. - Developed ImportCollector to manage import statements for TOSCA files. - Introduced NodeTemplateCollector for collecting and filtering node templates. - Added PropertyResolver to resolve TOSCA property values from model elements. - Built PropertyTreeBuilder to construct YAML property trees from model elements. - Created StereotypeHelper for checking stereotype applications in model elements. - Developed TemplateClassifier to classify templates and parameters. - Added TemplateConstants for defining template names and paths. - Implemented TemplateConverter for converting objects to specific TOSCA types. - Created YamlFormatter for formatting values into YAML scalar syntax.
1 parent b177f99 commit 7006fd2

33 files changed

Lines changed: 2328 additions & 872 deletions
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
tosca_definitions_version: tosca_simple_yaml_1_3
2+
3+
metadata:
4+
name: "TrafficApplication"
5+
targetNamespace: "example.eu.myrtus.servicetemplates"
6+
topology_template:
7+
system_params:
8+
num_pods: 2000
9+
num_steps: 500
10+
mu: 0.8
11+
comm_costs:
12+
edge:
13+
edge: 1.0
14+
fog: 5.0
15+
cloud: 15.0
16+
fog:
17+
edge: 5.0
18+
fog: 1.0
19+
cloud: 5.0
20+
cloud:
21+
edge: 15.0
22+
fog: 5.0
23+
cloud: 1.0
24+
step_costs:
25+
edge:
26+
edge: 1.0
27+
fog: 5.0
28+
cloud: 15.0
29+
fog:
30+
edge: 5.0
31+
fog: 1.0
32+
cloud: 5.0
33+
cloud:
34+
edge: 15.0
35+
fog: 5.0
36+
cloud: 1.0
37+
pod_templates:
38+
SensorTracker:
39+
dockerImage: "ci.hesi.energy:5000/myrtus/sensor_tracker"
40+
port: 5557
41+
required_cpu_cores: 4
42+
required_memory_gb: 8
43+
creation_probability: 0.4
44+
min_exec_steps: 60
45+
max_exec_steps: 120
46+
layer_restriction: "none"
47+
MultisensorMerger:
48+
dockerImage: "ci.hesi.energy:5000/myrtus/multi_sensor_merger"
49+
port: 5557
50+
required_cpu_cores: 4
51+
required_memory_gb: 8
52+
creation_probability: 0.4
53+
min_exec_steps: 60
54+
max_exec_steps: 120
55+
layer_restriction: "none"
56+
MapMatcher:
57+
dockerImage: "ci.hesi.energy:5000/myrtus/map-matcher"
58+
port: 5557
59+
required_cpu_cores: 2
60+
required_memory_gb: 4
61+
creation_probability: 0.3
62+
min_exec_steps: 30
63+
max_exec_steps: 90
64+
layer_restriction: "none"
65+
RedLightDetection:
66+
dockerImage: "ci.hesi.energy:5000/myrtus/sensor_tracker"
67+
port: 5557
68+
required_memory_gb: 4
69+
required_cpu_cores: 2
70+
creation_probability: 0.3
71+
min_exec_steps: 10
72+
max_exec_steps: 60
73+
layer_restriction: "edge"
74+
75+
architecture:
76+
nodes:
77+
- { name: "Edge_Node_1", layer: "edge", type: "EdgeCompute" }
78+
- { name: "Edge_Node_2", layer: "edge", type: "EdgeCompute" }
79+
- { name: "Edge_Node_3", layer: "edge", type: "EdgeCompute" }
80+
- { name: "Edge_Node_4", layer: "edge", type: "EdgeCompute" }
81+
- { name: "Edge_Node_5", layer: "edge", type: "EdgeCompute" }
82+
- { name: "Edge_Node_6", layer: "edge", type: "EdgeCompute" }
83+
- { name: "Edge_Node_7", layer: "edge", type: "EdgeCompute" }
84+
- { name: "Edge_Node_8", layer: "edge", type: "EdgeCompute" }
85+
- { name: "Edge_Node_9", layer: "edge", type: "EdgeCompute" }
86+
- { name: "Edge_Node_10", layer: "edge", type: "EdgeCompute" }
87+
- { name: "Edge_Node_11", layer: "edge", type: "EdgeCompute" }
88+
- { name: "Edge_Node_12", layer: "edge", type: "EdgeCompute" }
89+
- { name: "Edge_Node_13", layer: "edge", type: "EdgeCompute" }
90+
- { name: "Edge_Node_14", layer: "edge", type: "EdgeCompute" }
91+
- { name: "Edge_Node_15", layer: "edge", type: "EdgeCompute" }
92+
- { name: "Edge_Node_16", layer: "edge", type: "EdgeCompute" }
93+
- { name: "Edge_Node_17", layer: "edge", type: "EdgeCompute" }
94+
- { name: "Edge_Node_18", layer: "edge", type: "EdgeCompute" }
95+
- { name: "Edge_Node_19", layer: "edge", type: "EdgeCompute" }
96+
- { name: "Edge_Node_20", layer: "edge", type: "EdgeCompute" }
97+
- { name: "Edge_Node_21", layer: "edge", type: "EdgeCompute" }
98+
- { name: "Edge_Node_22", layer: "edge", type: "EdgeCompute" }
99+
- { name: "Edge_Node_23", layer: "edge", type: "EdgeCompute" }
100+
- { name: "Edge_Node_24", layer: "edge", type: "EdgeCompute" }
101+
- { name: "Edge_Node_25", layer: "edge", type: "EdgeCompute" }
102+
- { name: "Edge_Node_26", layer: "edge", type: "EdgeCompute" }
103+
- { name: "Edge_Node_27", layer: "edge", type: "EdgeCompute" }
104+
- { name: "Edge_Node_28", layer: "edge", type: "EdgeCompute" }
105+
- { name: "Edge_Node_29", layer: "edge", type: "EdgeCompute" }
106+
- { name: "Edge_Node_30", layer: "edge", type: "EdgeCompute" }
107+
- { name: "Edge_Node_31", layer: "edge", type: "EdgeCompute" }
108+
- { name: "Edge_Node_32", layer: "edge", type: "EdgeCompute" }
109+
- { name: "Edge_Node_33", layer: "edge", type: "EdgeCompute" }
110+
- { name: "Edge_Node_34", layer: "edge", type: "EdgeCompute" }
111+
- { name: "Edge_Node_35", layer: "edge", type: "EdgeCompute" }
112+
- { name: "Edge_Node_36", layer: "edge", type: "EdgeCompute" }
113+
- { name: "Edge_Node_37", layer: "edge", type: "EdgeCompute" }
114+
- { name: "Edge_Node_38", layer: "edge", type: "EdgeCompute" }
115+
- { name: "Edge_Node_39", layer: "edge", type: "EdgeCompute" }
116+
- { name: "Edge_Node_40", layer: "edge", type: "EdgeCompute" }
117+
- { name: "Edge_Node_41", layer: "edge", type: "EdgeCompute" }
118+
- { name: "Edge_Node_42", layer: "edge", type: "EdgeCompute" }
119+
- { name: "Edge_Node_43", layer: "edge", type: "EdgeCompute" }
120+
- { name: "Edge_Node_44", layer: "edge", type: "EdgeCompute" }
121+
- { name: "Edge_Node_45", layer: "edge", type: "EdgeCompute" }
122+
- { name: "Edge_Node_46", layer: "edge", type: "EdgeCompute" }
123+
- { name: "Edge_Node_47", layer: "edge", type: "EdgeCompute" }
124+
- { name: "Edge_Node_48", layer: "edge", type: "EdgeCompute" }
125+
- { name: "Edge_Node_49", layer: "edge", type: "EdgeCompute" }
126+
- { name: "Edge_Node_50", layer: "edge", type: "EdgeCompute" }
127+
- { name: "Fog_Node_1", layer: "fog", type: "FogCompute" }
128+
- { name: "Fog_Node_2", layer: "fog", type: "FogCompute" }
129+
- { name: "Fog_Node_3", layer: "fog", type: "FogCompute" }
130+
- { name: "Fog_Node_4", layer: "fog", type: "FogCompute" }
131+
- { name: "Fog_Node_5", layer: "fog", type: "FogCompute" }
132+
- { name: "Fog_Node_6", layer: "fog", type: "FogCompute" }
133+
- { name: "Fog_Node_7", layer: "fog", type: "FogCompute" }
134+
- { name: "Fog_Node_8", layer: "fog", type: "FogCompute" }
135+
- { name: "Fog_Node_9", layer: "fog", type: "FogCompute" }
136+
- { name: "Fog_Node_10", layer: "fog", type: "FogCompute" }
137+
- { name: "Cloud_Node_1", layer: "cloud", type: "CloudCompute" }
138+
edges: []
139+
140+
node_templates:
141+
EdgeCompute:
142+
type: myrtus.dpe.compute
143+
properties:
144+
cpu_cores: 4
145+
memory_gb: 8
146+
layer: "edge"
147+
num_instances: 50
148+
149+
FogCompute:
150+
type: myrtus.dpe.compute
151+
properties:
152+
cpu_cores: 16
153+
memory_gb: 32
154+
layer: "fog"
155+
num_instances: 10
156+
157+
CloudCompute:
158+
type: myrtus.dpe.compute
159+
properties:
160+
cpu_cores: 64
161+
memory_gb: 32
162+
layer: "cloud"
163+
num_instances: 1
164+
165+

0 commit comments

Comments
 (0)