Network topology and inventory init
[transportpce.git] / networkmodel / src / main / java / org / opendaylight / transportpce / networkmodel / NetworkUtilsImpl.java
1 /*
2  * Copyright © 2017 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 package org.opendaylight.transportpce.networkmodel;
9
10 import java.util.concurrent.Future;
11
12 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
13 import org.opendaylight.transportpce.networkmodel.util.OpenRoadmTopology;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.networkutils.rev170818.InitRdmXpdrLinksInput;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.networkutils.rev170818.InitRdmXpdrLinksOutput;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.networkutils.rev170818.InitRdmXpdrLinksOutputBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.networkutils.rev170818.InitRoadmNodesInput;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.networkutils.rev170818.InitRoadmNodesOutput;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.networkutils.rev170818.InitRoadmNodesOutputBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.networkutils.rev170818.InitXpdrRdmLinksInput;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.networkutils.rev170818.InitXpdrRdmLinksOutput;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.networkutils.rev170818.InitXpdrRdmLinksOutputBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.networkutils.rev170818.NetworkutilsService;
24 import org.opendaylight.yangtools.yang.common.RpcResult;
25 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
28
29 public class NetworkUtilsImpl implements NetworkutilsService {
30
31     private static final Logger LOG = LoggerFactory.getLogger(NetworkUtilsImpl.class);
32     private final DataBroker dataBroker;
33     private final OpenRoadmTopology openRoadmTopology;
34
35     public NetworkUtilsImpl(DataBroker dataBroker, OpenRoadmTopology openRoadmTopology) {
36         this.dataBroker = dataBroker;
37         this.openRoadmTopology = openRoadmTopology;
38     }
39
40     public Future<RpcResult<InitRoadmNodesOutput>> initRoadmNodes(InitRoadmNodesInput input) {
41         boolean createRdmLinks = OrdLink.createRdm2RdmLinks(input,
42                 openRoadmTopology,dataBroker);
43         if (createRdmLinks) {
44             return RpcResultBuilder
45                     .success(new InitRoadmNodesOutputBuilder().setResult(
46                             "Unidirectional Roadm-to-Roadm Link created successfully"))
47                     .buildFuture();
48         } else {
49             return RpcResultBuilder.<InitRoadmNodesOutput>failed().buildFuture();
50         }
51     }
52
53     @Override
54     public Future<RpcResult<InitXpdrRdmLinksOutput>> initXpdrRdmLinks(InitXpdrRdmLinksInput input) {
55         // Assigns user provided input in init-network-view RPC to nodeId
56         boolean createXpdrRdmLinks = Rdm2XpdrLink.createXpdrRdmLinks(input.getLinksInput(),
57                 openRoadmTopology,dataBroker);
58         if (createXpdrRdmLinks) {
59             return RpcResultBuilder
60                     .success(new InitXpdrRdmLinksOutputBuilder().setResult("Xponder Roadm Link created successfully"))
61                     .buildFuture();
62         } else {
63             return RpcResultBuilder.<InitXpdrRdmLinksOutput>failed().buildFuture();
64         }
65     }
66
67     public Future<RpcResult<InitRdmXpdrLinksOutput>> initRdmXpdrLinks(InitRdmXpdrLinksInput input) {
68         boolean createRdmXpdrLinks = Rdm2XpdrLink.createRdmXpdrLinks(input.getLinksInput(),
69                 openRoadmTopology,dataBroker);
70         if (createRdmXpdrLinks) {
71             return RpcResultBuilder
72                     .success(new InitRdmXpdrLinksOutputBuilder().setResult("Roadm Xponder links created successfully"))
73                     .buildFuture();
74         } else {
75             return RpcResultBuilder.<InitRdmXpdrLinksOutput>failed().buildFuture();
76         }
77     }
78 }