2 * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
\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
8 package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;
\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
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
41 * Created by z00293636 on 2015/12/3.
\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
53 public GetDefinitions(DataBroker dataBroker){
\r
54 this.dataBroker = dataBroker;
\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
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
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
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
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
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
123 private void setNodeDefinitionsList(List<NodeDefinition> nodeDefinitiones){
\r
124 this.nodeDefinitionList = nodeDefinitiones;
\r
127 private void setMatchItemDefintionList(List<MatchItemDefinition> matchItemDefinitions){
\r
128 this.matchItemDefinitionList = matchItemDefinitions;
\r
131 private void setConnectionDefinitionsList(List<ConnectionDefinition> connectionDefinitions){
\r
132 this.connectionDefinitionsList = connectionDefinitions;
\r
135 private void setConditionParameterDefinitionList(List<ConditionParameterDefinition> conditionParameterDefinitions){
\r
136 this.conditionParameterDefinitionList = conditionParameterDefinitions;
\r
139 private void setActionDefinitionList(List<ActionDefinition> actionDefinitions){
\r
140 this.actionDefinitionList = actionDefinitions;
\r
143 private void setPhysicalHosts(List<PhysicalHost> physicalHosts){
\r
144 this.physicalHostList = physicalHosts;
\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
152 public void onSuccess(Optional<NodeDefinitions> result){
\r
153 setNodeDefinitionsList(result.get().getNodeDefinition());
\r
156 public void onFailure(Throwable t){
\r
157 LOG.error("Can not read node definitions information.", t);
\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
168 public void onSuccess(Optional<ConnectionDefinitions> result) {
\r
169 setConnectionDefinitionsList(result.get().getConnectionDefinition());
\r
173 public void onFailure(Throwable t) {
\r
174 LOG.error("Can not read connection definition information.", t);
\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
185 public void onSuccess(Optional<MatchItemDefinitions> result) {
\r
186 setMatchItemDefintionList(result.get().getMatchItemDefinition());
\r
189 public void onFailure(Throwable t) {
\r
190 LOG.error("Can not read match item definition information.", t);
\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
201 public void onSuccess(Optional<ActionDefinitions> result) {
\r
202 setActionDefinitionList(result.get().getActionDefinition());
\r
206 public void onFailure(Throwable t) {
\r
207 LOG.error("Can not read action definition information.", t);
\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
218 public void onSuccess(Optional<ConditionParameterDefinitions> result) {
\r
219 setConditionParameterDefinitionList(result.get().getConditionParameterDefinition());
\r
223 public void onFailure(Throwable t) {
\r
224 LOG.error("Can not read condition parameter definition information.", t);
\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
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
244 public void onSuccess(Optional<PhysicalHosts> result) {
\r
245 setPhysicalHosts(result.get().getPhysicalHost());
\r
249 public void onFailure(Throwable t) {
\r
250 LOG.error("Can not read physical hosts information.", t);
\r