summaryrefslogtreecommitdiffstats
path: root/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/TapCustomizer.java
diff options
context:
space:
mode:
authorMarek Gradzki <mgradzki@cisco.com>2016-12-14 06:43:26 +0100
committerMarek Gradzki <mgradzki@cisco.com>2016-12-14 12:29:58 +0100
commit01619036de54215d1d6d03dd033abfc1f9bdfdf5 (patch)
tree2fae299e09d86303c60523c2876eb17a5fb8aa67 /v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/TapCustomizer.java
parentbbdedfea03d7977165c662fdbb9c4df645df3708 (diff)
HONEYCOMB-314: expose tag for tap and vlan interfaces
It is possible that interface creation for will succeed in VPP, but Honeycomb crashes or request timeouts. In such situations, interface name stored in Honeycomb's cache will not be updated. After restarting Honeycomb, interface name will be generated. In such cases Honeycomb user can use tag to identify interface. Change-Id: I673c52e49dc788c761af471399d2ac839f62be04 Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
Diffstat (limited to 'v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/TapCustomizer.java')
-rw-r--r--v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/TapCustomizer.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/TapCustomizer.java b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/TapCustomizer.java
index 220fb95e8..a22a0d429 100644
--- a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/TapCustomizer.java
+++ b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/TapCustomizer.java
@@ -29,6 +29,7 @@ import io.fd.vpp.jvpp.core.dto.TapDeleteReply;
import io.fd.vpp.jvpp.core.dto.TapModify;
import io.fd.vpp.jvpp.core.dto.TapModifyReply;
import io.fd.vpp.jvpp.core.future.FutureJVppCore;
+import java.nio.charset.StandardCharsets;
import java.util.concurrent.CompletionStage;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfaceType;
@@ -98,7 +99,7 @@ public class TapCustomizer extends AbstractInterfaceTypeCustomizer<Tap> implemen
final WriteContext writeContext) throws WriteFailedException {
LOG.debug("Setting tap interface: {}. Tap: {}", swIfName, tap);
final CompletionStage<TapConnectReply> tapConnectFuture = getFutureJVpp()
- .tapConnect(getTapConnectRequest(tap.getTapName(), tap.getMac(), tap.getDeviceInstance()));
+ .tapConnect(getTapConnectRequest(tap));
final TapConnectReply reply = getReplyForCreate(tapConnectFuture.toCompletableFuture(), id, tap);
LOG.debug("Tap set successfully for: {}, tap: {}", swIfName, tap);
// Add new interface to our interface context
@@ -128,10 +129,11 @@ public class TapCustomizer extends AbstractInterfaceTypeCustomizer<Tap> implemen
interfaceContext.removeName(swIfName, writeContext.getMappingContext());
}
- private TapConnect getTapConnectRequest(final String tapName, final PhysAddress mac, final Long deviceInstance) {
+ private TapConnect getTapConnectRequest(final Tap tap) {
final TapConnect tapConnect = new TapConnect();
- tapConnect.tapName = tapName.getBytes();
+ tapConnect.tapName = tap.getTapName().getBytes();
+ final PhysAddress mac = tap.getMac();
if (mac == null) {
tapConnect.useRandomMac = 1;
tapConnect.macAddress = new byte[6];
@@ -140,6 +142,7 @@ public class TapCustomizer extends AbstractInterfaceTypeCustomizer<Tap> implemen
tapConnect.macAddress = parseMac(mac.getValue());
}
+ final Long deviceInstance = tap.getDeviceInstance();
if (deviceInstance == null) {
tapConnect.renumber = 0;
} else {
@@ -147,6 +150,11 @@ public class TapCustomizer extends AbstractInterfaceTypeCustomizer<Tap> implemen
tapConnect.customDevInstance = Math.toIntExact(deviceInstance);
}
+ final String tag = tap.getTag();
+ if (tag != null) {
+ tapConnect.tag = tag.getBytes(StandardCharsets.US_ASCII);
+ }
+
return tapConnect;
}