summaryrefslogtreecommitdiffstats
path: root/ioam
diff options
context:
space:
mode:
Diffstat (limited to 'ioam')
-rw-r--r--ioam/api/asciidoc/Readme.adoc3
-rw-r--r--ioam/api/pom.xml38
-rw-r--r--ioam/api/src/main/yang/ioam-sb-trace.yang184
-rw-r--r--ioam/asciidoc/Readme.adoc11
-rw-r--r--ioam/impl/asciidoc/Readme.adoc3
-rw-r--r--ioam/impl/pom.xml123
-rwxr-xr-xioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/VppIoamModule.java63
-rwxr-xr-xioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/config/IoamTraceWriterCustomizer.java134
-rwxr-xr-xioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/config/VppIoamWriterFactory.java49
-rwxr-xr-xioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/util/FutureJVppIoamCustomizer.java45
-rwxr-xr-xioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/util/JVppIoamProvider.java62
-rw-r--r--ioam/impl/src/test/java/io/fd/honeycomb/vppioam/impl/VppIoamModuleTest.java90
-rw-r--r--ioam/impl/src/test/java/io/fd/honeycomb/vppioam/impl/config/IoamTraceWriterCustomizerTest.java186
-rw-r--r--ioam/ioam_trace_postman_collection.json34
-rw-r--r--ioam/pom.xml56
15 files changed, 0 insertions, 1081 deletions
diff --git a/ioam/api/asciidoc/Readme.adoc b/ioam/api/asciidoc/Readme.adoc
deleted file mode 100644
index fe70e0a4a..000000000
--- a/ioam/api/asciidoc/Readme.adoc
+++ /dev/null
@@ -1,3 +0,0 @@
-= vppioam-api
-
-Overview of vppioam-api
diff --git a/ioam/api/pom.xml b/ioam/api/pom.xml
deleted file mode 100644
index ebdadea05..000000000
--- a/ioam/api/pom.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright (c) 2016 Cisco and/or its affiliates.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at:
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <groupId>io.fd.honeycomb.common</groupId>
- <artifactId>api-parent</artifactId>
- <version>1.16.12-SNAPSHOT</version>
- <relativePath>../../common/api-parent</relativePath>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
- <groupId>io.fd.honeycomb.vppioam</groupId>
- <artifactId>vppioam-api</artifactId>
- <name>${project.artifactId}</name>
- <version>1.16.12-SNAPSHOT</version>
- <packaging>bundle</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.opendaylight.mdsal.model</groupId>
- <artifactId>ietf-interfaces</artifactId>
- </dependency>
- </dependencies>
-</project>
diff --git a/ioam/api/src/main/yang/ioam-sb-trace.yang b/ioam/api/src/main/yang/ioam-sb-trace.yang
deleted file mode 100644
index 731fda96d..000000000
--- a/ioam/api/src/main/yang/ioam-sb-trace.yang
+++ /dev/null
@@ -1,184 +0,0 @@
-module ioam-sb-trace {
- yang-version 1;
- namespace "urn:cisco:params:xml:ns:yang:ioam-sb-trace";
- prefix ioam-sb-trace;
-
- import ietf-interfaces { prefix ietf-if; }
-
- organization "Cisco Systems, Inc.";
-
- contact
- "Author: Srihari Raghavan
- srihari@cisco.com";
-
- description
- "This YANG module defines a component that describing the
- configuration of in-band OAM device configuration for
- trace elements.
- ";
-
- revision 2016-05-12 {
- description
- "Base model for in-band OAM trace device configuration.";
- reference
- "";
- }
-
- container ioam-trace-config {
- description
- "Device specific configuration for in-band OAM trace.";
-
- list trace-config {
- key "trace-config-name";
- ordered-by system;
- description
- "Set of ioam trace configurations that group parameters
- required to enable iOAM6 tracing at a service node";
-
- leaf trace-config-name {
- type string {
- length "0..255";
- }
- mandatory true;
- description
- "Unique identifier for each node tracing configuration";
- }
-
- leaf acl-name {
- type string;
- description
- "The ACL name associated to classify and apply this
- trace config";
- }
-
- leaf trace-type {
- type uint8 {
- range "3|7|9|17|25|31";
- }
-
- mandatory true;
- description
- "Trace type that defines the trace element variant. Moving
- from LSB to MSB, each bit represents node_id, ingress_if_id,
- egress_if_id, timestamp, app_data and others are undefined.
- Currently, the supported values are 0x03, 0x07, 0x09,
- 0x11, 0x19 and 0x1f.";
- }
-
- leaf trace-num-elt {
- type uint8;
-
- mandatory true;
- description
- "Number of trace elements to be inserted in the tracing
- options.";
- }
-
- leaf trace-tsp {
- type enumeration {
- enum seconds {
- value 0;
- description "Timestamp in seconds.";
- }
- enum milliseconds {
- value 1;
- description "Timestamp in milli seconds.";
- }
- enum microseconds {
- value 2;
- description "Timestamp in micro seconds.";
- }
- enum nanoseconds {
- value 3;
- description "Timestamp in nano seconds.";
- }
- }
-
- mandatory true;
- description
- "This field depicts the delay domain of the trace path,
- whether it is in seconds, milliseconds, microseconds
- or nanoseconds.";
- }
-
- leaf trace-op {
- type enumeration {
- enum add {
- value 0;
- description "Add new and fill trace information.";
- }
- enum update {
- value 1;
- description "Update existing trace information.";
- }
- enum remove {
- value 2;
- description "Decap or remove existing trace information.";
- }
- }
-
- mandatory true;
- description
- "The type of trace element operation that the service node
- handling this profile should do. The options are to add the
- trace elements, update the trace elements or to remove the
- trace elements.";
- }
-
- leaf trace-app-data {
- type uint32;
- description
- "Application specific data to be added by the node";
- }
-
- leaf node-id {
- type uint32;
- mandatory true;
- description
- "iOAM Service Node id assigned to this node";
- }
-
- list node-interfaces {
- key "index";
- ordered-by system;
- description
- "List of node's interfaces on which the trace configuration
- need to be applied. Typically this is to all interfaces
- but can be filtered.";
-
- leaf index {
- type uint32;
- mandatory true;
- description
- "Index for the interfaces list";
- }
-
- leaf intf-name {
- type ietf-if:interface-ref;
- mandatory true;
- description
- "Instance of ietf-interfaces:interface-ref";
- }
- }
-
- /*** links to ioam-sb-data-export ***/
- leaf data-export-profile-name {
- type string;
- description
- "The data export profile name with server information to
- send data to.";
- }
-
- /*** Transport encap profiles. Not used currently ***/
- leaf transport-encap-profile-name {
- type string;
- description
- "The transport encap profile name with sub configurations for
- handling transport encap.";
- }
-/*** list: end ***/
- }
-/*** container: end ***/
- }
-/*** module: end ***/
-}
diff --git a/ioam/asciidoc/Readme.adoc b/ioam/asciidoc/Readme.adoc
deleted file mode 100644
index c0e30bd70..000000000
--- a/ioam/asciidoc/Readme.adoc
+++ /dev/null
@@ -1,11 +0,0 @@
-= ioam
-
-This is a Honeycomb plugin providing mapping code between HC and iOAM Plugin APIs.
-
-== Usage
-
-Refer to ioam_postman_collection.json for sample requests.
-
-In order to make HC iOAM plugin work, need to start vpp and load ioam plugin first.
-
-At this point in time, iOAM trace plugin configurations are supported.
diff --git a/ioam/impl/asciidoc/Readme.adoc b/ioam/impl/asciidoc/Readme.adoc
deleted file mode 100644
index 6660fc457..000000000
--- a/ioam/impl/asciidoc/Readme.adoc
+++ /dev/null
@@ -1,3 +0,0 @@
-= vppioam-impl
-
-Overview of vppioam-impl
diff --git a/ioam/impl/pom.xml b/ioam/impl/pom.xml
deleted file mode 100644
index dd106d003..000000000
--- a/ioam/impl/pom.xml
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright (c) 2016 Cisco and/or its affiliates.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at:
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <groupId>io.fd.honeycomb.common</groupId>
- <artifactId>impl-parent</artifactId>
- <version>1.16.12-SNAPSHOT</version>
- <relativePath>../../common/impl-parent</relativePath>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
- <groupId>io.fd.honeycomb.vppioam</groupId>
- <artifactId>vppioam-impl</artifactId>
- <name>${project.artifactId}</name>
- <version>1.16.12-SNAPSHOT</version>
- <packaging>bundle</packaging>
-
- <properties>
- <ioam.version>1.0-SNAPSHOT</ioam.version>
- <jvpp.version>16.12-SNAPSHOT</jvpp.version>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>vppioam-api</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <dependency>
- <groupId>com.google.inject</groupId>
- <artifactId>guice</artifactId>
- </dependency>
- <dependency>
- <groupId>net.jmob</groupId>
- <artifactId>guice.conf</artifactId>
- </dependency>
- <dependency>
- <groupId>com.google.inject.extensions</groupId>
- <artifactId>guice-multibindings</artifactId>
- </dependency>
- <dependency>
- <groupId>com.google.inject.extensions</groupId>
- <artifactId>guice-testlib</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-all</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>io.fd.honeycomb</groupId>
- <artifactId>translate-impl</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>io.fd.honeycomb</groupId>
- <artifactId>translate-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>io.fd.honeycomb</groupId>
- <artifactId>notification-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>io.fd.honeycomb</groupId>
- <artifactId>cfg-init</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>io.fd.vpp</groupId>
- <artifactId>jvpp-registry</artifactId>
- <version>${jvpp.version}</version>
- </dependency>
- <dependency>
- <groupId>io.fd.vpp</groupId>
- <artifactId>jvpp-ioam-trace</artifactId>
- <version>${ioam.version}</version>
- </dependency>
- <dependency>
- <groupId>io.fd.honeycomb.vpp</groupId>
- <artifactId>vpp-translate-utils</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>io.fd.honeycomb.vpp</groupId>
- <artifactId>vpp-translate-test</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>io.fd.honeycomb</groupId>
- <artifactId>minimal-distribution</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project>
diff --git a/ioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/VppIoamModule.java b/ioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/VppIoamModule.java
deleted file mode 100755
index 34975d71d..000000000
--- a/ioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/VppIoamModule.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package io.fd.honeycomb.vppioam.impl;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.inject.AbstractModule;
-import com.google.inject.Singleton;
-import com.google.inject.multibindings.Multibinder;
-import com.google.inject.name.Names;
-import com.google.inject.Provider;
-import io.fd.honeycomb.data.init.DataTreeInitializer;
-import io.fd.honeycomb.translate.read.ReaderFactory;
-import io.fd.honeycomb.translate.write.WriterFactory;
-import io.fd.honeycomb.vppioam.impl.config.VppIoamWriterFactory;
-import io.fd.honeycomb.vppioam.impl.util.JVppIoamProvider;
-import io.fd.vpp.jvpp.ioamtrace.future.FutureJVppIoamtrace;
-import io.fd.vpp.jvpp.ioamtrace.future.FutureJVppIoamtraceFacade;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Glue code necessary for Honeycomb distribution to pick up the plugin classes
- */
-public final class VppIoamModule extends AbstractModule {
-
- private static final Logger LOG = LoggerFactory.getLogger(VppIoamModule.class);
- private final Class<? extends Provider<FutureJVppIoamtraceFacade>> jvppIoamProviderClass;
-
- public VppIoamModule() {
- this(JVppIoamProvider.class);
- }
-
- @VisibleForTesting
- VppIoamModule(Class<? extends Provider<FutureJVppIoamtraceFacade>> jvppIoamProvider) {
- this.jvppIoamProviderClass = jvppIoamProvider;
- }
-
- @Override
- protected void configure() {
- LOG.debug("Installing iOAM module");
-
- // Bind to Plugin's JVPP.
- bind(FutureJVppIoamtrace.class).toProvider(jvppIoamProviderClass).in(Singleton.class);
-
- // Below are classes picked up by HC framework
- Multibinder.newSetBinder(binder(), WriterFactory.class).addBinding().to(VppIoamWriterFactory.class);
-
- LOG.debug("Module iOAM successfully configured");
- }
-}
diff --git a/ioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/config/IoamTraceWriterCustomizer.java b/ioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/config/IoamTraceWriterCustomizer.java
deleted file mode 100755
index 8a45e87df..000000000
--- a/ioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/config/IoamTraceWriterCustomizer.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package io.fd.honeycomb.vppioam.impl.config;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-
-import io.fd.honeycomb.translate.MappingContext;
-import io.fd.honeycomb.translate.spi.write.ListWriterCustomizer;
-import io.fd.honeycomb.translate.vpp.util.ByteDataTranslator;
-import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
-import io.fd.honeycomb.translate.vpp.util.NamingContext;
-import io.fd.honeycomb.translate.write.WriteContext;
-import io.fd.honeycomb.translate.write.WriteFailedException;
-import io.fd.honeycomb.vppioam.impl.util.FutureJVppIoamCustomizer;
-
-import io.fd.vpp.jvpp.ioamtrace.dto.TraceProfileAdd;
-import io.fd.vpp.jvpp.ioamtrace.dto.TraceProfileAddReply;
-import io.fd.vpp.jvpp.ioamtrace.dto.TraceProfileDel;
-import io.fd.vpp.jvpp.ioamtrace.dto.TraceProfileDelReply;
-import io.fd.vpp.jvpp.ioamtrace.future.FutureJVppIoamtrace;
-
-import java.util.concurrent.CompletionStage;
-import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.IoamTraceConfig;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfig;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfig.TraceOp;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.trace.config.NodeInterfaces;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfigKey;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.trace.config.NodeInterfaces;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Writer customizer responsible for Ioam Trace create/delete.
- */
-public class IoamTraceWriterCustomizer extends FutureJVppIoamCustomizer
- implements ListWriterCustomizer<TraceConfig, TraceConfigKey>, ByteDataTranslator, JvppReplyConsumer {
-
- private static final Logger LOG = LoggerFactory.getLogger(IoamTraceWriterCustomizer.class);
-
- public IoamTraceWriterCustomizer(@Nonnull final FutureJVppIoamtrace futureJVppIoam) {
- super(futureJVppIoam);
- }
-
- @Override
- public void writeCurrentAttributes(@Nonnull final InstanceIdentifier<TraceConfig> id,
- @Nonnull final TraceConfig dataCurr,
- @Nonnull final WriteContext writeContext)
- throws WriteFailedException {
-
- try {
- addTraceConfig(dataCurr, writeContext, id);
- } catch (Exception exCreate) {
- LOG.error("Add Trace Configuration failed", exCreate);
- throw new WriteFailedException.CreateFailedException(id, dataCurr, exCreate);
- }
-
- LOG.debug("Trace config added iid={}, added {}", id, dataCurr);
- }
-
- @Override
- public void updateCurrentAttributes(@Nonnull final InstanceIdentifier<TraceConfig> id,
- @Nonnull final TraceConfig dataBefore,
- @Nonnull final TraceConfig dataAfter,
- @Nonnull final WriteContext ctx) throws WriteFailedException {
- try {
- deleteTraceConfig(dataBefore, id);
- addTraceConfig(dataAfter, ctx, id);
- } catch (Exception exUpdate) {
- LOG.error("Update Trace Configuration failed", exUpdate);
- throw new WriteFailedException.UpdateFailedException(id, dataBefore, dataAfter, exUpdate);
- }
-
- LOG.debug("Trace config updated {}", dataAfter);
- }
-
- @Override
- public void deleteCurrentAttributes(@Nonnull final InstanceIdentifier<TraceConfig> id,
- @Nonnull final TraceConfig dataBefore,
- @Nonnull final WriteContext ctx) throws WriteFailedException {
- try {
- deleteTraceConfig(dataBefore, id);
- } catch (Exception exDelete) {
- LOG.error("Delete Trace Configuration failed", exDelete);
- throw new WriteFailedException.DeleteFailedException(id, exDelete);
- }
-
- LOG.debug("Trace config deleted:iid={} dataBefore={}", id, dataBefore);
- }
-
- public TraceProfileAddReply addTraceConfig(TraceConfig traceConfig,
- WriteContext ctx,
- final InstanceIdentifier<TraceConfig> id) throws Exception {
-
- TraceProfileAdd traceProfileAdd = new TraceProfileAdd();
- traceProfileAdd.traceType = (byte) traceConfig.getTraceType().byteValue(); //trace type
- traceProfileAdd.numElts = (byte) traceConfig.getTraceNumElt().byteValue(); //num of elts
- traceProfileAdd.traceTsp = (byte) traceConfig.getTraceTsp().getIntValue(); // tsp
- traceProfileAdd.appData = (int) traceConfig.getTraceAppData().intValue(); // appdata
- traceProfileAdd.nodeId = (int) traceConfig.getNodeId().intValue(); // nodeid
-
- /* Write to VPP */
- final TraceProfileAddReply reply = getReplyForWrite((getFutureJVppIoam().
- traceProfileAdd(traceProfileAdd).
- toCompletableFuture()), id);
- return reply;
- }
-
- public TraceProfileDelReply deleteTraceConfig(TraceConfig dataBefore,
- final InstanceIdentifier<TraceConfig> id) throws Exception {
- TraceProfileDel del = new TraceProfileDel();
-
- /* Write to VPP */
- TraceProfileDelReply reply = getReplyForWrite((getFutureJVppIoam().
- traceProfileDel(del).toCompletableFuture()), id);
-
- return reply;
- }
-}
diff --git a/ioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/config/VppIoamWriterFactory.java b/ioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/config/VppIoamWriterFactory.java
deleted file mode 100755
index 40311cd8c..000000000
--- a/ioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/config/VppIoamWriterFactory.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.vppioam.impl.config;
-
-import com.google.common.collect.Sets;
-import com.google.inject.Inject;
-import com.google.inject.name.Named;
-import io.fd.honeycomb.translate.impl.write.GenericListWriter;
-import io.fd.honeycomb.translate.vpp.util.NamingContext;
-import io.fd.honeycomb.translate.write.WriterFactory;
-import io.fd.honeycomb.translate.write.registry.ModifiableWriterRegistryBuilder;
-import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.IoamTraceConfig;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfig;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import io.fd.vpp.jvpp.ioamtrace.future.FutureJVppIoamtrace;
-
-public class VppIoamWriterFactory implements WriterFactory {
-
- @Nonnull
- private final FutureJVppIoamtrace jvppIoam;
-
- @Inject
- public VppIoamWriterFactory(@Nonnull final FutureJVppIoamtrace jvppIoam) {
- this.jvppIoam = jvppIoam;
- }
-
- @Override
- public void init(@Nonnull final ModifiableWriterRegistryBuilder registry) {
- // TraceConfig
- final InstanceIdentifier<TraceConfig> trId =
- InstanceIdentifier.create(IoamTraceConfig.class).child(TraceConfig.class);
- registry.add(new GenericListWriter<>(trId, new IoamTraceWriterCustomizer(jvppIoam)));
- }
-}
diff --git a/ioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/util/FutureJVppIoamCustomizer.java b/ioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/util/FutureJVppIoamCustomizer.java
deleted file mode 100755
index b60581a1b..000000000
--- a/ioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/util/FutureJVppIoamCustomizer.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.vppioam.impl.util;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Preconditions;
-import io.fd.vpp.jvpp.ioamtrace.future.FutureJVppIoamtrace;
-import javax.annotation.Nonnull;
-
-/**
- * Abstract utility to hold the IoamApi reference.
- */
-@Beta
-public abstract class FutureJVppIoamCustomizer {
-
- private final FutureJVppIoamtrace futureJVppIoam;
-
- public FutureJVppIoamCustomizer(@Nonnull final FutureJVppIoamtrace futureJVppIoam) {
- this.futureJVppIoam = Preconditions.checkNotNull(futureJVppIoam,
- "futureJVppIoam should not be null");
- }
-
- /**
- * Get IoamApi reference
- *
- * @return IoamApi reference
- */
- public FutureJVppIoamtrace getFutureJVppIoam() {
- return futureJVppIoam;
- }
-}
diff --git a/ioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/util/JVppIoamProvider.java b/ioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/util/JVppIoamProvider.java
deleted file mode 100755
index d95266457..000000000
--- a/ioam/impl/src/main/java/io/fd/honeycomb/vppioam/impl/util/JVppIoamProvider.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.vppioam.impl.util;
-
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import io.fd.honeycomb.infra.distro.ProviderTrait;
-import java.io.IOException;
-import io.fd.vpp.jvpp.JVppRegistry;
-import io.fd.vpp.jvpp.ioamtrace.future.FutureJVppIoamtrace;
-import io.fd.vpp.jvpp.ioamtrace.future.FutureJVppIoamtraceFacade;
-import io.fd.vpp.jvpp.ioamtrace.JVppIoamtraceImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Provides future API for jvpp-ioam plugin. Must be a singleton due to shutdown hook usage.
- * Registers shutdown hook to free plugin's resources on shutdown.
- */
-public final class JVppIoamProvider extends ProviderTrait<FutureJVppIoamtraceFacade> {
-
- private static final Logger LOG = LoggerFactory.getLogger(JVppIoamProvider.class);
-
- @Inject
- private JVppRegistry registry;
-
- @Override
- protected FutureJVppIoamtraceFacade create() {
- try {
- final JVppIoamtraceImpl jVppIoamTr = new JVppIoamtraceImpl();
- // Free jvpp-ioam plugin's resources on shutdown
- Runtime.getRuntime().addShutdownHook(new Thread() {
- @Override
- public void run() {
- LOG.info("Unloading jvpp-ioam plugin");
- jVppIoamTr.close();
- LOG.info("Successfully unloaded jvpp-ioam plugin");
- }
- });
-
- LOG.debug("Successfully loaded jvpp-ioam plugin");
- return new FutureJVppIoamtraceFacade(registry, jVppIoamTr);
- } catch (IOException e) {
- throw new IllegalStateException("Unable to open VPP management connection", e);
- }
- }
-}
-
diff --git a/ioam/impl/src/test/java/io/fd/honeycomb/vppioam/impl/VppIoamModuleTest.java b/ioam/impl/src/test/java/io/fd/honeycomb/vppioam/impl/VppIoamModuleTest.java
deleted file mode 100644
index d9176d39d..000000000
--- a/ioam/impl/src/test/java/io/fd/honeycomb/vppioam/impl/VppIoamModuleTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.vppioam.impl;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.Matchers.empty;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.MockitoAnnotations.initMocks;
-
-import com.google.inject.Guice;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.google.inject.name.Named;
-import com.google.inject.testing.fieldbinder.Bind;
-import com.google.inject.testing.fieldbinder.BoundFieldModule;
-import io.fd.honeycomb.translate.impl.write.registry.FlatWriterRegistryBuilder;
-import io.fd.honeycomb.translate.write.WriterFactory;
-import java.util.HashSet;
-import java.util.Set;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-
-import io.fd.vpp.jvpp.ioamtrace.future.FutureJVppIoamtraceFacade;
-import io.fd.vpp.jvpp.JVppRegistry;
-
-
-public class VppIoamModuleTest {
-
- @Named("honeycomb-context")
- @Bind
- @Mock
- private DataBroker honeycombContext;
-
- @Named("honeycomb-initializer")
- @Bind
- @Mock
- private DataBroker honeycombInitializer;
-
- @Bind
- @Mock
- private JVppRegistry registry;
-
- @Inject
- private Set<WriterFactory> writerFactories = new HashSet<>();
-
- @Before
- public void setUp() throws Exception {
-
- initMocks(this);
-
- Guice.createInjector(new VppIoamModule(MockJVppIoamProvider.class), BoundFieldModule.of(this)).injectMembers(this);
- }
-
- @Test
- public void testWriterFactories() throws Exception {
- assertThat(writerFactories, is(not(empty())));
-
- final FlatWriterRegistryBuilder registryBuilder = new FlatWriterRegistryBuilder();
- writerFactories.forEach(factory -> factory.init(registryBuilder));
- assertNotNull(registryBuilder.build());
- }
-
- private static final class MockJVppIoamProvider implements Provider<FutureJVppIoamtraceFacade> {
-
- @Override
- public FutureJVppIoamtraceFacade get() {
- return mock(FutureJVppIoamtraceFacade.class);
- }
- }
-}
-
diff --git a/ioam/impl/src/test/java/io/fd/honeycomb/vppioam/impl/config/IoamTraceWriterCustomizerTest.java b/ioam/impl/src/test/java/io/fd/honeycomb/vppioam/impl/config/IoamTraceWriterCustomizerTest.java
deleted file mode 100644
index 8c182dd01..000000000
--- a/ioam/impl/src/test/java/io/fd/honeycomb/vppioam/impl/config/IoamTraceWriterCustomizerTest.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.vppioam.impl.config;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import io.fd.honeycomb.translate.vpp.util.NamingContext;
-import io.fd.honeycomb.translate.write.WriteFailedException;
-import io.fd.honeycomb.vpp.test.write.WriterCustomizerTest;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-import io.fd.vpp.jvpp.ioamtrace.dto.TraceProfileAdd;
-import io.fd.vpp.jvpp.ioamtrace.dto.TraceProfileAddReply;
-import io.fd.vpp.jvpp.ioamtrace.dto.TraceProfileDel;
-import io.fd.vpp.jvpp.ioamtrace.dto.TraceProfileDelReply;
-import io.fd.vpp.jvpp.ioamtrace.future.FutureJVppIoamtrace;
-import io.fd.vpp.jvpp.VppBaseCallException;
-import io.fd.vpp.jvpp.VppCallbackException;
-
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.IoamTraceConfig;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfig;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfig.TraceTsp;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfigBuilder;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfig.TraceOp;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.trace.config.NodeInterfaces;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfigKey;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.trace.config.NodeInterfaces;
-
-
-public class IoamTraceWriterCustomizerTest extends WriterCustomizerTest {
-
- private static final String TRACE_NAME = "trace_test";
-
- @Mock
- protected FutureJVppIoamtrace jvppIoam;
-
- private IoamTraceWriterCustomizer customizer;
-
- @Override
- public void setUp() throws Exception {
- customizer = new IoamTraceWriterCustomizer(jvppIoam);
- }
-
- private static TraceConfig generateTraceConfig(final String name) {
- final TraceConfigBuilder builder = new TraceConfigBuilder();
- builder.setTraceConfigName(name);
- builder.setKey(new TraceConfigKey(name));
- builder.setAclName(name);
- builder.setTraceType(new Short("31"));
- builder.setTraceNumElt(new Short("4"));
- builder.setTraceTsp(TraceTsp.Milliseconds);
- builder.setTraceOp(TraceOp.Add);
- builder.setTraceAppData(new Long("123"));
- builder.setNodeId(new Long("1"));
-
- return builder.build();
- }
-
- private static InstanceIdentifier<TraceConfig> getTraceConfigId(final String name) {
- return InstanceIdentifier.create(IoamTraceConfig.class)
- .child(TraceConfig.class, new TraceConfigKey(name));
- }
-
- private void whenTraceAddThenSuccess() {
- final TraceProfileAddReply reply = new TraceProfileAddReply();
- reply.context = 1;
- doReturn(future(reply)).when(jvppIoam).traceProfileAdd(any(TraceProfileAdd.class));
- }
-
- private void whenTraceAddThenFailure() {
- doReturn(failedFuture()).when(jvppIoam).traceProfileAdd(any(TraceProfileAdd.class));
- }
-
- private void whenTraceDelThenSuccess() {
- final TraceProfileDelReply reply = new TraceProfileDelReply();
- reply.context = 1;
- doReturn(future(reply)).when(jvppIoam).traceProfileDel(any(TraceProfileDel.class));
- }
-
- private void whenTraceDelThenFailure() {
- doReturn(failedFuture()).when(jvppIoam).traceProfileDel(any(TraceProfileDel.class));
- }
-
- private static TraceProfileAdd generateTraceProfileAdd() {
- final TraceProfileAdd request = new TraceProfileAdd();
- request.traceType = 0x1f;
- request.numElts = 4;
- request.nodeId = 1;
- request.traceTsp = 1;
- request.appData = 123;
-
- return request;
- }
-
- private static TraceProfileDel generateTraceProfileDel() {
- final TraceProfileDel request = new TraceProfileDel();
-
- return request;
- }
-
- @Test
- public void testCreate() throws Exception {
- final TraceConfig traceConfig = generateTraceConfig(TRACE_NAME);
- final InstanceIdentifier<TraceConfig> id = getTraceConfigId(TRACE_NAME);
-
- whenTraceAddThenSuccess();
-
- customizer.writeCurrentAttributes(id, traceConfig, writeContext);
-
- verify(jvppIoam).traceProfileAdd(generateTraceProfileAdd());
- }
-
- @Test
- public void testCreateFailed() throws Exception {
- final TraceConfig traceConfig = generateTraceConfig(TRACE_NAME);
- final InstanceIdentifier<TraceConfig> id = getTraceConfigId(TRACE_NAME);
-
- whenTraceAddThenFailure();
-
- try {
- customizer.writeCurrentAttributes(id, traceConfig, writeContext);
- } catch (WriteFailedException e) {
- //assertTrue(e.getCause() instanceof VppBaseCallException);
- verify(jvppIoam).traceProfileAdd(generateTraceProfileAdd());
-
- return;
- }
- fail("WriteFailedException.CreateFailedException was expected");
- }
-
- @Test
- public void testDelete() throws Exception {
-
- final TraceConfig traceConfig = generateTraceConfig(TRACE_NAME);
- final InstanceIdentifier<TraceConfig> id = getTraceConfigId(TRACE_NAME);
-
- whenTraceDelThenSuccess();
-
- customizer.deleteCurrentAttributes(id, traceConfig, writeContext);
-
- verify(jvppIoam).traceProfileDel(generateTraceProfileDel());
- }
-
- @Test
- public void testDeleteFailed() throws Exception {
-
- final TraceConfig traceConfig = generateTraceConfig(TRACE_NAME);
- final InstanceIdentifier<TraceConfig> id = getTraceConfigId(TRACE_NAME);
-
- whenTraceDelThenFailure();
-
- try {
- customizer.deleteCurrentAttributes(id, traceConfig, writeContext);
- } catch (WriteFailedException e) {
- //assertTrue(e.getCause() instanceof VppBaseCallException);
- verify(jvppIoam).traceProfileDel(generateTraceProfileDel());
-
- return;
- }
- fail("WriteFailedException.DeleteFailedException was expected");
-
- customizer.deleteCurrentAttributes(id, traceConfig, writeContext);
- }
-}
diff --git a/ioam/ioam_trace_postman_collection.json b/ioam/ioam_trace_postman_collection.json
deleted file mode 100644
index d5248139a..000000000
--- a/ioam/ioam_trace_postman_collection.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "id": "7d81e8b0-274e-1f22-de94-d40cb78a389d",
- "name": "Honeycomb RESTCONF calls for iOAM Trace",
- "description": "To enable iOAM trace on VPP management nodes.",
- "order": [
- "f5a5aaea-2d61-a57f-191a-7cc81286f605"
- ],
- "folders": [],
- "timestamp": 1478073563257,
- "owner": 0,
- "public": false,
- "requests": [
- {
- "id": "f5a5aaea-2d61-a57f-191a-7cc81286f605",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8181/restconf/config/ioam-sb-trace:ioam-trace-config/",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "PUT",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1478077673476,
- "name": "iaom trace",
- "description": "",
- "collectionId": "7d81e8b0-274e-1f22-de94-d40cb78a389d",
- "responses": [],
- "rawModeData": "{\n\"trace-config\":{\n \"trace-config-name\":\"trace\",\n \"acl-name\":\"testAcl\",\n \"trace-type\":31,\n \"trace-num-elt\":3,\n \"trace-tsp\":\"milliseconds\",\n \"trace-op\":\"add\",\n \"trace-app-data\":1234,\n \"data-export-profile-name\":\"dataProfileName\",\n \"transport-encap-profile-name\":\"transProfileName\",\n \"node-id\":1,\n \"node-interfaces\":[\n {\n \"index\":5,\n \"intf-name\":\"GigabitEthernetb/0/0\"\n }\n ]\n }\n}\n"
- }
- ]
-} \ No newline at end of file
diff --git a/ioam/pom.xml b/ioam/pom.xml
deleted file mode 100644
index 2708114ce..000000000
--- a/ioam/pom.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright (c) 2016 Cisco and/or its affiliates.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at:
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <parent>
- <groupId>io.fd.honeycomb.common</groupId>
- <artifactId>honeycomb-parent</artifactId>
- <version>1.16.12-SNAPSHOT</version>
- <relativePath>../common/honeycomb-parent</relativePath>
- </parent>
-
- <groupId>io.fd.honeycomb.ioam</groupId>
- <artifactId>vppioam-aggregator</artifactId>
- <version>1.16.12-SNAPSHOT</version>
- <name>${project.artifactId}</name>
- <packaging>pom</packaging>
- <modelVersion>4.0.0</modelVersion>
- <description>Aggregator for Honeycomb iOAM plugin</description>
-
- <modules>
- <module>api</module>
- <module>impl</module>
- </modules>
- <!-- DO NOT install or deploy the repo root pom as it's only needed to initiate a build -->
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-deploy-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-install-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- </plugins>
- </build>
-</project>