Bug 5077: Codes break the security rules
[nemo.git] / nemo-impl / src / main / java / org / opendaylight / nemo / user / vnspacemanager / structurestyle / updateintent / GetDefinitions.java
1 /*\r
2  * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
9 \r
10 import com.google.common.base.Optional;\r
11 import com.google.common.util.concurrent.FutureCallback;\r
12 import com.google.common.util.concurrent.Futures;\r
13 import com.google.common.util.concurrent.ListenableFuture;\r
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
15 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalNetwork;\r
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalHosts;\r
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.hosts.PhysicalHost;\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalHostName;\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.ConnectionDefinitions;\r
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.MatchItemDefinitions;\r
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeDefinitions;\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.definitions.ConnectionDefinition;\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.definitions.MatchItemDefinition;\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ActionDefinitions;\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ConditionParameterDefinitions;\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.definitions.ActionDefinition;\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.parameter.definitions.ConditionParameterDefinition;\r
31 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
32 import org.slf4j.Logger;\r
33 import org.slf4j.LoggerFactory;\r
34 \r
35 import java.util.HashMap;\r
36 import java.util.List;\r
37 import java.util.Map;\r
38 import java.util.concurrent.ExecutionException;\r
39 \r
40 /**\r
41  * Created by z00293636 on 2015/12/3.\r
42  */\r
43 public class GetDefinitions {\r
44     private DataBroker dataBroker;\r
45     private List<NodeDefinition> nodeDefinitionList = null;\r
46     private List<ConnectionDefinition> connectionDefinitionsList = null;\r
47     private List<MatchItemDefinition> matchItemDefinitionList = null;\r
48     private List<ConditionParameterDefinition> conditionParameterDefinitionList = null;\r
49     private List<ActionDefinition> actionDefinitionList = null;\r
50     private List<PhysicalHost> physicalHostList = null;\r
51     private static final Logger LOG = LoggerFactory.getLogger(GetDefinitions.class);\r
52 \r
53     public GetDefinitions(DataBroker dataBroker){\r
54         this.dataBroker = dataBroker;\r
55     }\r
56 \r
57     public Map<NodeType, NodeDefinition> getNodeDefinition(){\r
58         fetchNodeDefinitions();\r
59         Map<NodeType, NodeDefinition> map = new HashMap<NodeType, NodeDefinition>();\r
60         if (nodeDefinitionList!=null){\r
61             for (NodeDefinition nodeDefinition : nodeDefinitionList){\r
62                 map.put(nodeDefinition.getNodeType(),nodeDefinition);\r
63             }\r
64         }\r
65         return map;\r
66     }\r
67 \r
68     public Map<MatchItemName, MatchItemDefinition> getMatchItemDefinition(){\r
69         fetchMatchItemDefinitions();\r
70         Map<MatchItemName, MatchItemDefinition> map = new HashMap<MatchItemName, MatchItemDefinition>();\r
71         if (matchItemDefinitionList != null){\r
72             for (MatchItemDefinition matchItemDefinition : matchItemDefinitionList){\r
73                 map.put(matchItemDefinition.getMatchItemName(),matchItemDefinition);\r
74             }\r
75         }\r
76         return map;\r
77     }\r
78 \r
79     public Map<ConnectionType, ConnectionDefinition> getConnectionDefinition(){\r
80         fetchConnectionDefinitionList();\r
81         Map<ConnectionType, ConnectionDefinition> map = new HashMap<ConnectionType, ConnectionDefinition>();\r
82         if (connectionDefinitionsList != null){\r
83             for (ConnectionDefinition connectionDefinition : connectionDefinitionsList){\r
84                 map.put(connectionDefinition.getConnectionType(),connectionDefinition);\r
85             }\r
86         }\r
87         return map;\r
88     }\r
89 \r
90     public Map<ActionName, ActionDefinition> getActionDefinition(){\r
91         fetchActionDefinitions();\r
92         Map<ActionName,ActionDefinition> map = new HashMap<ActionName, ActionDefinition>();\r
93         if (actionDefinitionList!=null){\r
94             for (ActionDefinition actionDefinition : actionDefinitionList){\r
95                 map.put(actionDefinition.getActionName(),actionDefinition);\r
96             }\r
97         }\r
98         return map;\r
99     }\r
100 \r
101     public Map<ParameterName, ConditionParameterDefinition> getConditionParameterDefinition(){\r
102         fetchConditionParaDefinitions();\r
103         Map<ParameterName, ConditionParameterDefinition> map = new HashMap<ParameterName, ConditionParameterDefinition>();\r
104         if (conditionParameterDefinitionList!=null){\r
105             for (ConditionParameterDefinition conditionParameterDefinition : conditionParameterDefinitionList){\r
106                 map.put(conditionParameterDefinition.getParameterName(),conditionParameterDefinition);\r
107             }\r
108         }\r
109         return map;\r
110     }\r
111 \r
112     public Map<PhysicalHostName, PhysicalHost> getPhysicalHost(){\r
113         fetchPhysicalHosts();\r
114         Map<PhysicalHostName, PhysicalHost> map = new HashMap<PhysicalHostName, PhysicalHost>();\r
115         if (physicalHostList!=null){\r
116             for (PhysicalHost physicalHost : physicalHostList){\r
117                 map.put(physicalHost.getHostName(),physicalHost);\r
118             }\r
119         }\r
120         return map;\r
121     }\r
122 \r
123     private void setNodeDefinitionsList(List<NodeDefinition> nodeDefinitiones){\r
124         this.nodeDefinitionList = nodeDefinitiones;\r
125     }\r
126 \r
127     private void setMatchItemDefintionList(List<MatchItemDefinition> matchItemDefinitions){\r
128         this.matchItemDefinitionList = matchItemDefinitions;\r
129     }\r
130 \r
131     private void setConnectionDefinitionsList(List<ConnectionDefinition> connectionDefinitions){\r
132         this.connectionDefinitionsList = connectionDefinitions;\r
133     }\r
134 \r
135     private void setConditionParameterDefinitionList(List<ConditionParameterDefinition> conditionParameterDefinitions){\r
136         this.conditionParameterDefinitionList = conditionParameterDefinitions;\r
137     }\r
138 \r
139     private void setActionDefinitionList(List<ActionDefinition> actionDefinitions){\r
140         this.actionDefinitionList = actionDefinitions;\r
141     }\r
142 \r
143     private void setPhysicalHosts(List<PhysicalHost> physicalHosts){\r
144         this.physicalHostList = physicalHosts;\r
145     }\r
146 \r
147     private void fetchNodeDefinitions(){\r
148         InstanceIdentifier<NodeDefinitions> nodedefinitionId = InstanceIdentifier.builder(NodeDefinitions.class).build();\r
149         ListenableFuture<Optional<NodeDefinitions>> nodedefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, nodedefinitionId);\r
150         Futures.addCallback(nodedefinitionFuture, new FutureCallback<Optional<NodeDefinitions>>() {\r
151             @Override\r
152             public void onSuccess(Optional<NodeDefinitions> result){\r
153                 setNodeDefinitionsList(result.get().getNodeDefinition());\r
154             }\r
155             @Override\r
156             public void onFailure(Throwable t){\r
157                 LOG.error("Can not read node definitions information.", t);\r
158             }\r
159         });\r
160         return ;\r
161     }\r
162 \r
163     private void fetchConnectionDefinitionList(){\r
164         InstanceIdentifier<ConnectionDefinitions> connectiondefinitionId = InstanceIdentifier.builder(ConnectionDefinitions.class).build();\r
165         ListenableFuture<Optional<ConnectionDefinitions>> connectiondefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, connectiondefinitionId);\r
166         Futures.addCallback(connectiondefinitionFuture, new FutureCallback<Optional<ConnectionDefinitions>>() {\r
167             @Override\r
168             public void onSuccess(Optional<ConnectionDefinitions> result) {\r
169                 setConnectionDefinitionsList(result.get().getConnectionDefinition());\r
170             }\r
171 \r
172             @Override\r
173             public void onFailure(Throwable t) {\r
174                 LOG.error("Can not read connection definition information.", t);\r
175             }\r
176         });\r
177         return;\r
178     }\r
179 \r
180     private void fetchMatchItemDefinitions(){\r
181         InstanceIdentifier<MatchItemDefinitions> matchitemdefinitionId = InstanceIdentifier.builder(MatchItemDefinitions.class).build();\r
182         ListenableFuture<Optional<MatchItemDefinitions>> matchitemdefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, matchitemdefinitionId);\r
183         Futures.addCallback(matchitemdefinitionFuture, new FutureCallback<Optional<MatchItemDefinitions>>() {\r
184             @Override\r
185             public void onSuccess(Optional<MatchItemDefinitions> result) {\r
186                 setMatchItemDefintionList(result.get().getMatchItemDefinition());\r
187             }\r
188             @Override\r
189             public void onFailure(Throwable t) {\r
190                 LOG.error("Can not read match item definition information.", t);\r
191             }\r
192         });\r
193         return ;\r
194     }\r
195 \r
196     private void fetchActionDefinitions(){\r
197         InstanceIdentifier<ActionDefinitions> actiondefinitionId = InstanceIdentifier.builder(ActionDefinitions.class).build();\r
198         ListenableFuture<Optional<ActionDefinitions>> actiondefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, actiondefinitionId);\r
199         Futures.addCallback(actiondefinitionFuture, new FutureCallback<Optional<ActionDefinitions>>() {\r
200             @Override\r
201             public void onSuccess(Optional<ActionDefinitions> result) {\r
202                 setActionDefinitionList(result.get().getActionDefinition());\r
203             }\r
204 \r
205             @Override\r
206             public void onFailure(Throwable t) {\r
207                 LOG.error("Can not read action definition information.", t);\r
208             }\r
209         });\r
210         return ;\r
211     }\r
212 \r
213     private void fetchConditionParaDefinitions(){\r
214         InstanceIdentifier<ConditionParameterDefinitions> conditionparadefinitionId = InstanceIdentifier.builder(ConditionParameterDefinitions.class).build();\r
215         ListenableFuture<Optional<ConditionParameterDefinitions>> conditionparadefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, conditionparadefinitionId);\r
216         Futures.addCallback(conditionparadefinitionFuture, new FutureCallback<Optional<ConditionParameterDefinitions>>() {\r
217             @Override\r
218             public void onSuccess(Optional<ConditionParameterDefinitions> result) {\r
219                 setConditionParameterDefinitionList(result.get().getConditionParameterDefinition());\r
220             }\r
221 \r
222             @Override\r
223             public void onFailure(Throwable t) {\r
224                 LOG.error("Can not read condition parameter definition information.", t);\r
225             }\r
226         });\r
227         try {\r
228             conditionparadefinitionFuture.get();\r
229         } catch (InterruptedException e) {\r
230             // TODO Auto-generated catch block\r
231             LOG.error("Exception:",e);\r
232         } catch (ExecutionException e){\r
233             // TODO Auto-generated catch block\r
234             LOG.error("Exception:",e);\r
235         }\r
236         return ;\r
237     }\r
238 \r
239     private void fetchPhysicalHosts(){\r
240         InstanceIdentifier<PhysicalHosts> physicalHostsInstanceIdentifier = InstanceIdentifier.builder(PhysicalNetwork.class).child(PhysicalHosts.class).build();\r
241         ListenableFuture<Optional<PhysicalHosts>> physicalHostsFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.OPERATIONAL, physicalHostsInstanceIdentifier);\r
242         Futures.addCallback(physicalHostsFuture, new FutureCallback<Optional<PhysicalHosts>>() {\r
243             @Override\r
244             public void onSuccess(Optional<PhysicalHosts> result) {\r
245                 setPhysicalHosts(result.get().getPhysicalHost());\r
246             }\r
247 \r
248             @Override\r
249             public void onFailure(Throwable t) {\r
250                 LOG.error("Can not read physical hosts information.", t);\r
251             }\r
252         });\r
253         return ;\r
254     }\r
255 }\r