summaryrefslogtreecommitdiffstats
path: root/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi
diff options
context:
space:
mode:
Diffstat (limited to 'vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi')
-rw-r--r--vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/CrudService.java64
-rw-r--r--vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/ElementCrudService.java103
-rw-r--r--vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/Module.java70
-rw-r--r--vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/ModuleConfiguration.java46
-rw-r--r--vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/init/ConfigDataInitializer.java54
-rw-r--r--vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/write/ElementCustomizer.java100
-rw-r--r--vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/write/ModuleWriterFactory.java57
7 files changed, 0 insertions, 494 deletions
diff --git a/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/CrudService.java b/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/CrudService.java
deleted file mode 100644
index b9d7f1bb..00000000
--- a/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/CrudService.java
+++ /dev/null
@@ -1,64 +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.lcmapi;
-
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.write.WriteFailedException;
-import java.util.List;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-/**
- * Example of an aggregated access interface.
- * <p/>
- * Shared by all the customizers hiding the ugly details of our data management.
- *
- * TODO update javadoc
- */
-public interface CrudService<T extends DataObject> {
-
- /**
- * Perform write of provided data.
- */
- void writeData(@Nonnull final InstanceIdentifier<T> identifier, @Nonnull final T data)
- throws WriteFailedException;
-
-
- /**
- * Perform delete of existing data.
- */
- void deleteData(@Nonnull final InstanceIdentifier<T> identifier, @Nonnull final T data)
- throws WriteFailedException;
-
- /**
- * Perform update of existing data.
- */
- void updateData(@Nonnull final InstanceIdentifier<T> identifier, @Nonnull final T dataOld,
- @Nonnull final T dataNew)
- throws WriteFailedException;
-
- /**
- * Read data identified by provided identifier.
- */
- T readSpecific(@Nonnull final InstanceIdentifier<T> identifier) throws ReadFailedException;
-
- /**
- * Read all nodes of type {@link T}.
- */
- List<T> readAll() throws ReadFailedException;
-}
diff --git a/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/ElementCrudService.java b/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/ElementCrudService.java
deleted file mode 100644
index fa6a31d5..00000000
--- a/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/ElementCrudService.java
+++ /dev/null
@@ -1,103 +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.
- */
-
-/*
- * Modifications copyright (c) 2019 AT&T Intellectual Property
- */
-
-package io.fd.honeycomb.lcmapi;
-
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.write.WriteFailedException;
-import java.util.Collections;
-import java.util.List;
-import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.stream.count.rev190118.StreamCountState;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.stream.count.rev190118.stream.count.params.Streams;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.stream.count.rev190118.stream.count.params.StreamsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.stream.count.rev190118.StreamNum;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Simple example of class handling Crud operations for plugin.
- * <p/>
- * No real handling, serves just as an illustration.
- *
- * TODO update javadoc
- */
-final class ElementCrudService implements CrudService<Streams> {
-
- private static final Logger LOG = LoggerFactory.getLogger(ElementCrudService.class);
-
- @Override
- public void writeData(@Nonnull final InstanceIdentifier<Streams> identifier, @Nonnull final Streams data)
- throws WriteFailedException {
- if (data != null) {
-
- // Performs any logic needed for persisting such data
- LOG.info("Writing path[{}] / data [{}]", identifier, data);
- } else {
- throw new WriteFailedException.CreateFailedException(identifier, data,
- new NullPointerException("Provided data are null"));
- }
- }
-
- @Override
- public void deleteData(@Nonnull final InstanceIdentifier<Streams> identifier, @Nonnull final Streams data)
- throws WriteFailedException {
- if (data != null) {
-
- // Performs any logic needed for persisting such data
- LOG.info("Removing path[{}] / data [{}]", identifier, data);
- } else {
- throw new WriteFailedException.DeleteFailedException(identifier,
- new NullPointerException("Provided data are null"));
- }
- }
-
- @Override
- public void updateData(@Nonnull final InstanceIdentifier<Streams> identifier, @Nonnull final Streams dataOld,
- @Nonnull final Streams dataNew) throws WriteFailedException {
- if (dataOld != null && dataNew != null) {
-
- // Performs any logic needed for persisting such data
- LOG.info("Update path[{}] from [{}] to [{}]", identifier, dataOld, dataNew);
- } else {
- throw new WriteFailedException.DeleteFailedException(identifier,
- new NullPointerException("Provided data are null"));
- }
- }
-
- @Override
- public Streams readSpecific(@Nonnull final InstanceIdentifier<Streams> identifier) throws ReadFailedException {
-
- // load data by this key
- // *Key class will always contain key of entity, in this case long value
-
- return new StreamsBuilder()
- .setActiveStreams(new StreamNum(1L))
- .build();
- }
-
- @Override
- public List<Streams> readAll() throws ReadFailedException {
- // read all data under parent node,in this case {@link ModuleState}
- return Collections.singletonList(
- readSpecific(InstanceIdentifier.create(StreamCountState.class).child(Streams.class)));
- }
-}
diff --git a/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/Module.java b/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/Module.java
deleted file mode 100644
index 05109db3..00000000
--- a/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/Module.java
+++ /dev/null
@@ -1,70 +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.
- */
-
-/*
- * Modifications copyright (c) 2019 AT&T Intellectual Property
- */
-
-package io.fd.honeycomb.lcmapi;
-
-import static io.fd.honeycomb.lcmapi.ModuleConfiguration.ELEMENT_SERVICE_NAME;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.TypeLiteral;
-import com.google.inject.multibindings.Multibinder;
-import com.google.inject.name.Names;
-import io.fd.honeycomb.lcmapi.init.ConfigDataInitializer;
-import io.fd.honeycomb.lcmapi.write.ModuleWriterFactory;
-import io.fd.honeycomb.data.init.DataTreeInitializer;
-import io.fd.honeycomb.translate.write.WriterFactory;
-import net.jmob.guice.conf.core.ConfigurationModule;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.stream.count.rev190118.stream.count.params.Streams;
-
-/**
- * Module class instantiating stream-count plugin components.
- */
-public final class Module extends AbstractModule {
-
- // TODO This initiates all the plugin components, but it still needs to be registered/wired into an integration
- // module producing runnable distributions. There is one such distribution in honeycomb project:
- // vpp-integration/minimal-distribution
- // In order to integrate this plugin with the distribution:
- // 1. Add a dependency on this maven module to the the distribution's pom.xml
- // 2. Add an instance of this module into the distribution in its Main class
-
- @Override
- protected void configure() {
- // requests injection of properties
- install(ConfigurationModule.create());
- requestInjection(ModuleConfiguration.class);
-
- // creates binding for interface implementation by name
- bind(new TypeLiteral<CrudService<Streams>>(){})
- .annotatedWith(Names.named(ELEMENT_SERVICE_NAME))
- .to(ElementCrudService.class);
-
- // create writer factory binding
- // can hold multiple binding for separate yang modules
- final Multibinder<WriterFactory> writerFactoryBinder = Multibinder.newSetBinder(binder(), WriterFactory.class);
- writerFactoryBinder.addBinding().to(ModuleWriterFactory.class);
-
- // create initializer binding
- // can hold multiple binding for separate yang modules
- final Multibinder<DataTreeInitializer> initializerBinder =
- Multibinder.newSetBinder(binder(), DataTreeInitializer.class);
- initializerBinder.addBinding().to(ConfigDataInitializer.class);
- }
-}
diff --git a/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/ModuleConfiguration.java b/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/ModuleConfiguration.java
deleted file mode 100644
index c574b3ef..00000000
--- a/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/ModuleConfiguration.java
+++ /dev/null
@@ -1,46 +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.lcmapi;
-
-import net.jmob.guice.conf.core.BindConfig;
-import net.jmob.guice.conf.core.InjectConfig;
-import net.jmob.guice.conf.core.Syntax;
-
-/**
- * Class containing static configuration for stream-count module,<br>
- * either loaded from property file stream-count.json from classpath.
- * <p/>
- * Further documentation for the configuration injection can be found at:
- * https://github.com/yyvess/gconf
- */
-@BindConfig(value = "stream-count", syntax = Syntax.JSON)
-public final class ModuleConfiguration {
-
- // TODO change the sample property to real plugin configuration
- // If there is no such configuration, remove this, stream-count.json resource and its wiring from Module class
-
- /**
- * Sample property that's injected from external json configuration file.
- */
- @InjectConfig("sample-prop")
- public String sampleProp;
-
- /**
- * Constant name used to identify stream-count plugin specific components during dependency injection.
- */
- public static final String ELEMENT_SERVICE_NAME = "element-service";
-}
diff --git a/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/init/ConfigDataInitializer.java b/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/init/ConfigDataInitializer.java
deleted file mode 100644
index 16edd1bc..00000000
--- a/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/init/ConfigDataInitializer.java
+++ /dev/null
@@ -1,54 +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.
- */
-
-/*
- * Modifications copyright (c) 2019 AT&T Intellectual Property
- */
-
-package io.fd.honeycomb.lcmapi.init;
-
-import io.fd.honeycomb.data.init.AbstractDataTreeConverter;
-import com.google.inject.Inject;
-import com.google.inject.name.Named;
-import javax.annotation.Nonnull;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.stream.count.rev190118.StreamCount;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.stream.count.rev190118.StreamCountBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.stream.count.rev190118.StreamCountState;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-/**
- * Initialize configuration data based on operational data.
- * <p/>
- * Very useful when a plugin is initiated but the underlying layer already contains some operation state.
- * Deriving the configuration from existing operational state enables reconciliation in case when Honeycomb's persistence
- * is not available to do the work for us.
- */
-public final class ConfigDataInitializer extends AbstractDataTreeConverter<StreamCountState, StreamCount> {
-
- @Inject
- public ConfigDataInitializer(@Named("honeycomb-initializer") @Nonnull final DataBroker bindingDataBroker) {
- super(bindingDataBroker, InstanceIdentifier.create(StreamCountState.class), InstanceIdentifier.create(StreamCount.class));
- }
-
- @Override
- public StreamCount convert(final StreamCountState operationalData) {
- // Transfer all the operational data into configuration
- return new StreamCountBuilder()
- .setStreams(operationalData.getStreams())
- .build();
- }
-}
diff --git a/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/write/ElementCustomizer.java b/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/write/ElementCustomizer.java
deleted file mode 100644
index 740ffdf7..00000000
--- a/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/write/ElementCustomizer.java
+++ /dev/null
@@ -1,100 +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.
- */
-
-/*
- * Modifications copyright (c) 2019 AT&T Intellectual Property
- */
-
-package io.fd.honeycomb.lcmapi.write;
-
-import io.fd.honeycomb.lcmapi.CrudService;
-import io.fd.honeycomb.translate.spi.write.WriterCustomizer;
-import io.fd.honeycomb.translate.write.WriteContext;
-import io.fd.honeycomb.translate.write.WriteFailedException;
-
-import java.io.IOException;
-
-import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.stream.count.rev190118.stream.count.params.Streams;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Writer for {@link Element} list node from our YANG model.
- */
-
-public final class ElementCustomizer implements WriterCustomizer<Streams> {
-
- private static final Logger LOG = LoggerFactory.getLogger(ElementCustomizer.class);
-
- private final CrudService<Streams> crudService;
-
- public ElementCustomizer(@Nonnull final CrudService<Streams> crudService) {
- this.crudService = crudService;
- }
-
- @Override
- public void writeCurrentAttributes(@Nonnull final InstanceIdentifier<Streams> id, @Nonnull final Streams dataAfter,
- @Nonnull final WriteContext writeContext) throws WriteFailedException {
- //perform write of data,or throw exception
- //invoked by PUT operation,if provided data doesn't exist in Config data
- crudService.writeData(id, dataAfter);
- try {
- runScript(dataAfter.getActiveStreams().getValue());
- }
- catch (IOException e) {
- String message = "Write operation failed " + e;
- LOG.error(message);
- }
- }
-
- @Override
- public void updateCurrentAttributes(@Nonnull final InstanceIdentifier<Streams> id,
- @Nonnull final Streams dataBefore,
- @Nonnull final Streams dataAfter, @Nonnull final WriteContext writeContext)
- throws WriteFailedException {
- //invoked by PUT operation,if provided data does exist in Config data
- crudService.updateData(id, dataBefore, dataAfter);
- try {
- runScript(dataAfter.getActiveStreams().getValue());
- }
- catch (IOException e) {
- String message = "Write operation failed " + e;
- LOG.error(message);
- }
- }
-
- @Override
- public void deleteCurrentAttributes(@Nonnull final InstanceIdentifier<Streams> id,
- @Nonnull final Streams dataBefore,
- @Nonnull final WriteContext writeContext) throws WriteFailedException {
- //perform delete of data,or throw exception
- // Not supported, throw exception
- throw new WriteFailedException.DeleteFailedException(id,
- new UnsupportedOperationException("Delete operation not supported"));
- }
-
- //Update the number of running streams running a custom script that uses the old vPacketGen REST APIs
- private void runScript(long streams) throws IOException {
-
- String script = new String("bash /opt/update_running_streams.sh " + streams);
- Runtime.getRuntime().exec(script);
- String message = "Number of running streams updated to " + streams;
- LOG.info(message);
- }
-}
diff --git a/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/write/ModuleWriterFactory.java b/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/write/ModuleWriterFactory.java
deleted file mode 100644
index 1de39761..00000000
--- a/vnfs/honeycomb_plugin/stream-count/stream-count-impl/src/main/java/io/fd/honeycomb/lcmapi/write/ModuleWriterFactory.java
+++ /dev/null
@@ -1,57 +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.
- */
-
-/*
- * Modifications copyright (c) 2019 AT&T Intellectual Property
- */
-
-package io.fd.honeycomb.lcmapi.write;
-
-import static io.fd.honeycomb.lcmapi.ModuleConfiguration.ELEMENT_SERVICE_NAME;
-
-import com.google.inject.Inject;
-import com.google.inject.name.Named;
-import io.fd.honeycomb.lcmapi.CrudService;
-import io.fd.honeycomb.translate.impl.write.GenericWriter;
-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.opendaylight.params.xml.ns.yang.stream.count.rev190118.StreamCount;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.stream.count.rev190118.stream.count.params.Streams;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-/**
- * Factory producing writers for stream-count plugin's data.
- */
-public final class ModuleWriterFactory implements WriterFactory {
-
- private static final InstanceIdentifier<StreamCount> ROOT_CONTAINER_ID = InstanceIdentifier.create(StreamCount.class);
-
- /**
- * Injected crud service to be passed to customizers instantiated in this factory.
- */
- @Inject
- @Named(ELEMENT_SERVICE_NAME)
- private CrudService<Streams> crudService;
-
- @Override
- public void init(@Nonnull final ModifiableWriterRegistryBuilder registry) {
-
- //adds writer for child node
- //no need to add writers for empty nodes
- registry.add(new GenericWriter<>(ROOT_CONTAINER_ID.child(Streams.class), new ElementCustomizer(crudService)));
- }
-}