d3ee6f00c2412289ece2f7f7dc3b94849db745fc
[transportpce.git] / networkmodel / src / main / java / org / opendaylight / transportpce / networkmodel / util / OpenRoadmNetwork.java
1 /*
2  * Copyright © 2016 AT&T 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.transportpce.networkmodel.util;
10
11 import com.google.common.collect.ImmutableList;
12 import org.opendaylight.transportpce.common.NetworkUtils;
13 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200113.network.nodes.NodeInfo;
14 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.rev181130.Node1;
15 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.rev181130.Node1Builder;
16 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeBuilder;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeKey;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNode;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeBuilder;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeKey;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
27
28
29 public final class OpenRoadmNetwork {
30
31     private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmNetwork.class);
32
33     private OpenRoadmNetwork() {
34         // utility class
35     }
36
37     /**
38      * Create single node entry for OpenRoadmNetwork.
39      *
40      * @param nodeId node ID
41      * @param nodeInfo some important and general data from device
42      *
43      * @return node
44      */
45     public static Node createNode(String nodeId, NodeInfo nodeInfo) {
46
47         Node1Builder node1Bldr = new Node1Builder();
48         org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder node2Bldr =
49             new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder();
50
51         /*
52          * Recognize the node type: 1:ROADM, 2:XPONDER
53          */
54         switch (nodeInfo.getNodeType().getIntValue()) {
55             case 1:
56                 node2Bldr.setNodeType(OpenroadmNodeType.ROADM);
57                 break;
58             case 2:
59                 node2Bldr.setNodeType(OpenroadmNodeType.XPONDER);
60                 break;
61             default:
62                 LOG.error("No correponsding type for the value: {}", nodeInfo.getNodeType().getName());
63                 break;
64         }
65
66         // Sets IP, Model and Vendor information fetched from the deviceInfo
67         if (nodeInfo.getNodeIpAddress() != null) {
68             node1Bldr.setIp(nodeInfo.getNodeIpAddress());
69         }
70         if (nodeInfo.getNodeModel() != null) {
71             node1Bldr.setModel(nodeInfo.getNodeModel());
72         }
73         if (nodeInfo.getNodeVendor() != null) {
74             node1Bldr.setVendor(nodeInfo.getNodeVendor());
75         }
76
77         // Sets the value of Network-ref and Node-ref as a part of the supporting node
78         // attribute
79         SupportingNode supportingNode = new SupportingNodeBuilder()
80             .setNetworkRef(new NetworkId(NetworkUtils.CLLI_NETWORK_ID))
81             .setNodeRef(new NodeId(nodeInfo.getNodeClli()))
82             .withKey(new SupportingNodeKey(new NetworkId(NetworkUtils.CLLI_NETWORK_ID),
83                 new NodeId(nodeInfo.getNodeClli())))
84             .build();
85
86         return new NodeBuilder()
87             .setNodeId(new NodeId(nodeId))
88             .withKey(new NodeKey(new NodeId(nodeId)))
89             .setSupportingNode(ImmutableList.of(supportingNode))
90             .addAugmentation(Node1.class, node1Bldr.build())
91             .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class,
92                 node2Bldr.build())
93             .build();
94     }
95 }