Removed some sonar warnings from pcep.
[bgpcep.git] / pcep / tunnel-provider / src / main / java / org / opendaylight / bgpcep / pcep / tunnel / provider / TunnelProgramming.java
index 37e5fb332c5789e90b62dce4404f5cab8bb77273..195f6876f1800fa2453194bab6c16394b483fb62 100644 (file)
@@ -14,22 +14,26 @@ import org.opendaylight.bgpcep.pcep.topology.spi.AbstractTopologyProgrammingExec
 import org.opendaylight.bgpcep.programming.spi.InstructionExecutor;
 import org.opendaylight.bgpcep.programming.spi.InstructionScheduler;
 import org.opendaylight.bgpcep.programming.spi.SuccessfulRpcResult;
+import org.opendaylight.bgpcep.programming.topology.TopologyProgrammingUtil;
+import org.opendaylight.bgpcep.programming.tunnel.TunnelProgrammingUtil;
 import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction;
 import org.opendaylight.controller.sal.binding.api.data.DataProviderService;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.bandwidth.object.BandwidthBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.classtype.object.ClassTypeBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.AddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.address.family.Ipv4Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.address.family.Ipv6Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.address.family.Ipv4CaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.address.family.Ipv6CaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.address.family.ipv4._case.Ipv4Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.address.family.ipv6._case.Ipv6Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.object.EndpointsObjBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.Ero;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.EroBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.ero.Subobjects;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.ero.SubobjectsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.LspaBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev130930.submit.instruction.output.result.FailureBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev130930.submit.instruction.output.result.failure.Failure;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev130930.submit.instruction.output.result.FailureCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev130930.submit.instruction.output.result.failure._case.Failure;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.AddLspInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.AddLspOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.NetworkTopologyPcepService;
@@ -39,7 +43,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.UpdateLspInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.UpdateLspOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.add.lsp.args.ArgumentsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.programming.rev131102.TopologyInstructionInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.p2p.rev130819.tunnel.p2p.path.cfg.attributes.ExplicitHops;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev131030.PcepCreateP2pTunnelInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev131030.PcepCreateP2pTunnelOutput;
@@ -55,14 +58,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev130820.ExplicitHops1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev130820.Link1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev130820.SupportingNode1;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.programming.rev130930.BaseTunnelInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.programming.rev130930.TpReference;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.LinkKey;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
@@ -102,16 +101,16 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                TpReader(final DataModificationTransaction t, final InstanceIdentifier<Topology> topo, final TpReference ref) {
                        this.t = Preconditions.checkNotNull(t);
 
-                       nii = InstanceIdentifier.builder(topo).node(Node.class, new NodeKey(ref.getNode())).toInstance();
-                       tii = InstanceIdentifier.builder(nii).node(TerminationPoint.class, new TerminationPointKey(ref.getTp())).toInstance();
+                       this.nii = InstanceIdentifier.builder(topo).child(Node.class, new NodeKey(ref.getNode())).toInstance();
+                       this.tii = InstanceIdentifier.builder(this.nii).child(TerminationPoint.class, new TerminationPointKey(ref.getTp())).toInstance();
                }
 
                private Node getNode() {
-                       return (Node) t.readOperationalData(nii);
+                       return (Node) this.t.readOperationalData(this.nii);
                }
 
                private TerminationPoint getTp() {
-                       return (TerminationPoint) t.readOperationalData(tii);
+                       return (TerminationPoint) this.t.readOperationalData(this.tii);
                }
        }
 
@@ -152,9 +151,8 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                        if (sc.getIpv4Address() != null) {
                                for (final IpAddress dc : dsts) {
                                        if (dc.getIpv4Address() != null) {
-                                               return new Ipv4Builder().
-                                                               setSourceIpv4Address(sc.getIpv4Address()).
-                                                               setDestinationIpv4Address(dc.getIpv4Address()).build();
+                                               return new Ipv4CaseBuilder().setIpv4(
+                                                               new Ipv4Builder().setSourceIpv4Address(sc.getIpv4Address()).setDestinationIpv4Address(dc.getIpv4Address()).build()).build();
                                        }
                                }
                        }
@@ -168,9 +166,8 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                        if (sc.getIpv6Address() != null) {
                                for (final IpAddress dc : dsts) {
                                        if (dc.getIpv6Address() != null) {
-                                               return new Ipv6Builder().
-                                                               setSourceIpv6Address(sc.getIpv6Address()).
-                                                               setDestinationIpv6Address(dc.getIpv6Address()).build();
+                                               return new Ipv6CaseBuilder().setIpv6(
+                                                               new Ipv6Builder().setSourceIpv6Address(sc.getIpv6Address()).setDestinationIpv6Address(dc.getIpv6Address()).build()).build();
                                        }
                                }
                        }
