HC2VPP-317: remove FibTableService 39/13139/4
authorMichal Cmarada <[email protected]>
Wed, 20 Jun 2018 07:57:15 +0000 (09:57 +0200)
committerMarek Gradzki <[email protected]>
Fri, 22 Jun 2018 11:28:50 +0000 (11:28 +0000)
After implementing FIB table management in SRv6 and routing
FibTableService is no longer necessary and can be removed.

Change-Id: I797ac52d5ed8ee1c6bf901895080aa06e5ac9016
Signed-off-by: Michal Cmarada <[email protected]>
fib-management/fib-management-impl/src/main/java/io/fd/hc2vpp/fib/management/FibManagementModule.java
fib-management/fib-management-impl/src/main/java/io/fd/hc2vpp/fib/management/services/FibTableService.java [deleted file]
fib-management/fib-management-impl/src/main/java/io/fd/hc2vpp/fib/management/services/FibTableServiceImpl.java [deleted file]
fib-management/fib-management-impl/src/main/java/io/fd/hc2vpp/fib/management/services/FibTableServiceProvider.java [deleted file]
fib-management/fib-management-impl/src/test/java/io/fd/hc2vpp/fib/management/services/FibTableServiceImplTest.java [deleted file]

index 462a1e4..b889c16 100644 (file)
 
 package io.fd.hc2vpp.fib.management;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.google.inject.AbstractModule;
-import com.google.inject.Provider;
-import com.google.inject.Singleton;
 import com.google.inject.multibindings.Multibinder;
 import io.fd.hc2vpp.fib.management.read.FibManagementReaderFactory;
-import io.fd.hc2vpp.fib.management.services.FibTableService;
-import io.fd.hc2vpp.fib.management.services.FibTableServiceProvider;
 import io.fd.hc2vpp.fib.management.write.FibManagementWriterFactory;
 import io.fd.honeycomb.translate.read.ReaderFactory;
 import io.fd.honeycomb.translate.write.WriterFactory;
