blob: fb52c7b990dca6246ce240bd353b0f4d57b5daac (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
/*******************************************************************************
* Copyright (c) 2018 Politecnico di Torino and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Apache License, Version 2.0
* which accompanies this distribution, and is available at
* http://www.apache.org/licenses/LICENSE-2.0
*******************************************************************************/
package it.polito.verigraph.tosca.converter.grpc;
import java.util.Map;
import it.polito.verigraph.grpc.NodeTemplateGrpc;
import it.polito.verigraph.grpc.RelationshipTemplateGrpc;
import it.polito.verigraph.grpc.TopologyTemplateGrpc;
import it.polito.verigraph.grpc.ToscaConfigurationGrpc;
import it.polito.verigraph.grpc.ToscaTestGrpc;
import it.polito.verigraph.grpc.ToscaVerificationGrpc;
import it.polito.verigraph.model.Configuration;
import it.polito.verigraph.model.Graph;
import it.polito.verigraph.model.Neighbour;
import it.polito.verigraph.model.Node;
import it.polito.verigraph.model.Test;
import it.polito.verigraph.model.Verification;
public class GraphToGrpc {
/** Mapping method --> from model Graph to grpc TopologyTemplate */
public static TopologyTemplateGrpc obtainTopologyTemplate(Graph graph) {
TopologyTemplateGrpc.Builder topol = TopologyTemplateGrpc.newBuilder();
topol.setId(String.valueOf(graph.getId()));
//NodeTemplate
for(Node node : graph.getNodes().values()) {
NodeTemplateGrpc nt = obtainNodeTemplate(node);
topol.addNodeTemplate(nt);
//RelationshipTemplate
Map<Long,Neighbour> neighMap = node.getNeighbours();
for (Map.Entry<Long, Neighbour> myentry : neighMap.entrySet()) {
Neighbour neigh = myentry.getValue();
RelationshipTemplateGrpc relat = obtainRelationshipTemplate(neigh, node);
topol.addRelationshipTemplate(relat);
}
}
return topol.build();
}
/** Mapping method --> from model Node to grpc NodeTemplate */
private static NodeTemplateGrpc obtainNodeTemplate(Node node){
NodeTemplateGrpc.Builder nodegrpc = NodeTemplateGrpc.newBuilder();
nodegrpc.setId(String.valueOf(node.getId()));
nodegrpc.setName(node.getName());
nodegrpc.setType(NodeTemplateGrpc.Type.valueOf(node.getFunctional_type().toLowerCase()));
ToscaConfigurationGrpc config = obtainToscaConfiguration(node.getConfiguration());
nodegrpc.setConfiguration(config);
return nodegrpc.build();
}
/** Mapping method --> from model Neighbour to grpc RelationshipTemplate */
private static RelationshipTemplateGrpc obtainRelationshipTemplate(Neighbour neigh, Node sourceNode) {
RelationshipTemplateGrpc.Builder relat = RelationshipTemplateGrpc.newBuilder();
relat.setId(String.valueOf(sourceNode.getId()));
//Neighbour does not have a neighbourID! RelationshipTemplate does, so it is set to sourceNodeID
relat.setIdSourceNodeTemplate(String.valueOf(sourceNode.getId()));
relat.setIdTargetNodeTemplate(String.valueOf(neigh.getId()));
relat.setName(sourceNode.getName()+"to"+neigh.getName());
return relat.build();
}
/** Mapping method --> from model Configuration to grpc ToscaConfigurationGrpc */
private static ToscaConfigurationGrpc obtainToscaConfiguration(Configuration conf) {
return ToscaConfigurationGrpc.newBuilder()
.setId(conf.getId())
.setDescription(conf.getDescription())
.setConfiguration(conf.getConfiguration().toString())
.build();
}
/** Mapping method --> from model Verification to grpc ToscaVerificationGrpc */
public static ToscaVerificationGrpc obtainToscaVerification(Verification verify){
ToscaVerificationGrpc.Builder ver = ToscaVerificationGrpc.newBuilder();
ver.setComment(verify.getComment());
ver.setResult(verify.getResult());
for(Test test:verify.getTests()){
ToscaTestGrpc.Builder tst = ToscaTestGrpc.newBuilder().setResult(test.getResult());
for(Node node:test.getPath()){
NodeTemplateGrpc nodetempl = obtainNodeTemplate(node);
tst.addNodeTemplate(nodetempl);
}
ver.addTest(tst);
}
return ver.build();
}
}
|