summaryrefslogtreecommitdiffstats
path: root/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/RoutingCustomizer.java
diff options
context:
space:
mode:
authorJan Srnicek <jsrnicek@cisco.com>2016-10-05 12:05:18 +0200
committerMaros Marsalek <mmarsale@cisco.com>2016-10-05 11:06:46 +0000
commit512143ddd9995d16d9bb055481721fa276ccfa01 (patch)
tree73011be47f67f21744ce0f8dc58a1619d7b52919 /v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/RoutingCustomizer.java
parenteec7196453949fa331b71a822959dbc2b0773621 (diff)
HONEYCOMB-176 : Implemented delete for Routing
Change-Id: Idbf139773441e72e47c49518235b03a71e398acf Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
Diffstat (limited to 'v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/RoutingCustomizer.java')
-rw-r--r--v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/RoutingCustomizer.java34
1 files changed, 28 insertions, 6 deletions
diff --git a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/RoutingCustomizer.java b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/RoutingCustomizer.java
index a68baa06a..8b93f7551 100644
--- a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/RoutingCustomizer.java
+++ b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/RoutingCustomizer.java
@@ -23,15 +23,15 @@ import io.fd.honeycomb.translate.vpp.util.NamingContext;
import io.fd.honeycomb.translate.vpp.util.WriteTimeoutException;
import io.fd.honeycomb.translate.write.WriteContext;
import io.fd.honeycomb.translate.write.WriteFailedException;
+import io.fd.vpp.jvpp.VppBaseCallException;
+import io.fd.vpp.jvpp.core.dto.SwInterfaceSetTable;
+import io.fd.vpp.jvpp.core.dto.SwInterfaceSetTableReply;
+import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import java.util.concurrent.CompletionStage;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.Routing;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import io.fd.vpp.jvpp.VppBaseCallException;
-import io.fd.vpp.jvpp.core.dto.SwInterfaceSetTable;
-import io.fd.vpp.jvpp.core.dto.SwInterfaceSetTableReply;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -76,8 +76,15 @@ public class RoutingCustomizer extends FutureJVppCustomizer implements WriterCus
@Override
public void deleteCurrentAttributes(@Nonnull final InstanceIdentifier<Routing> id,
- @Nonnull final Routing dataBefore, @Nonnull final WriteContext writeContext) {
- // TODO HONEYCOMB-176 implement delete
+ @Nonnull final Routing dataBefore, @Nonnull final WriteContext writeContext)
+ throws WriteFailedException {
+ final String ifName = id.firstKeyOf(Interface.class).getName();
+ try {
+ disableRouting(id, ifName, writeContext);
+ } catch (VppBaseCallException e) {
+ LOG.warn("Failed to disable routing for interface: {}, {}", ifName, writeContext);
+ throw new WriteFailedException.DeleteFailedException(id, e);
+ }
}
private void setRouting(final InstanceIdentifier<Routing> id, final String name, final Routing rt,
@@ -98,6 +105,21 @@ public class RoutingCustomizer extends FutureJVppCustomizer implements WriterCus
}
}
+ /**
+ * In this case, there is no such thing as delete routing,only thing that can be done is to disable it by setting
+ * default value 0
+ */
+ private void disableRouting(final InstanceIdentifier<Routing> id, final String name,
+ final WriteContext writeContext) throws VppBaseCallException, WriteTimeoutException {
+ final int swIfc = interfaceContext.getIndex(name, writeContext.getMappingContext());
+ LOG.debug("Disabling routing for interface: {}, {}.", name, swIfc);
+
+ getReplyForWrite(getFutureJVpp()
+ .swInterfaceSetTable(getInterfaceSetTableRequest(swIfc, (byte) 0, 0)).toCompletableFuture(), id);
+ LOG.debug("Routing for interface: {}, {} successfully disabled", name, swIfc);
+
+ }
+
private SwInterfaceSetTable getInterfaceSetTableRequest(final int swIfc, final byte isIpv6, final int vrfId) {
final SwInterfaceSetTable swInterfaceSetTable = new SwInterfaceSetTable();
swInterfaceSetTable.isIpv6 = isIpv6;