@@ -179,8 +176,8 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                return null;
        }
 
-       private NodeId supportingNode(final DataModificationTransaction t, final Node node) {
-               for (SupportingNode n : node.getSupportingNode()) {
+       private NodeId supportingNode(final Node node) {
+               for (final SupportingNode n : node.getSupportingNode()) {
                        final SupportingNode1 n1 = n.getAugmentation(SupportingNode1.class);
                        if (n1 != null && n1.getPathComputationClient().isControlling()) {
                                return n.getKey().getNodeRef();
@@ -195,7 +192,7 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
 
                if (!explicitHops.isEmpty()) {
                        final List<Subobjects> subobjs = new ArrayList<>(explicitHops.size());
-                       for (ExplicitHops h : explicitHops) {
+                       for (final ExplicitHops h : explicitHops) {
 
                                final ExplicitHops1 h1 = h.getAugmentation(ExplicitHops1.class);
                                if (h1 != null) {
@@ -217,10 +214,9 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                final InstructionExecutor e = new AbstractTopologyProgrammingExecutor() {
                        @Override
                        protected ListenableFuture<OperationResult> executeImpl() {
-                               final InstanceIdentifier<Topology> tii = topologyIdentifier(input);
-
-                               final DataModificationTransaction t = dataProvider.beginTransaction();
+                               final InstanceIdentifier<Topology> tii = TopologyProgrammingUtil.topologyForInput(input);
 
+                               final DataModificationTransaction t = TunnelProgramming.this.dataProvider.beginTransaction();
 
                                final TpReader dr = new TpReader(t, tii, input.getDestination());
                                final TpReader sr = new TpReader(t, tii, input.getSource());
@@ -230,7 +226,7 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                                final TerminationPoint dp = Preconditions.checkNotNull(dr.getTp());
 
                                final AddLspInputBuilder ab = new AddLspInputBuilder();
-                               ab.setNode(Preconditions.checkNotNull(supportingNode(t, sn)));
+                               ab.setNode(Preconditions.checkNotNull(supportingNode(sn)));
                                ab.setName(Preconditions.checkNotNull(input.getSymbolicPathName()));
 
                                // The link has to be non-existent
@@ -248,7 +244,7 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                                ab.setArguments(args.build());
 
                                return Futures.transform(
-                                               (ListenableFuture<RpcResult<AddLspOutput>>) topologyService.addLsp(ab.build()),
+                                               (ListenableFuture<RpcResult<AddLspOutput>>) TunnelProgramming.this.topologyService.addLsp(ab.build()),
                                                new Function<RpcResult<AddLspOutput>, OperationResult>() {
                                                        @Override
                                                        public OperationResult apply(final RpcResult<AddLspOutput> input) {
@@ -261,28 +257,16 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                final Failure f = this.scheduler.submitInstruction(input, e);
                final PcepCreateP2pTunnelOutputBuilder b = new PcepCreateP2pTunnelOutputBuilder();
                if (f != null) {
-                       b.setResult(new FailureBuilder().setFailure(f).build());
+                       b.setResult(new FailureCaseBuilder().setFailure(f).build());
                }
 
                final RpcResult<PcepCreateP2pTunnelOutput> res = SuccessfulRpcResult.create(b.build());
                return Futures.immediateFuture(res);
        }
 
-       // FIXME: topology programming utility class
-       private InstanceIdentifier<Topology> topologyIdentifier(final TopologyInstructionInput input) {
-               return InstanceIdentifier.builder().
-                               node(NetworkTopology.class).child(Topology.class, new TopologyKey(input.getTopologyId())).toInstance();
-       }
-
-       // FIXME: tunnel programming utility class
-       private InstanceIdentifier<Link> linkIdentifier(final InstanceIdentifier<Topology> topology, final BaseTunnelInput input) {
-               return InstanceIdentifier.builder(topology).
-                               child(Link.class, new LinkKey(Preconditions.checkNotNull(input.getLinkId()))).toInstance();
-       }
-
        private Node sourceNode(final DataModificationTransaction t, final InstanceIdentifier<Topology> topology, final Link link) {
-               final InstanceIdentifier<Node> nii = InstanceIdentifier.builder(topology).
-                               child(Node.class, new NodeKey(link.getSource().getSourceNode())).toInstance();
+               final InstanceIdentifier<Node> nii = InstanceIdentifier.builder(topology).child(Node.class,
+                               new NodeKey(link.getSource().getSourceNode())).toInstance();
                return (Node) t.readOperationalData(nii);
        }
 
@@ -291,10 +275,10 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                final InstructionExecutor e = new AbstractTopologyProgrammingExecutor() {
                        @Override
                        protected ListenableFuture<OperationResult> executeImpl() {
-                               final InstanceIdentifier<Topology> tii = topologyIdentifier(input);
-                               final InstanceIdentifier<Link> lii = linkIdentifier(tii, input);
+                               final InstanceIdentifier<Topology> tii = TopologyProgrammingUtil.topologyForInput(input);
+                               final InstanceIdentifier<Link> lii = TunnelProgrammingUtil.linkIdentifier(tii, input);
 
-                               final DataModificationTransaction t = dataProvider.beginTransaction();
+                               final DataModificationTransaction t = TunnelProgramming.this.dataProvider.beginTransaction();
 
                                // The link has to exist
                                final Link link = (Link) t.readOperationalData(lii);
@@ -309,7 +293,7 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                                ab.setNode(node.getSupportingNode().get(0).getKey().getNodeRef());
 
                                return Futures.transform(
-                                               (ListenableFuture<RpcResult<RemoveLspOutput>>) topologyService.removeLsp(ab.build()),
+                                               (ListenableFuture<RpcResult<RemoveLspOutput>>) TunnelProgramming.this.topologyService.removeLsp(ab.build()),
                                                new Function<RpcResult<RemoveLspOutput>, OperationResult>() {
                                                        @Override
                                                        public OperationResult apply(final RpcResult<RemoveLspOutput> input) {
@@ -322,7 +306,7 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                final Failure f = this.scheduler.submitInstruction(input, e);
                final PcepDestroyTunnelOutputBuilder b = new PcepDestroyTunnelOutputBuilder();
                if (f != null) {
-                       b.setResult(new FailureBuilder().setFailure(f).build());
+                       b.setResult(new FailureCaseBuilder().setFailure(f).build());
                }
 
                final RpcResult<PcepDestroyTunnelOutput> res = SuccessfulRpcResult.create(b.build());
@@ -334,10 +318,10 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                final InstructionExecutor e = new AbstractTopologyProgrammingExecutor() {
                        @Override
                        protected ListenableFuture<OperationResult> executeImpl() {
-                               final InstanceIdentifier<Topology> tii = topologyIdentifier(input);
-                               final InstanceIdentifier<Link> lii = linkIdentifier(tii, input);
+                               final InstanceIdentifier<Topology> tii = TopologyProgrammingUtil.topologyForInput(input);
+                               final InstanceIdentifier<Link> lii = TunnelProgrammingUtil.linkIdentifier(tii, input);
 
-                               final DataModificationTransaction t = dataProvider.beginTransaction();
+                               final DataModificationTransaction t = TunnelProgramming.this.dataProvider.beginTransaction();
 
                                // The link has to exist
                                final Link link = (Link) t.readOperationalData(lii);
@@ -349,10 +333,9 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
 
                                final UpdateLspInputBuilder ab = new UpdateLspInputBuilder();
                                ab.setName(link.getAugmentation(Link1.class).getSymbolicPathName());
-                               ab.setNode(Preconditions.checkNotNull(supportingNode(t, node)));
+                               ab.setNode(Preconditions.checkNotNull(supportingNode(node)));
 
-                               final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.update.lsp.args.ArgumentsBuilder args =
-                                               new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.update.lsp.args.ArgumentsBuilder();
+                               final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.update.lsp.args.ArgumentsBuilder args = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.update.lsp.args.ArgumentsBuilder();
 
                                args.setAdministrative(input.getAdministrativeStatus() == AdministrativeStatus.Active);
                                args.setBandwidth(new BandwidthBuilder().setBandwidth(input.getBandwidth()).build());
@@ -363,7 +346,7 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                                ab.setArguments(args.build());
 
                                return Futures.transform(
-                                               (ListenableFuture<RpcResult<UpdateLspOutput>>) topologyService.updateLsp(ab.build()),
+                                               (ListenableFuture<RpcResult<UpdateLspOutput>>) TunnelProgramming.this.topologyService.updateLsp(ab.build()),
                                                new Function<RpcResult<UpdateLspOutput>, OperationResult>() {
                                                        @Override
                                                        public OperationResult apply(final RpcResult<UpdateLspOutput> input) {
@@ -376,7 +359,7 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                final Failure f = this.scheduler.submitInstruction(input, e);
                final PcepUpdateTunnelOutputBuilder b = new PcepUpdateTunnelOutputBuilder();
                if (f != null) {
-                       b.setResult(new FailureBuilder().setFailure(f).build());
+                       b.setResult(new FailureCaseBuilder().setFailure(f).build());
                }
 
                final RpcResult<PcepUpdateTunnelOutput> res = SuccessfulRpcResult.create(b.build());
@@ -385,6 +368,6 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
 
        @Override
        public void close() {
-               // FIXME: remove all scheduled instructions, etc.
+               // FIXME: BUG-186: remove all scheduled instructions, etc.
        }
 }