ITs for hwvtepsouthbound
[ovsdb.git] / utils / hwvtepsouthbound-utils / src / main / java / org / opendaylight / ovsdb / utils / hwvtepsouthbound / utils / HwvtepSouthboundUtils.java
1 /*
2  * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. 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
9 package org.opendaylight.ovsdb.utils.hwvtepsouthbound.utils;
10
11 import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundConstants;
12 import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentationBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.ConnectionInfo;
19 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
20 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
21 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
22 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
23 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
24 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
25 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
26 import org.opendaylight.yangtools.yang.binding.Augmentation;
27 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
30
31 public class HwvtepSouthboundUtils {
32     private static final Logger LOG = LoggerFactory.getLogger(HwvtepSouthboundUtils.class);
33     private static final int HWVTEP_UPDATE_TIMEOUT = 1000;
34     private final MdsalUtils mdsalUtils;
35
36     public HwvtepSouthboundUtils(MdsalUtils mdsalUtils) {
37         this.mdsalUtils = mdsalUtils;
38     }
39
40     public static NodeId createNodeId(IpAddress ip, PortNumber port) {
41         String uriString = HwvtepSouthboundConstants.HWVTEP_URI_PREFIX + "://"
42                 + String.valueOf(ip.getValue()) + ":" + port.getValue();
43         Uri uri = new Uri(uriString);
44         return new NodeId(uri);
45     }
46
47     public static Node createNode(ConnectionInfo key) {
48         NodeBuilder nodeBuilder = new NodeBuilder();
49         nodeBuilder.setNodeId(createNodeId(key.getRemoteIp(), key.getRemotePort()));
50         nodeBuilder.addAugmentation(HwvtepGlobalAugmentation.class, createHwvtepAugmentation(key));
51         return nodeBuilder.build();
52     }
53
54     public static HwvtepGlobalAugmentation createHwvtepAugmentation(ConnectionInfo key) {
55         HwvtepGlobalAugmentationBuilder hwvtepGlobalBuilder = new HwvtepGlobalAugmentationBuilder();
56         hwvtepGlobalBuilder.setConnectionInfo(key);
57         return hwvtepGlobalBuilder.build();
58     }
59
60     public static InstanceIdentifier<Node> createInstanceIdentifier(ConnectionInfo key) {
61         return createInstanceIdentifier(key.getRemoteIp(), key.getRemotePort());
62     }
63
64     public static InstanceIdentifier<Node> createInstanceIdentifier(IpAddress ip, PortNumber port) {
65         InstanceIdentifier<Node> path = InstanceIdentifier
66                 .create(NetworkTopology.class)
67                 .child(Topology.class, new TopologyKey(HwvtepSouthboundConstants.HWVTEP_TOPOLOGY_ID))
68                 .child(Node.class,createNodeKey(ip,port));
69         LOG.debug("Created hwvtep path: {}",path);
70         return path;
71     }
72
73     public static NodeKey createNodeKey(IpAddress ip, PortNumber port) {
74         return new NodeKey(createNodeId(ip, port));
75     }
76
77 }