Yang Definitions for Itm Scale Improvements 43/66643/9
authorHema Gopalakrishnan <hema.gopalkrishnan@ericsson.com>
Wed, 20 Dec 2017 10:12:00 +0000 (15:42 +0530)
committerVivek Srivastava <vivek.v.srivastava@ericsson.com>
Thu, 1 Feb 2018 15:45:37 +0000 (15:45 +0000)
Change-Id: I689605e35c7ee3c6b6681674c1629461693fd7bf
Signed-off-by: Hema Gopalakrishnan <hema.gopalkrishnan@ericsson.com>
commons/testutils/src/main/java/org/opendaylight/genius/testutils/itm/ItmRpcTestImpl.java
itm/itm-api/src/main/yang/itm-rpc.yang
itm/itm-api/src/main/yang/itm-state.yang
itm/itm-api/src/main/yang/odl-itm-meta.yang [new file with mode: 0644]
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/rpc/ItmManagerRpcService.java

index 4e9663f564586471be736a9bd8db49f415b0399b..dbf3e1e837d1d781a5937e7c771649da7e4a8513 100644 (file)
@@ -24,6 +24,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.D
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnEndpointIpsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnEndpointIpsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnEndpointIpsOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetEgressActionsForTunnelInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetEgressActionsForTunnelOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetExternalTunnelInterfaceNameInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetExternalTunnelInterfaceNameOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetExternalTunnelInterfaceNameOutputBuilder;
@@ -32,6 +34,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.G
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelInterfaceNameInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelInterfaceNameOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelInterfaceNameOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelTypeInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelTypeOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsDcgwPresentInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsDcgwPresentOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsDcgwPresentOutputBuilder;
@@ -41,6 +45,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.I
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelFromDpnsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveTerminatingServiceActionsInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.SetBfdEnableOnTunnelInput;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 
@@ -169,4 +174,21 @@ public final class ItmRpcTestImpl implements ItmRpcService {
     public synchronized Future<RpcResult<Void>> addExternalTunnelEndpoint(AddExternalTunnelEndpointInput input) {
         return RpcResultBuilder.<Void>success().buildFuture();
     }
+
+    @Override
+    public synchronized Future<RpcResult<Void>> setBfdEnableOnTunnel(SetBfdEnableOnTunnelInput input) {
+        return null;
+    }
+
+    @Override
+    public synchronized Future<RpcResult<GetEgressActionsForTunnelOutput>>
+        getEgressActionsForTunnel(GetEgressActionsForTunnelInput input) {
+        return null;
+    }
+
+    @Override
+    public synchronized Future<RpcResult<GetTunnelTypeOutput>> getTunnelType(GetTunnelTypeInput input) {
+        // To Do
+        return null;
+    }
 }
index 53bfcdb85b252d52da3bbdce2f75e09c7bff6644..efaa1280a982daa03ad90f94cd8b9d8851f5afba 100644 (file)
@@ -289,4 +289,67 @@ module itm-rpc {
             }
         }
 
+        rpc get-egress-actions-for-tunnel {
+            description "used to retrieve group actions to use from interface name";
+            input {
+                leaf source-node {
+                    type string;
+                    mandatory true;
+                }
+                leaf destination-node {
+                    type string;
+                    mandatory true;
+                }
+
+                leaf tunnel-type {
+                    type identityref {
+                        base odlif:tunnel-type-base;
+                    }
+                }
+            }
+            output {
+                uses action:action-list;
+            }
+        }
+
+        rpc get-tunnel-type {
+            description "to get the type of the tunnel interface(vxlan, vxlan-gpe, gre, etc.)";
+            input {
+                leaf intf-name {
+                    type string;
+                    mandatory true;
+                }
+            }
+            output {
+                leaf tunnel-type {
+                    type identityref {
+                        base odlif:tunnel-type-base;
+                    }
+                }
+            }
+        }
+
+        rpc set-bfd-enable-on-tunnel {
+            description "used for turning ON/OFF to monitor individual tunnels";
+            input {
+                leaf source-node {
+                    type string;
+                    mandatory true;
+                }
+                leaf destination-node {
+                    type string;
+                    mandatory true;
+                }
+                leaf monitoring-enabled {
+                    type boolean;
+                    mandatory true;
+                }
+                leaf monitoring-interval {
+                    type uint16 {
+                        range "1000..30000";
+                    }
+                }
+
+            }
+        }
     }
index 16dd26f34d1546a6892eefa51b28ae78ca53ee1c..ba7aca056a3f6567ae2fc2abc26912f19277bed4 100644 (file)
@@ -225,6 +225,12 @@ module itm-state {
                           base odlif:tunnel-type-base;
                       }
                   }
+                  leaf port-number {
+                      type string;
+                  }
+                  leaf if-index {
+                      type uint16;
+                  }
 
               }
             }
