2 * Copyright (c) 2017 Cisco Systems Inc and others. All rights reserved.
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
8 package org.opendaylight.unimgr.mef.nrp.ovs;
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;
28 import java.util.List;
31 * @author marek.ryznar@amartus.com
33 public class OvsdbTopologyTestUtils {
34 private static final TopologyId ovsdbTopologyId = new TopologyId(new Uri("ovsdb:1"));
35 private static final InstanceIdentifier ovsdbTopology =
37 .create(NetworkTopology.class)
38 .child(Topology.class, new TopologyKey(ovsdbTopologyId));
41 * Ovsdb topology initializator.
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);
50 public static void writeBridge(Node node, DataBroker dataBroker) {
51 InstanceIdentifier bridgeIid = getNodeInstanceIdentifier(node.getNodeId());
52 DataStoreTestUtils.write(node,bridgeIid,dataBroker);
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();
64 public static InstanceIdentifier getNodeInstanceIdentifier(NodeId nodeId) {
65 return InstanceIdentifier
66 .builder(NetworkTopology.class)
67 .child(Topology.class,
68 new TopologyKey(ovsdbTopologyId))
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)));
80 private static OvsdbBridgeAugmentation createOvsdbBridgeAugmentation(String ovsdbBridgeName) {
81 OvsdbBridgeAugmentationBuilder ovsdbBridgeAugmentationBuilder = new OvsdbBridgeAugmentationBuilder();
82 ovsdbBridgeAugmentationBuilder.setBridgeName(new OvsdbBridgeName(ovsdbBridgeName));
83 return ovsdbBridgeAugmentationBuilder.build();
86 public static TerminationPoint createTerminationPoint(String tpId, Long ofName) {
87 TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
88 terminationPointBuilder.setTpId(new TpId(tpId));
89 terminationPointBuilder.setKey(new TerminationPointKey(new TpId(tpId)));
90 terminationPointBuilder.addAugmentation(OvsdbTerminationPointAugmentation.class, createOvsdbTerminationPointAugmentation(ofName));
91 TerminationPoint terminationPoint = terminationPointBuilder.build();
92 return terminationPoint;
95 private static OvsdbTerminationPointAugmentation createOvsdbTerminationPointAugmentation(Long ofPort) {
96 OvsdbTerminationPointAugmentationBuilder ovsdbTerminationPointAugmentationBuilder = new OvsdbTerminationPointAugmentationBuilder();
97 ovsdbTerminationPointAugmentationBuilder.setOfport(ofPort);
98 return ovsdbTerminationPointAugmentationBuilder.build();