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.nemo.common.rev151010.*;
\r
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.ConnectionDefinitions;
\r
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.MatchItemDefinitions;
\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeDefinitions;
\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.definitions.ConnectionDefinition;
\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.definitions.MatchItemDefinition;
\r
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;
\r
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ActionDefinitions;
\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ConditionParameterDefinitions;
\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.definitions.ActionDefinition;
\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.parameter.definitions.ConditionParameterDefinition;
\r
27 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
\r
28 import org.slf4j.Logger;
\r
29 import org.slf4j.LoggerFactory;
\r
31 import java.util.HashMap;
\r
32 import java.util.List;
\r
33 import java.util.Map;
\r
36 * Created by z00293636 on 2015/12/3.
\r
38 public class GetDefinitions {
\r
39 private DataBroker dataBroker;
\r
40 private List<NodeDefinition> nodeDefinitionList = null;
\r
41 private List<ConnectionDefinition> connectionDefinitionsList = null;
\r
42 private List<MatchItemDefinition> matchItemDefinitionList = null;
\r
43 private List<ConditionParameterDefinition> conditionParameterDefinitionList = null;
\r
44 private List<ActionDefinition> actionDefinitionList = null;
\r
45 private static final Logger LOG = LoggerFactory.getLogger(GetDefinitions.class);
\r
47 public GetDefinitions(DataBroker dataBroker){
\r
48 this.dataBroker = dataBroker;
\r
51 public Map<NodeType, NodeDefinition> getNodeDefinition(){
\r
52 fetchNodeDefinitions();
\r
53 Map<NodeType, NodeDefinition> map = new HashMap<NodeType, NodeDefinition>();
\r
54 if (nodeDefinitionList!=null){
\r
55 for (NodeDefinition nodeDefinition : nodeDefinitionList){
\r
56 map.put(nodeDefinition.getNodeType(),nodeDefinition);
\r
62 public Map<MatchItemName, MatchItemDefinition> getMatchItemDefinition(){
\r
63 fetchMatchItemDefinitions();
\r
64 Map<MatchItemName, MatchItemDefinition> map = new HashMap<MatchItemName, MatchItemDefinition>();
\r
65 if (matchItemDefinitionList != null){
\r
66 for (MatchItemDefinition matchItemDefinition : matchItemDefinitionList){
\r
67 map.put(matchItemDefinition.getMatchItemName(),matchItemDefinition);
\r
73 public Map<ConnectionType, ConnectionDefinition> getConnectionDefinition(){
\r
74 fetchConnectionDefinitionList();
\r
75 Map<ConnectionType, ConnectionDefinition> map = new HashMap<ConnectionType, ConnectionDefinition>();
\r
76 if (connectionDefinitionsList != null){
\r
77 for (ConnectionDefinition connectionDefinition : connectionDefinitionsList){
\r
78 map.put(connectionDefinition.getConnectionType(),connectionDefinition);
\r
84 public Map<ActionName, ActionDefinition> getActionDefinition(){
\r
85 fetchActionDefinitions();
\r
86 Map<ActionName,ActionDefinition> map = new HashMap<ActionName, ActionDefinition>();
\r
87 if (actionDefinitionList!=null){
\r
88 for (ActionDefinition actionDefinition : actionDefinitionList){
\r
89 map.put(actionDefinition.getActionName(),actionDefinition);
\r
95 public Map<ParameterName, ConditionParameterDefinition> getConditionParameterDefinition(){
\r
96 fetchConditionParaDefinitions();
\r
97 Map<ParameterName, ConditionParameterDefinition> map = new HashMap<ParameterName, ConditionParameterDefinition>();
\r
98 if (conditionParameterDefinitionList!=null){
\r
99 for (ConditionParameterDefinition conditionParameterDefinition : conditionParameterDefinitionList){
\r
100 map.put(conditionParameterDefinition.getParameterName(),conditionParameterDefinition);
\r
106 private void setNodeDefinitionsList(List<NodeDefinition> nodeDefinitiones){
\r
107 this.nodeDefinitionList = nodeDefinitiones;
\r
110 private void setMatchItemDefintionList(List<MatchItemDefinition> matchItemDefinitions){
\r
111 this.matchItemDefinitionList = matchItemDefinitions;
\r
114 private void setConnectionDefinitionsList(List<ConnectionDefinition> connectionDefinitions){
\r
115 this.connectionDefinitionsList = connectionDefinitions;
\r
118 private void setConditionParameterDefinitionList(List<ConditionParameterDefinition> conditionParameterDefinitions){
\r
119 this.conditionParameterDefinitionList = conditionParameterDefinitions;
\r
122 private void setActionDefinitionList(List<ActionDefinition> actionDefinitions){
\r
123 this.actionDefinitionList = actionDefinitions;
\r
126 private void fetchNodeDefinitions(){
\r
127 InstanceIdentifier<NodeDefinitions> nodedefinitionId = InstanceIdentifier.builder(NodeDefinitions.class).build();
\r
128 ListenableFuture<Optional<NodeDefinitions>> nodedefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, nodedefinitionId);
\r
129 Futures.addCallback(nodedefinitionFuture, new FutureCallback<Optional<NodeDefinitions>>() {
\r
131 public void onSuccess(Optional<NodeDefinitions> result){
\r
132 setNodeDefinitionsList(result.get().getNodeDefinition());
\r
135 public void onFailure(Throwable t){
\r
136 LOG.error("Can not read node definitions information.", t);
\r
142 private void fetchConnectionDefinitionList(){
\r
143 InstanceIdentifier<ConnectionDefinitions> connectiondefinitionId = InstanceIdentifier.builder(ConnectionDefinitions.class).build();
\r
144 ListenableFuture<Optional<ConnectionDefinitions>> connectiondefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, connectiondefinitionId);
\r
145 Futures.addCallback(connectiondefinitionFuture, new FutureCallback<Optional<ConnectionDefinitions>>() {
\r
147 public void onSuccess(Optional<ConnectionDefinitions> result) {
\r
148 setConnectionDefinitionsList(result.get().getConnectionDefinition());
\r
152 public void onFailure(Throwable t) {
\r
153 LOG.error("Can not read connection definition information.", t);
\r
159 private void fetchMatchItemDefinitions(){
\r
160 InstanceIdentifier<MatchItemDefinitions> matchitemdefinitionId = InstanceIdentifier.builder(MatchItemDefinitions.class).build();
\r
161 ListenableFuture<Optional<MatchItemDefinitions>> matchitemdefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, matchitemdefinitionId);
\r
162 Futures.addCallback(matchitemdefinitionFuture, new FutureCallback<Optional<MatchItemDefinitions>>() {
\r
164 public void onSuccess(Optional<MatchItemDefinitions> result) {
\r
165 setMatchItemDefintionList(result.get().getMatchItemDefinition());
\r
168 public void onFailure(Throwable t) {
\r
169 LOG.error("Can not read match item definition information.", t);
\r
175 private void fetchActionDefinitions(){
\r
176 InstanceIdentifier<ActionDefinitions> actiondefinitionId = InstanceIdentifier.builder(ActionDefinitions.class).build();
\r
177 ListenableFuture<Optional<ActionDefinitions>> actiondefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, actiondefinitionId);
\r
178 Futures.addCallback(actiondefinitionFuture, new FutureCallback<Optional<ActionDefinitions>>() {
\r
180 public void onSuccess(Optional<ActionDefinitions> result) {
\r
181 setActionDefinitionList(result.get().getActionDefinition());
\r
185 public void onFailure(Throwable t) {
\r
186 LOG.error("Can not read action definition information.", t);
\r
192 private void fetchConditionParaDefinitions(){
\r
193 InstanceIdentifier<ConditionParameterDefinitions> conditionparadefinitionId = InstanceIdentifier.builder(ConditionParameterDefinitions.class).build();
\r
194 ListenableFuture<Optional<ConditionParameterDefinitions>> conditionparadefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, conditionparadefinitionId);
\r
195 Futures.addCallback(conditionparadefinitionFuture, new FutureCallback<Optional<ConditionParameterDefinitions>>() {
\r
197 public void onSuccess(Optional<ConditionParameterDefinitions> result) {
\r
198 setConditionParameterDefinitionList(result.get().getConditionParameterDefinition());
\r
202 public void onFailure(Throwable t) {
\r
203 LOG.error("Can not read condition parameter definition information.", t);
\r