annotate src/main/java/christie/topology/manager/TopologyManager.java @ 64:f884c1bd0d36

fix IncomingHosts and RecordTopology. and refactor.
author akahori
date Thu, 30 Aug 2018 10:55:37 +0900
parents cfd79a71f9cd
children f1f34c3e33d4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
02991eabdcbe add TopologyManager.java
akahori
parents:
diff changeset
1 package christie.topology.manager;
02991eabdcbe add TopologyManager.java
akahori
parents:
diff changeset
2
60
cfd79a71f9cd refactor topology manager
akahori
parents: 54
diff changeset
3 import christie.annotation.Peek;
38
02991eabdcbe add TopologyManager.java
akahori
parents:
diff changeset
4 import christie.codegear.CodeGear;
02991eabdcbe add TopologyManager.java
akahori
parents:
diff changeset
5 import christie.codegear.CodeGearManager;
02991eabdcbe add TopologyManager.java
akahori
parents:
diff changeset
6
41
akahori
parents: 38
diff changeset
7 import java.io.File;
akahori
parents: 38
diff changeset
8 import java.io.FileNotFoundException;
akahori
parents: 38
diff changeset
9 import java.io.FileReader;
akahori
parents: 38
diff changeset
10 import java.util.ArrayList;
akahori
parents: 38
diff changeset
11 import java.util.HashMap;
akahori
parents: 38
diff changeset
12 import java.util.LinkedList;
akahori
parents: 38
diff changeset
13
45
12c9bf81d429 fix TopologyManager.java
akahori
parents: 41
diff changeset
14 import christie.topology.HostMessage;
41
akahori
parents: 38
diff changeset
15 import org.apache.log4j.Logger;
akahori
parents: 38
diff changeset
16
akahori
parents: 38
diff changeset
17 import com.alexmerz.graphviz.ParseException;
akahori
parents: 38
diff changeset
18 import com.alexmerz.graphviz.Parser;
akahori
parents: 38
diff changeset
19 import com.alexmerz.graphviz.objects.*;
akahori
parents: 38
diff changeset
20
38
02991eabdcbe add TopologyManager.java
akahori
parents:
diff changeset
21 public class TopologyManager extends CodeGear {
02991eabdcbe add TopologyManager.java
akahori
parents:
diff changeset
22
60
cfd79a71f9cd refactor topology manager
akahori
parents: 54
diff changeset
23 @Peek
cfd79a71f9cd refactor topology manager
akahori
parents: 54
diff changeset
24 TopologyManagerConfig topologyManagerConfig;
cfd79a71f9cd refactor topology manager
akahori
parents: 54
diff changeset
25
45
12c9bf81d429 fix TopologyManager.java
akahori
parents: 41
diff changeset
26 private Logger logger = Logger.getLogger(TopologyManager.class);
41
akahori
parents: 38
diff changeset
27
60
cfd79a71f9cd refactor topology manager
akahori
parents: 54
diff changeset
28 public TopologyManager() {
45
12c9bf81d429 fix TopologyManager.java
akahori
parents: 41
diff changeset
29 }
41
akahori
parents: 38
diff changeset
30
38
02991eabdcbe add TopologyManager.java
akahori
parents:
diff changeset
31 @Override
02991eabdcbe add TopologyManager.java
akahori
parents:
diff changeset
32 protected void run(CodeGearManager cgm) {
41
akahori
parents: 38
diff changeset
33 cgm.setup(new CheckComingHost());
38
02991eabdcbe add TopologyManager.java
akahori
parents:
diff changeset
34
45
12c9bf81d429 fix TopologyManager.java
akahori
parents: 41
diff changeset
35 getLocalDGM().put("absCookieTable", new HashMap<String, String>());
12c9bf81d429 fix TopologyManager.java
akahori
parents: 41
diff changeset
36
41
akahori
parents: 38
diff changeset
37 // if (!conf.dynamic) は, conf.dynamic = trueの動作がわからないので, 省いた.
akahori
parents: 38
diff changeset
38
45
12c9bf81d429 fix TopologyManager.java
akahori
parents: 41
diff changeset
39 LinkedList<String> nodeNames = new LinkedList<>();
64
f884c1bd0d36 fix IncomingHosts and RecordTopology. and refactor.
akahori
parents: 60
diff changeset
40 HashMap<String, LinkedList<NodeInfo>> resultParse = new HashMap<>();
41
akahori
parents: 38
diff changeset
41 int nodeNum = 0;
akahori
parents: 38
diff changeset
42
akahori
parents: 38
diff changeset
43 try {
60
cfd79a71f9cd refactor topology manager
akahori
parents: 54
diff changeset
44 FileReader reader = new FileReader(new File(topologyManagerConfig.confFilePath));
41
akahori
parents: 38
diff changeset
45 Parser parser = new Parser();
akahori
parents: 38
diff changeset
46 parser.parse(reader);
akahori
parents: 38
diff changeset
47
akahori
parents: 38
diff changeset
48
akahori
parents: 38
diff changeset
49 ArrayList<Graph> digraphs = parser.getGraphs();
akahori
parents: 38
diff changeset
50
akahori
parents: 38
diff changeset
51
akahori
parents: 38
diff changeset
52 for (Graph digraph : digraphs) {
akahori
parents: 38
diff changeset
53 ArrayList<Node> nodes = digraph.getNodes(false);
akahori
parents: 38
diff changeset
54 nodeNum = nodes.size();
akahori
parents: 38
diff changeset
55
akahori
parents: 38
diff changeset
56 for (Node node : nodes) {
akahori
parents: 38
diff changeset
57 String nodeName = node.getId().getId();
akahori
parents: 38
diff changeset
58 nodeNames.add(nodeName);
64
f884c1bd0d36 fix IncomingHosts and RecordTopology. and refactor.
akahori
parents: 60
diff changeset
59 resultParse.put(nodeName, new LinkedList<>());
41
akahori
parents: 38
diff changeset
60 }
akahori
parents: 38
diff changeset
61
akahori
parents: 38
diff changeset
62 ArrayList<Edge> edges = digraph.getEdges();
45
12c9bf81d429 fix TopologyManager.java
akahori
parents: 41
diff changeset
63 HashMap<String, NodeInfo> hash = new HashMap<>();
41
akahori
parents: 38
diff changeset
64
akahori
parents: 38
diff changeset
65 String connection;
akahori
parents: 38
diff changeset
66 String source;
akahori
parents: 38
diff changeset
67 String target;
akahori
parents: 38
diff changeset
68
akahori
parents: 38
diff changeset
69 NodeInfo nodeInfo;
akahori
parents: 38
diff changeset
70
akahori
parents: 38
diff changeset
71 // まず1回グラフを読み込む
akahori
parents: 38
diff changeset
72 for (Edge edge : edges) {
akahori
parents: 38
diff changeset
73 connection = edge.getAttribute("label");
akahori
parents: 38
diff changeset
74 source = edge.getSource().getNode().getId().getId();
akahori
parents: 38
diff changeset
75 target = edge.getTarget().getNode().getId().getId();
64
f884c1bd0d36 fix IncomingHosts and RecordTopology. and refactor.
akahori
parents: 60
diff changeset
76 nodeInfo = new NodeInfo(source, connection, target);
41
akahori
parents: 38
diff changeset
77
64
f884c1bd0d36 fix IncomingHosts and RecordTopology. and refactor.
akahori
parents: 60
diff changeset
78 resultParse.get(source).add(nodeInfo);
41
akahori
parents: 38
diff changeset
79
64
f884c1bd0d36 fix IncomingHosts and RecordTopology. and refactor.
akahori
parents: 60
diff changeset
80 //hash.put(source + "," + target, nodeInfo);
41
akahori
parents: 38
diff changeset
81 }
akahori
parents: 38
diff changeset
82
akahori
parents: 38
diff changeset
83 // hash.get(target + "," + source); をして, グラフを逆にたどって, reverseNameにlabelを入れてる.
64
f884c1bd0d36 fix IncomingHosts and RecordTopology. and refactor.
akahori
parents: 60
diff changeset
84 /*
41
akahori
parents: 38
diff changeset
85 for (Edge edge : edges) {
akahori
parents: 38
diff changeset
86 connection = edge.getAttribute("label");
akahori
parents: 38
diff changeset
87 source = edge.getSource().getNode().getId().getId();
akahori
parents: 38
diff changeset
88 target = edge.getTarget().getNode().getId().getId();
akahori
parents: 38
diff changeset
89 nodeInfo = hash.get(target + "," + source);
akahori
parents: 38
diff changeset
90
akahori
parents: 38
diff changeset
91 if (nodeInfo != null) {
akahori
parents: 38
diff changeset
92 nodeInfo.reverseName = connection;
akahori
parents: 38
diff changeset
93 }
akahori
parents: 38
diff changeset
94
64
f884c1bd0d36 fix IncomingHosts and RecordTopology. and refactor.
akahori
parents: 60
diff changeset
95 }*/
41
akahori
parents: 38
diff changeset
96 }
akahori
parents: 38
diff changeset
97
akahori
parents: 38
diff changeset
98 } catch (FileNotFoundException e) {
60
cfd79a71f9cd refactor topology manager
akahori
parents: 54
diff changeset
99 logger.error("File not found: " + topologyManagerConfig.confFilePath);
41
akahori
parents: 38
diff changeset
100 e.printStackTrace();
akahori
parents: 38
diff changeset
101 } catch (ParseException e) {
60
cfd79a71f9cd refactor topology manager
akahori
parents: 54
diff changeset
102 logger.error("File format error: " + topologyManagerConfig.confFilePath);
41
akahori
parents: 38
diff changeset
103 e.printStackTrace();
akahori
parents: 38
diff changeset
104 }
akahori
parents: 38
diff changeset
105
akahori
parents: 38
diff changeset
106 // for recode topology information
akahori
parents: 38
diff changeset
107 // cookie List
akahori
parents: 38
diff changeset
108 getLocalDGM().put("running", false);
64
f884c1bd0d36 fix IncomingHosts and RecordTopology. and refactor.
akahori
parents: 60
diff changeset
109 getLocalDGM().put("resultParse", resultParse);
41
akahori
parents: 38
diff changeset
110 getLocalDGM().put("nodeNames", nodeNames);
60
cfd79a71f9cd refactor topology manager
akahori
parents: 54
diff changeset
111 getLocalDGM().put("hostInfoMap", new HashMap<String, HostMessage>());
64
f884c1bd0d36 fix IncomingHosts and RecordTopology. and refactor.
akahori
parents: 60
diff changeset
112 getLocalDGM().put("topology", new HashMap<String, HashMap<String, HostMessage>>());
f884c1bd0d36 fix IncomingHosts and RecordTopology. and refactor.
akahori
parents: 60
diff changeset
113 getLocalDGM().put("nodeNum", nodeNum);
f884c1bd0d36 fix IncomingHosts and RecordTopology. and refactor.
akahori
parents: 60
diff changeset
114 getLocalDGM().put("createdList", new LinkedList<String>());
41
akahori
parents: 38
diff changeset
115
akahori
parents: 38
diff changeset
116 cgm.setup(new IncomingHosts());
akahori
parents: 38
diff changeset
117 cgm.setup(new ConfigWaiter());
45
12c9bf81d429 fix TopologyManager.java
akahori
parents: 41
diff changeset
118 cgm.setup(new CreateHash());
12c9bf81d429 fix TopologyManager.java
akahori
parents: 41
diff changeset
119 cgm.setup(new TopologyFinish());
38
02991eabdcbe add TopologyManager.java
akahori
parents:
diff changeset
120
02991eabdcbe add TopologyManager.java
akahori
parents:
diff changeset
121 }
02991eabdcbe add TopologyManager.java
akahori
parents:
diff changeset
122
41
akahori
parents: 38
diff changeset
123
38
02991eabdcbe add TopologyManager.java
akahori
parents:
diff changeset
124 }