@@ -232,4 +238,61 @@ module itm-state {
             notification itm-tunnel-build-complete{
             }
 
-      }
+        container dpn-teps-state {
+            list dpns-teps {
+                key "source-dpn-id";
+                leaf source-dpn-id {
+                    type uint64;
+                    mandatory true;
+                }
+
+                leaf tunnel-type {
+                    type identityref {
+                        base odlif:tunnel-type-base;
+                    }
+                    mandatory true;
+                }
+
+                leaf group-id {
+                    type uint32;
+                    mandatory true;
+                }
+
+                /* Remote DPNs to which this DPN-Tep has a tunnel */
+                list remote-dpns {
+                    key "destination-dpn-id";
+                    leaf destination-dpn-id {
+                        type uint64;
+                        mandatory true;
+                    }
+
+                    leaf tunnel-name {
+                        type string;
+                        mandatory true;
+                    }
+
+                    /* This will later be changed to monitor profile id */
+                    /* The monitor profile will contain monitoring related params */
+                    leaf monitoring-enabled {
+                        type boolean;
+                        mandatory true;
+                    }
+
+                    leaf monitoring-interval {
+                        type uint16 {
+                            range "1000..30000";
+                        }
+                        mandatory true;
+                    }
+
+
+                    leaf internal {
+                        type boolean;
+                        mandatory true;
+                        description "represents whether this is an internal or external tunnel.";
+                    }
+
+                }
+            }
+        }
+}
diff --git a/itm/itm-api/src/main/yang/odl-itm-meta.yang b/itm/itm-api/src/main/yang/odl-itm-meta.yang
new file mode 100644 (file)
index 0000000..f317e5d
--- /dev/null
@@ -0,0 +1,91 @@
+module odl-itm-meta {
+    namespace "urn:opendaylight:genius:itm:meta";
+    prefix "odlitmmeta";
+
+    import ovsdb {
+        prefix southbound; revision-date "2015-01-05";
+    }
+
+    import odl-interface {
+        prefix odlif; revision-date 2016-04-06;
+    }
+
+    revision "2017-12-10" {
+        description "ODL rendering specific ITM Meta Module";
+    }
+
+    container bridge-tunnel-info {
+        description "Contains the list of dpns along with the tunnel interfaces configured on them.";
+
+        list ovs-bridge-entry {
+            key dpid;
+            leaf dpid {
+                type uint64;
+            }
+
+            leaf ovs-bridge-reference {
+                type southbound:ovsdb-bridge-ref;
+                description "This is the reference to an ovs bridge";
+            }
+            list ovs-bridge-tunnel-entry {
+                key tunnel-name;
+                leaf tunnel-name {
+                    type string;
+                }
+            }
+        }
+    }
+
+    container ovs-bridge-ref-info {
+        config false;
+        description "The container that maps dpid with ovs bridge ref in the operational DS.";
+
+        list ovs-bridge-ref-entry {
+            key dpid;
+            leaf dpid {
+                type uint64;
+            }
+
+            leaf ovs-bridge-reference {
+                type southbound:ovsdb-bridge-ref;
+                description "This is the reference to an ovs bridge";
+            }
+        }
+    }
+
+    container if-indexes-tunnel-map {
+           config false;
+           list if-index-tunnel {
+               key if-index;
+               leaf if-index {
+                   type int32;
+               }
+               leaf interface-name {
+                   type string;
+               }
+           }
+   }
+
+   container dpn-to-interface-list {
+        config false;
+        description "Contains the list of interfaces on the given dpn";
+
+        list dpn-to-interface {
+            key dpid;
+            leaf dpid {
+                type uint64;
+            }
+            list interface-name-entry {
+                key interface-name;
+                leaf interface-name {
+                    type string;
+                }
+                leaf interface-type {
+                    type identityref {
+                        base if:interface-type;
+                    }
+                }
+            }
+        }
+   }
+}
\ No newline at end of file
index 12375fadc73b1f4250a1ba60735cde09c8981655..fe82e9f9ffce01dc7a736059683b36ce0e1fc41a 100644 (file)
@@ -70,6 +70,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.D
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnEndpointIpsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnEndpointIpsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnEndpointIpsOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetEgressActionsForTunnelInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetEgressActionsForTunnelOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetExternalTunnelInterfaceNameInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetExternalTunnelInterfaceNameOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetExternalTunnelInterfaceNameOutputBuilder;
@@ -79,6 +81,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.G
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelInterfaceNameInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelInterfaceNameOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelInterfaceNameOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelTypeInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelTypeOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsDcgwPresentInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsDcgwPresentOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsDcgwPresentOutputBuilder;
@@ -89,6 +93,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.I
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelFromDpnsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveTerminatingServiceActionsInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.SetBfdEnableOnTunnelInput;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcError;
 import org.opendaylight.yangtools.yang.common.RpcResult;
@@ -157,6 +162,25 @@ public class ItmManagerRpcService implements ItmRpcService {
         return Futures.immediateFuture(resultBld.build());
     }
 
+    @Override
+    public Future<RpcResult<GetEgressActionsForTunnelOutput>> getEgressActionsForTunnel(
+            GetEgressActionsForTunnelInput input) {
+        //TODO
+        return null;
+    }
+
+    @Override
+    public Future<RpcResult<GetTunnelTypeOutput>> getTunnelType(GetTunnelTypeInput input) {
+        //TODO
+        return null;
+    }
+
+    @Override
+    public Future<RpcResult<Void>> setBfdEnableOnTunnel(SetBfdEnableOnTunnelInput input) {
+        //TODO
+        return null;
+    }
+
 
     @Override
     public Future<RpcResult<Void>> removeExternalTunnelEndpoint(
@@ -255,6 +279,7 @@ public class ItmManagerRpcService implements ItmRpcService {
                 String msg =
                         "Unable to create DcGatewayIp {} in datastore for ip " + input.getDestinationIp() + "and "
                                 + "tunnel type " + input.getTunnelType();
+
                 LOG.error(msg);
                 result.set(RpcResultBuilder.<Void>failed()
                         .withError(RpcError.ErrorType.APPLICATION, msg, error).build());