summaryrefslogtreecommitdiffstats
path: root/fib-management/fib-management-impl/src/main/java/io/fd/hc2vpp/fib/management/services/FibTableServiceImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'fib-management/fib-management-impl/src/main/java/io/fd/hc2vpp/fib/management/services/FibTableServiceImpl.java')
-rw-r--r--fib-management/fib-management-impl/src/main/java/io/fd/hc2vpp/fib/management/services/FibTableServiceImpl.java110
1 files changed, 0 insertions, 110 deletions
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
index 01d264189..000000000
--- a/fib-management/fib-management-impl/src/main/java/io/fd/hc2vpp/fib/management/services/FibTableServiceImpl.java
+++ /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);
- }
-}