Merge dev/fluorine work across to master
[unimgr.git] / ovs-driver / src / test / java / org / opendaylight / unimgr / mef / nrp / ovs / OvsdbTopologyTestUtils.java
1 /*
2  * Copyright (c) 2017 Cisco Systems Inc and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.unimgr.mef.nrp.ovs;
9
10 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
11 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.*;
13 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
14 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
15 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
16 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId;
17 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
18 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyBuilder;
19 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
20 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
21 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
22 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
23 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
24 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointBuilder;
25 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey;
26 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
27
28 import java.util.List;
29
30 /**
31  * @author marek.ryznar@amartus.com
32  */
33 public class OvsdbTopologyTestUtils {
34     private static final TopologyId ovsdbTopologyId = new TopologyId(new Uri("ovsdb:1"));
35     private static final InstanceIdentifier ovsdbTopology =
36             InstanceIdentifier
37                     .create(NetworkTopology.class)
38                     .child(Topology.class, new TopologyKey(ovsdbTopologyId));
39
40     /**
41      * Ovsdb topology initializator.
42      */
43     public static void createOvsdbTopology(DataBroker dataBroker) {
44         TopologyBuilder topologyBuilder = new TopologyBuilder();
45         topologyBuilder.setTopologyId(ovsdbTopologyId);
46         Topology topology = topologyBuilder.build();
47         DataStoreTestUtils.write(topology,ovsdbTopology, dataBroker);
48     }
49
50     public static void writeBridge(Node node, DataBroker dataBroker) {
51         InstanceIdentifier bridgeIid = getNodeInstanceIdentifier(node.getNodeId());
52         DataStoreTestUtils.write(node,bridgeIid,dataBroker);
53     }
54
55     public static Node createBridge(String nodeId, List<TerminationPoint> tps) {
56         NodeBuilder nodeBuilder = new NodeBuilder();
57         nodeBuilder.setNodeId(new NodeId(nodeId));
58         nodeBuilder.setTerminationPoint(tps);
59         nodeBuilder.addAugmentation(OvsdbBridgeAugmentation.class,createOvsdbBridgeAugmentation(nodeId));
60         nodeBuilder.addAugmentation(OvsdbNodeAugmentation.class, new OvsdbNodeAugmentationBuilder().build());
61         return nodeBuilder.build();
62     }
63
64     public static InstanceIdentifier getNodeInstanceIdentifier(NodeId nodeId) {
65         return InstanceIdentifier
66                 .builder(NetworkTopology.class)
67                 .child(Topology.class,
68                         new TopologyKey(ovsdbTopologyId))
69                 .child(Node.class,
70                         new NodeKey(nodeId))
71                 .build();
72     }
73
74     public static InstanceIdentifier getPortInstanceIdentifier(String nodeName, String portName) {
75         return getNodeInstanceIdentifier(new NodeId(nodeName))
76                 .child(TerminationPoint.class,
77                         new TerminationPointKey(new TpId(portName)));
78     }
79
80     private static OvsdbBridgeAugmentation createOvsdbBridgeAugmentation(String ovsdbBridgeName) {
81         OvsdbBridgeAugmentationBuilder ovsdbBridgeAugmentationBuilder = new OvsdbBridgeAugmentationBuilder();
82         ovsdbBridgeAugmentationBuilder.setBridgeName(new OvsdbBridgeName(ovsdbBridgeName));
83         return ovsdbBridgeAugmentationBuilder.build();
84     }
85
86     public static TerminationPoint createTerminationPoint(String tpId, Long ofName) {
87         TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
88         terminationPointBuilder.setTpId(new TpId(tpId));
89         terminationPointBuilder.withKey(new TerminationPointKey(new TpId(tpId)));
90         terminationPointBuilder.addAugmentation(OvsdbTerminationPointAugmentation.class, createOvsdbTerminationPointAugmentation(ofName));
91         TerminationPoint terminationPoint = terminationPointBuilder.build();
92         return terminationPoint;
93     }
94
95     private static OvsdbTerminationPointAugmentation createOvsdbTerminationPointAugmentation(Long ofPort) {
96         OvsdbTerminationPointAugmentationBuilder ovsdbTerminationPointAugmentationBuilder = new OvsdbTerminationPointAugmentationBuilder();
97         ovsdbTerminationPointAugmentationBuilder.setOfport(ofPort);
98         return ovsdbTerminationPointAugmentationBuilder.build();
99     }
100 }