Do not override LSP arguments when updating LSP. Make LSP mandatory object in update... 00/7900/3
authorDana Kutenicsova <dkutenic@cisco.com>
Wed, 11 Jun 2014 08:14:19 +0000 (10:14 +0200)
committerDana Kutenicsova <dkutenic@cisco.com>
Wed, 11 Jun 2014 16:05:24 +0000 (18:05 +0200)
Change-Id: I948ecbff10b83b7b91795c1e936ff5e220712fbc
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
pcep/ietf-stateful07/src/main/yang/odl-pcep-ietf-stateful07.yang
pcep/topology-api/src/main/yang/network-topology-pcep.yang
pcep/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/Stateful07TopologySessionListener.java
pcep/tunnel-provider/src/main/java/org/opendaylight/bgpcep/pcep/tunnel/provider/TunnelProgramming.java

index 9a3c2b347a3c293574b0212e9f805fea31d2a049..a1d43bfbd50be28c4e5cdc894e537c68ad33bfe7 100644 (file)
@@ -343,6 +343,11 @@ module odl-pcep-ietf-stateful07 {
         uses lsp-object;
     }
 
+    augment "/topo:update-lsp/topo:input/topo:arguments" {
+        ext:augment-identifier arguments-3;
+        uses lsp-object;
+    }
+
     typedef administrative-status {
         type enumeration {
             enum active;
index a87df613420fed7ca8d01b381253c3c1ff2e5b1e..658a99c66ba84bc79d75a32e22cf841859ac6b32 100644 (file)
@@ -152,10 +152,6 @@ module network-topology-pcep {
         uses lsp-id;
 
         container arguments {
-            leaf administrative {
-                type boolean;
-                default true;
-            }
 
             uses pcep:endpoints-object;
 
@@ -193,10 +189,6 @@ module network-topology-pcep {
         uses lsp-id;
 
         container arguments {
-            leaf administrative {
-                type boolean;
-                default true;
-            }
 
             uses pcep:path-definition;
 
index 4425f21a62d935f28988c21e272043ee12f16a49..327c413c3fcfd3f3affba8730e8b57ea12b3566f 100644 (file)
@@ -27,6 +27,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.cra
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.pcinitiate.message.pcinitiate.message.RequestsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Arguments1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Arguments2;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Arguments3;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.OperationalStatus;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PcrptMessage;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PcupdBuilder;
@@ -276,7 +277,12 @@ final class Stateful07TopologySessionListener extends AbstractTopologySessionLis
         // Build the PCUpd request and send it
         final UpdatesBuilder rb = new UpdatesBuilder();
         rb.setSrp(new SrpBuilder().setOperationId(nextRequest()).setProcessingRule(Boolean.TRUE).build());
-        rb.setLsp(new LspBuilder().setPlspId(reportedLsp.getPlspId()).setDelegate(reportedLsp.isDelegate()).build());
+        Lsp inputLsp = input.getArguments().getAugmentation(Arguments3.class).getLsp();
+        if (inputLsp != null) {
+            rb.setLsp(new LspBuilder().setPlspId(reportedLsp.getPlspId()).setDelegate((inputLsp.isDelegate() != null) ? inputLsp.isDelegate() : false).setTlvs(inputLsp.getTlvs()).setAdministrative((inputLsp.isAdministrative() != null) ? inputLsp.isAdministrative() : false).build());
+        } else {
+            rb.setLsp(new LspBuilder().setPlspId(reportedLsp.getPlspId()).build());
+        }
         final PathBuilder pb = new PathBuilder();
         pb.fieldsFrom(input.getArguments());
         rb.setPath(pb.build());
index db1f9122c9fe0c731f38c9e7ebca6ae4a3353c20..1668b986ef1866414ab24d27ef1453b97b014782 100644 (file)
@@ -24,8 +24,13 @@ import org.opendaylight.controller.sal.binding.api.data.DataModificationTransact
 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.ietf.stateful.rev131222.AdministrativeStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Arguments2;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Arguments2Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Arguments3;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Arguments3Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PcepCreateP2pTunnelInput1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PcepUpdateTunnelInput1;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.LspBuilder;
 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;
@@ -211,7 +216,7 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
     @Override
     public ListenableFuture<RpcResult<PcepCreateP2pTunnelOutput>> pcepCreateP2pTunnel(final PcepCreateP2pTunnelInput input) {
         final PcepCreateP2pTunnelOutputBuilder b = new PcepCreateP2pTunnelOutputBuilder();
-        b.setResult(AbstractInstructionExecutor.schedule(scheduler, new AbstractInstructionExecutor(input) {
+        b.setResult(AbstractInstructionExecutor.schedule(this.scheduler, new AbstractInstructionExecutor(input) {
             @Override
             protected ListenableFuture<OperationResult> invokeOperation() {
                 final InstanceIdentifier<Topology> tii = TopologyProgrammingUtil.topologyForInput(input);
@@ -240,9 +245,9 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                 args.setEro(buildEro(input.getExplicitHops()));
                 args.setLspa(new LspaBuilder(input).build());
 
-                final PcepCreateP2pTunnelInput1 ia = input.getAugmentation(PcepCreateP2pTunnelInput1.class);
-                if (ia != null) {
-                    args.setAdministrative(ia.getAdministrativeStatus() == AdministrativeStatus.Active);
+                AdministrativeStatus adminStatus = input.getAugmentation(PcepCreateP2pTunnelInput1.class).getAdministrativeStatus();
+                if (adminStatus != null) {
+                    args.addAugmentation(Arguments2.class, new Arguments2Builder().setLsp(new LspBuilder().setAdministrative((adminStatus == AdministrativeStatus.Active) ? true : false).build()).build());
                 }
 
                 ab.setArguments(args.build());
@@ -269,7 +274,7 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
     @Override
     public ListenableFuture<RpcResult<PcepDestroyTunnelOutput>> pcepDestroyTunnel(final PcepDestroyTunnelInput input) {
         final PcepDestroyTunnelOutputBuilder b = new PcepDestroyTunnelOutputBuilder();
-        b.setResult(AbstractInstructionExecutor.schedule(scheduler, new AbstractInstructionExecutor(input) {
+        b.setResult(AbstractInstructionExecutor.schedule(this.scheduler, new AbstractInstructionExecutor(input) {
             @Override
             protected ListenableFuture<OperationResult> invokeOperation() {
                 final InstanceIdentifier<Topology> tii = TopologyProgrammingUtil.topologyForInput(input);
@@ -307,7 +312,7 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
     @Override
     public ListenableFuture<RpcResult<PcepUpdateTunnelOutput>> pcepUpdateTunnel(final PcepUpdateTunnelInput input) {
         final PcepUpdateTunnelOutputBuilder b = new PcepUpdateTunnelOutputBuilder();
-        b.setResult(AbstractInstructionExecutor.schedule(scheduler, new AbstractInstructionExecutor(input) {
+        b.setResult(AbstractInstructionExecutor.schedule(this.scheduler, new AbstractInstructionExecutor(input) {
             @Override
             protected ListenableFuture<OperationResult> invokeOperation() {
 
@@ -334,9 +339,9 @@ public final class TunnelProgramming implements TopologyTunnelPcepProgrammingSer
                 args.setEro(buildEro(input.getExplicitHops()));
                 args.setLspa(new LspaBuilder(input).build());
 
-                final PcepUpdateTunnelInput1 ia = input.getAugmentation(PcepUpdateTunnelInput1.class);
-                if (ia != null) {
-                    args.setAdministrative(ia.getAdministrativeStatus() == AdministrativeStatus.Active);
+                AdministrativeStatus adminStatus = input.getAugmentation(PcepUpdateTunnelInput1.class).getAdministrativeStatus();
+                if (adminStatus != null) {
+                    args.addAugmentation(Arguments3.class, new Arguments3Builder().setLsp(new LspBuilder().setAdministrative((adminStatus == AdministrativeStatus.Active) ? true : false).build()).build());
                 }
 
                 ab.setArguments(args.build());