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;
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;
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;
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;
+ }
}
}
}
+ 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";
+ }
+ }
+
+ }
+ }
}
base odlif:tunnel-type-base;
}
}
+ leaf port-number {
+ type string;
+ }
+ leaf if-index {
+ type uint16;
+ }
}
}
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.";
+ }
+
+ }
+ }
+ }
+}
--- /dev/null
+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
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;
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;
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;
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(
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());