diff options
author | Marek Gradzki <mgradzki@cisco.com> | 2016-10-31 14:37:57 +0100 |
---|---|---|
committer | Marek Gradzki <mgradzki@cisco.com> | 2016-10-31 15:46:07 +0100 |
commit | 51d5709128535d4da018f6ed7570877de6d6f405 (patch) | |
tree | c69ff13d9c3866d7546a921862d7ea7e7620ebf9 | |
parent | af201b3a66219b74b684c91895bce30189ccb245 (diff) |
HONEYCOMB-70: add control ping to vpp-state
Change-Id: I7f02841d899465fd2156db0bb79fcc490cd4929f
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
4 files changed, 31 insertions, 4 deletions
diff --git a/v3po/api/src/main/yang/v3po.yang b/v3po/api/src/main/yang/v3po.yang index 6d6d58df9..d3869abaf 100644 --- a/v3po/api/src/main/yang/v3po.yang +++ b/v3po/api/src/main/yang/v3po.yang @@ -8,7 +8,8 @@ module v3po { "This revision adds the following new features: - ingress/egress ACLs support - moved ACL definitions to vpp-acl module - - updated l2 container constraint (permit IP address on BVI interface)"; + - updated l2 container constraint (permit IP address on BVI interface) + - added PID of vpp process to vpp-state"; } revision "2015-01-05" { @@ -639,6 +640,11 @@ module v3po { leaf branch { type string; } + leaf pid { + type uint32; + description + "PID of the vpp process"; + } description "vlib version info"; } diff --git a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/vppstate/VersionCustomizer.java b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/vppstate/VersionCustomizer.java index 71826dcb4..dfa0f9632 100644 --- a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/vppstate/VersionCustomizer.java +++ b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/vppstate/VersionCustomizer.java @@ -16,6 +16,7 @@ package io.fd.honeycomb.translate.v3po.vppstate; +import com.google.common.primitives.UnsignedInts; import io.fd.honeycomb.translate.read.ReadContext; import io.fd.honeycomb.translate.read.ReadFailedException; import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; @@ -25,6 +26,9 @@ import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer; import io.fd.vpp.jvpp.core.dto.ShowVersion; import io.fd.vpp.jvpp.core.dto.ShowVersionReply; import io.fd.vpp.jvpp.core.future.FutureJVppCore; +import io.fd.vpp.jvpp.dto.ControlPing; +import io.fd.vpp.jvpp.dto.ControlPingReply; +import io.fd.vpp.jvpp.dto.JVppReply; import java.util.concurrent.CompletionStage; import javax.annotation.Nonnull; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev161214.VppStateBuilder; @@ -54,7 +58,7 @@ public final class VersionCustomizer } @Override - public void readCurrentAttributes(@Nonnull InstanceIdentifier<Version> id, @Nonnull final VersionBuilder builder, + public void readCurrentAttributes(@Nonnull final InstanceIdentifier<Version> id, @Nonnull final VersionBuilder builder, @Nonnull final ReadContext context) throws ReadFailedException { // Execute with timeout @@ -65,6 +69,14 @@ public final class VersionCustomizer builder.setName(toString(reply.program)); builder.setBuildDate(toString(reply.buildDate)); builder.setBuildDirectory(toString(reply.buildDirectory)); + builder.setPid(getPid(id)); } + private Long getPid(@Nonnull final InstanceIdentifier<Version> id) throws ReadFailedException { + final CompletionStage<JVppReply<ControlPing>> request = getFutureJVpp().send(new ControlPing()); + final ControlPingReply reply = (ControlPingReply)getReplyForRead(request.toCompletableFuture(), id); + return UnsignedInts.toLong(reply.vpePid); + } + + } diff --git a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/translate/v3po/vppstate/VersionCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/translate/v3po/vppstate/VersionCustomizerTest.java index 0b0378755..ab35bb330 100644 --- a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/translate/v3po/vppstate/VersionCustomizerTest.java +++ b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/translate/v3po/vppstate/VersionCustomizerTest.java @@ -22,13 +22,15 @@ import static org.mockito.Mockito.when; import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; import io.fd.honeycomb.vpp.test.read.ReaderCustomizerTest; +import io.fd.vpp.jvpp.core.dto.ShowVersion; +import io.fd.vpp.jvpp.core.dto.ShowVersionReply; +import io.fd.vpp.jvpp.dto.ControlPing; +import io.fd.vpp.jvpp.dto.ControlPingReply; import org.junit.Test; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev161214.VppStateBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev161214.vpp.state.Version; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev161214.vpp.state.VersionBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import io.fd.vpp.jvpp.core.dto.ShowVersion; -import io.fd.vpp.jvpp.core.dto.ShowVersionReply; public class VersionCustomizerTest extends ReaderCustomizerTest<Version, VersionBuilder> { @@ -50,7 +52,9 @@ public class VersionCustomizerTest extends ReaderCustomizerTest<Version, Version reply.buildDirectory = new byte[] {}; when(api.showVersion(any(ShowVersion.class))).thenReturn(future(reply)); + when(api.send(any(ControlPing.class))).thenReturn(future(new ControlPingReply())); getCustomizer().readCurrentAttributes(InstanceIdentifier.create(Version.class), new VersionBuilder(), ctx); verify(api).showVersion(any(ShowVersion.class)); + verify(api).send(any(ControlPing.class)); } }
\ No newline at end of file diff --git a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/translate/v3po/vppstate/VppStateTest.java b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/translate/v3po/vppstate/VppStateTest.java index 9f3b8a41d..cdb2b0376 100644 --- a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/translate/v3po/vppstate/VppStateTest.java +++ b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/translate/v3po/vppstate/VppStateTest.java @@ -39,6 +39,8 @@ import io.fd.honeycomb.translate.util.read.registry.CompositeReaderRegistryBuild import io.fd.honeycomb.vpp.test.util.NamingContextHelper; import io.fd.honeycomb.translate.vpp.util.NamingContext; import io.fd.honeycomb.vpp.test.util.FutureProducer; +import io.fd.vpp.jvpp.dto.ControlPing; +import io.fd.vpp.jvpp.dto.ControlPingReply; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -131,6 +133,7 @@ public class VppStateTest implements FutureProducer, NamingContextHelper { .setBuildDirectory("1") .setBranch("2") .setBuildDate("3") + .setPid(0L) .build(); } @@ -141,6 +144,8 @@ public class VppStateTest implements FutureProducer, NamingContextHelper { reply.version = version.getBranch().getBytes(); reply.buildDirectory = version.getBuildDirectory().getBytes(); when(api.showVersion(any(ShowVersion.class))).thenReturn(future(reply)); + // Version Customizer uses ControlPing to obtain PID + when(api.send(any(ControlPing.class))).thenReturn(future(new ControlPingReply())); } private void whenL2FibTableDumpThenReturn(final List<L2FibTableEntry> entryList) { |