diff options
Diffstat (limited to 'ioam')
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> |