-import javax.annotation.Nonnull;
 import net.jmob.guice.conf.core.ConfigurationModule;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,23 +32,12 @@ import org.slf4j.LoggerFactory;
 public class FibManagementModule extends AbstractModule {
 
     private static final Logger LOG = LoggerFactory.getLogger(FibManagementModule.class);
-    private final Class<? extends Provider<FibTableService>> fibTableServiceProvider;
-
-    public FibManagementModule() {
-        this(FibTableServiceProvider.class);
-    }
-
-    @VisibleForTesting
-    protected FibManagementModule(@Nonnull final Class<? extends Provider<FibTableService>> fibTableServiceProvider) {
-        this.fibTableServiceProvider = fibTableServiceProvider;
-    }
 
     @Override
     protected void configure() {
         LOG.info("Starting FibManagementModule initialization");
         // requests injection of properties
         install(ConfigurationModule.create());
-        bind(FibTableService.class).toProvider(fibTableServiceProvider).in(Singleton.class);
 
         LOG.debug("Injecting FibManagementModule reader factories");
         // creates reader factory binding
diff --git a/fib-management/fib-management-impl/src/main/java/io/fd/hc2vpp/fib/management/services/FibTableService.java b/fib-management/fib-management-impl/src/main/java/io/fd/hc2vpp/fib/management/services/FibTableService.java
deleted file mode 100644 (file)
index eef4df7..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2018 Bell Canada, Pantheon Technologies 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.hc2vpp.fib.management.services;
-
-import static java.lang.String.format;
-
-import io.fd.honeycomb.translate.ModificationCache;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.write.WriteFailedException;
-import javax.annotation.Nonnegative;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public interface FibTableService {
-
-    /**
-     * Checks whether FIB table with provided index exist in VPP
-     *
-     * @throws ReadFailedException                           if there was an error while reading FIB tables
-     * @throws FibTableService.FibTableDoesNotExistException if requested index does not exist
-     */
-    void checkTableExist(@Nonnegative final int index, @Nonnull final ModificationCache cache)
-            throws ReadFailedException, FibTableService.FibTableDoesNotExistException;
-
-    /**
-     * Writes FIB table in VPP
-     *
-     * @param identifier id of currently processed data
-     * @param tableId    table Id to be written in VPP
-     * @param tableName  name of the FIB table that will be added
-     * @param isIpv6     true if adding IPv6 FIB table, false if adding IPv4 table
-     * @throws WriteFailedException if there was an error while writing FIB tables
-     */
-    @Deprecated
-    void write(InstanceIdentifier<?> identifier, @Nonnegative int tableId, @Nonnull String tableName, boolean isIpv6)
-            throws WriteFailedException;
-
-    class FibTableDoesNotExistException extends Exception {
-
-        public FibTableDoesNotExistException(final int index) {
-            super(format("Fib table with index %s does not exist", index));
-        }
-    }
-}
diff --git a/fib-management/fib-management-impl/src/main/java/io/fd/hc2vpp/fib/management/services/FibTableServiceImpl.java b/fib-management/fib-management-impl/src/main/java/io/fd/hc2vpp/fib/management/services/FibTableServiceImpl.java
deleted file mode 100644 (file)
index 01d2641..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (c) 2018 Bell Canada, Pantheon Technologies 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.hc2vpp.fib.management.services;
-
-import static io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor.NO_PARAMS;
-
-import io.fd.hc2vpp.common.translate.util.FutureJVppCustomizer;
-import io.fd.hc2vpp.common.translate.util.JvppReplyConsumer;
-import io.fd.hc2vpp.fib.management.FibManagementIIds;
-import io.fd.hc2vpp.fib.management.request.FibTableRequest;
-import io.fd.honeycomb.translate.ModificationCache;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
-import io.fd.honeycomb.translate.write.WriteFailedException;
-import io.fd.vpp.jvpp.core.dto.Ip6FibDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.Ip6FibDump;
-import io.fd.vpp.jvpp.core.dto.IpFibDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.IpFibDump;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import java.util.Collections;
-import java.util.stream.Stream;
-import javax.annotation.Nonnegative;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-// Todo HC2VPP-317: FibTableService was created as a temporary workaround to write Fib tables in VPP.
-// We need to implement proper support for Fib table management.
-public class FibTableServiceImpl extends FutureJVppCustomizer implements FibTableService, JvppReplyConsumer {
-
-    private static final Logger LOG = LoggerFactory.getLogger(FibTableServiceImpl.class);
-    private final DumpCacheManager<IpFibDetailsReplyDump, Void> v4DumpManager;
-    private final DumpCacheManager<Ip6FibDetailsReplyDump, Void> v6DumpManager;
-
-    public FibTableServiceImpl(@Nonnull FutureJVppCore futureJVppCore) {
-        super(futureJVppCore);
-        v4DumpManager = new DumpCacheManager.DumpCacheManagerBuilder<IpFibDetailsReplyDump, Void>()
-                .acceptOnly(IpFibDetailsReplyDump.class)
-                .withExecutor((identifier, params) -> getReplyForRead(
-                        futureJVppCore.ipFibDump(new IpFibDump()).toCompletableFuture(), identifier))
-                .build();
-        v6DumpManager = new DumpCacheManager.DumpCacheManagerBuilder<Ip6FibDetailsReplyDump, Void>()
-                .acceptOnly(Ip6FibDetailsReplyDump.class)
-                .withExecutor((identifier, params) -> getReplyForRead(
-                        futureJVppCore.ip6FibDump(new Ip6FibDump()).toCompletableFuture(), identifier))
-                .build();
-    }
-
-    @Override
-    public void write(InstanceIdentifier<?> identifier, @Nonnegative int tableId, @Nonnull String tableName,
-                      boolean isIpv6) throws WriteFailedException {
-        // Register FIB table in VPP
-        FibTableRequest fibTableRequest = new FibTableRequest(getFutureJVpp());
-        fibTableRequest.setFibName(tableName);
-        fibTableRequest.setIpv6(isIpv6);
-        fibTableRequest.setFibTable(tableId);
-        fibTableRequest.checkValid();
-        try {
-            fibTableRequest.write(identifier);
-            LOG.debug("Fib table written successfully. table-name: {}, table-id: {}, request: {}", tableName, tableId,
-                    fibTableRequest);
-        } catch (WriteFailedException e) {
-            LOG.warn("Fib table write failed. request: {}", fibTableRequest);
-            throw new WriteFailedException(identifier, "Failed to write FIB table to VPP.", e);
-        }
-    }
-
-    @Override
-    public void checkTableExist(@Nonnegative final int index, @Nonnull final ModificationCache cache)
-            throws ReadFailedException, FibTableService.FibTableDoesNotExistException {
-
-        if (Stream.concat(dumpV4FibTableIdsStream(cache), dumpV6FibTableIdsStream(cache))
-                .noneMatch(id -> id == index)) {
-            throw new FibTableService.FibTableDoesNotExistException(index);
-        }
-    }
-
-    private Stream<Integer> dumpV6FibTableIdsStream(final ModificationCache cache) throws ReadFailedException {
-        return v6DumpManager.getDump(FibManagementIIds.FIB_MNGMNT, cache, NO_PARAMS)
-                .toJavaUtil()
-                .map(ip6FibDetailsReplyDump -> ip6FibDetailsReplyDump.ip6FibDetails)
-                .orElse(Collections.emptyList())
-                .stream()
-                .map(ip6FibDetails -> ip6FibDetails.tableId);
-    }
-
-    private Stream<Integer> dumpV4FibTableIdsStream(final ModificationCache cache) throws ReadFailedException {
-        return v4DumpManager.getDump(FibManagementIIds.FIB_MNGMNT, cache, NO_PARAMS)
-                .toJavaUtil()
-                .map(ipFibDetailsReplyDump -> ipFibDetailsReplyDump.ipFibDetails)
-                .orElse(Collections.emptyList())
-                .stream()
-                .map(ipFibDetails -> ipFibDetails.tableId);
-    }
-}
diff --git a/fib-management/fib-management-impl/src/main/java/io/fd/hc2vpp/fib/management/services/FibTableServiceProvider.java b/fib-management/fib-management-impl/src/main/java/io/fd/hc2vpp/fib/management/services/FibTableServiceProvider.java
deleted file mode 100644 (file)
index d70f18e..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2018 Bell Canada, Pantheon Technologies 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.hc2vpp.fib.management.services;
-
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import io.fd.honeycomb.translate.ModificationCache;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-
-public class FibTableServiceProvider implements Provider<FibTableService> {
-
-    @Inject
-    private
-    FutureJVppCore api;
-
-    @Inject
-    private ModificationCache modificationCache;
-
-    @Override
-    public FibTableService get() {
-        return new FibTableServiceImpl(api);
-    }
-}
diff --git a/fib-management/fib-management-impl/src/test/java/io/fd/hc2vpp/fib/management/services/FibTableServiceImplTest.java b/fib-management/fib-management-impl/src/test/java/io/fd/hc2vpp/fib/management/services/FibTableServiceImplTest.java
deleted file mode 100644 (file)
index 2351ead..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2018 Bell Canada, Pantheon Technologies 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.hc2vpp.fib.management.services;
-
-import static io.fd.vpp.jvpp.Assertions.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import com.google.inject.Inject;
-import io.fd.hc2vpp.common.test.util.FutureProducer;
-import io.fd.hc2vpp.common.translate.util.ByteDataTranslator;
-import io.fd.hc2vpp.fib.management.FibManagementIIds;
-import io.fd.hc2vpp.fib.management.helpers.SchemaContextTestHelper;
-import io.fd.honeycomb.translate.ModificationCache;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.write.WriteFailedException;
-import io.fd.vpp.jvpp.core.dto.Ip6FibDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.IpFibDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.IpTableAddDel;
-import io.fd.vpp.jvpp.core.dto.IpTableAddDelReply;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-public class FibTableServiceImplTest implements SchemaContextTestHelper, ByteDataTranslator, FutureProducer {
-
-    private static final int FIB_TABLE_ID = 123456;
-    private static final String FIB_TABLE_NAME = "VRF123456";
-
-    @Inject
-    @Mock
-    private static FutureJVppCore api;
-
-    @Mock
-    private ModificationCache modificationCache;
-
-    @Captor
-    private ArgumentCaptor<IpTableAddDel> argumentCaptor;
-
-    @Before
-    public void setup() {
-        MockitoAnnotations.initMocks(this);
-        when(api.ipTableAddDel(any())).thenReturn(future(new IpTableAddDelReply()));
-        when(api.ipFibDump(any())).thenReturn(future(new IpFibDetailsReplyDump()));
-        when(api.ip6FibDump(any())).thenReturn(future(new Ip6FibDetailsReplyDump()));
-        when(modificationCache.get(any())).thenReturn(null);
-
-    }
-
-    @Test(expected = FibTableService.FibTableDoesNotExistException.class)
-    public void checkTableExistTest() throws ReadFailedException, FibTableService.FibTableDoesNotExistException {
-        FibTableServiceImpl fibService = new FibTableServiceImpl(api);
-        fibService.checkTableExist(FIB_TABLE_ID, modificationCache);
-    }
-
-    @Test
-    public void writeIpv4Test() throws WriteFailedException {
-        FibTableServiceImpl fibTableService = new FibTableServiceImpl(api);
-        fibTableService.write(FibManagementIIds.FIB_MNGMNT, FIB_TABLE_ID, FIB_TABLE_NAME, false);
-
-        verify(api, times(1)).ipTableAddDel(argumentCaptor.capture());
-
-        assertTableAddDelRequest(argumentCaptor.getValue(), false);
-    }
-
-    @Test
-    public void writeIpv6Test() throws WriteFailedException {
-        FibTableServiceImpl fibTableService = new FibTableServiceImpl(api);
-        fibTableService.write(FibManagementIIds.FIB_MNGMNT, FIB_TABLE_ID, FIB_TABLE_NAME, true);
-
-        verify(api, times(1)).ipTableAddDel(argumentCaptor.capture());
-
-        assertTableAddDelRequest(argumentCaptor.getValue(), true);
-    }
-
-    private void assertTableAddDelRequest(IpTableAddDel jvppRequest, boolean isIpv6) {
-        assertEquals(ByteDataTranslator.BYTE_TRUE, jvppRequest.isAdd);
-        assertEquals(ByteDataTranslator.INSTANCE.booleanToByte(isIpv6), jvppRequest.isIpv6);
-        assertEquals(FIB_TABLE_ID, jvppRequest.tableId);
-        Assert.assertArrayEquals(FIB_TABLE_NAME.getBytes(), jvppRequest.name);
-    }
-}