HC2VPP-176: add support for api-segment prefix 76/13476/2
authorMarek Gradzki <[email protected]>
Mon, 16 Jul 2018 07:05:42 +0000 (09:05 +0200)
committerMarek Gradzki <[email protected]>
Tue, 17 Jul 2018 18:40:00 +0000 (18:40 +0000)
VPP can be run with custom SHM segment prefix:

sudo vpp unix {cli-listen /run/vpp/cli-vpp1.sock} api-segment { prefix vpp1 }
sudo vppctl -s /run/vpp/cli-vpp1.sock

this patch adds optional api-segment-prefix parameter to
/opt/honeycomb/config/jvpp.json file.

Example configuration:

{
  "jvpp-connection-name": "honeycomb",
  "api-segment-prefix": "vpp1",
  "jvpp-request-timeout": 5
}

Change-Id: I7ca298644891602afe7898db88bb90d59b49ce4d
Signed-off-by: Marek Gradzki <[email protected]>
vpp-common/vpp-common-integration/src/main/java/io/fd/hc2vpp/common/integration/JVppRegistryProvider.java
vpp-common/vpp-common-integration/src/main/java/io/fd/hc2vpp/common/integration/VppConfigAttributes.java

index 300e038..1432f2c 100644 (file)
@@ -16,6 +16,9 @@
 
 package io.fd.hc2vpp.common.integration;
 
+import static com.google.common.base.Preconditions.checkState;
+import static java.lang.String.format;
+
 import com.google.common.base.Charsets;
 import com.google.common.io.CharStreams;
 import com.google.common.primitives.UnsignedInts;
@@ -25,15 +28,11 @@ import io.fd.honeycomb.data.init.ShutdownHandler;
 import io.fd.vpp.jvpp.JVppRegistry;
 import io.fd.vpp.jvpp.JVppRegistryImpl;
 import io.fd.vpp.jvpp.VppJNIConnection;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import java.io.BufferedInputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
-
-import static com.google.common.base.Preconditions.checkState;
-import static java.lang.String.format;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Provides JVppRegistry. Must be a singleton due to shutdown hook usage. Registers shutdown hook to disconnect from
@@ -54,7 +53,13 @@ public final class JVppRegistryProvider extends ProviderTrait<JVppRegistry> {
     protected JVppRegistry create() {
         final JVppRegistry registry;
         try {
-            registry = new JVppRegistryImpl(config.jvppConnectionName);
+            if (config.apiSegmentPrefix.isPresent()) {
+                // TODO(VPP-1342): JVppRegistryImpl requires full SHM region name
+                final String shmName = String.format("/%s-vpe-api", config.apiSegmentPrefix.get());
+                registry = new JVppRegistryImpl(config.jvppConnectionName, shmName);
+            } else {
+                registry = new JVppRegistryImpl(config.jvppConnectionName);
+            }
             connectedVppPid = initConnectedVppPid(registry);
             shutdownHandler.register("jvpp-registry", () -> {
                 // Closing JVpp connection with shutdown hook to erase the connection from VPP so HC will be able
index 9c351cb..ba1a843 100644 (file)
@@ -16,6 +16,7 @@
 
 package io.fd.hc2vpp.common.integration;
 
+import java.util.Optional;
 import net.jmob.guice.conf.core.BindConfig;
 import net.jmob.guice.conf.core.InjectConfig;
 import net.jmob.guice.conf.core.Syntax;
@@ -26,6 +27,9 @@ public class VppConfigAttributes {
     @InjectConfig("jvpp-connection-name")
     public String jvppConnectionName;
 
+    @InjectConfig("api-segment-prefix")
+    public Optional<String> apiSegmentPrefix;
+
     @InjectConfig("jvpp-request-timeout")
     public int jvppRequestTimeout;
 }