import com.google.common.collect.Maps;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import java.util.function.Function;
import java.util.stream.Collectors;
import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
import org.opendaylight.protocol.bgp.rib.impl.BgpPeerUtil;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.ll.graceful.restart.rev181112.Config1;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.ll.graceful.restart.rev181112.Config2;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.ll.graceful.restart.rev181112.afi.safi.ll.graceful.restart.LlGracefulRestart;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.BgpParameters;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.BgpParametersBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.bgp.parameters.OptionalCapabilities;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.bgp.parameters.OptionalCapabilitiesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.bgp.parameters.optional.capabilities.CParameters;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.bgp.parameters.optional.capabilities.CParametersBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.BgpParameters;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.BgpParametersBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.OptionalCapabilities;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.OptionalCapabilitiesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.optional.capabilities.CParameters;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.optional.capabilities.CParametersBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.CParameters1;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.CParameters1Builder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.LlGracefulRestartCapabilityBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.ll.graceful.restart.capability.TablesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.uint24.rev200104.Uint24;
+import org.opendaylight.yangtools.yang.binding.Identifiable;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
final TablesKey key = entry.getKey();
return gracefulRestartTable(key.getAfi(), key.getSafi(), entry.getValue());
})
- .collect(Collectors.toList()), restartTime, localRestarting);
+ .collect(Collectors.toMap(Identifiable::key, Function.identity())), restartTime, localRestarting);
}
public static CParameters getLlGracefulCapability(final Set<BgpPeerUtil.LlGracefulRestartDTO> llGracefulRestarts) {
.build()).build()).build();
}
- static Set<TablesKey> getGracefulTables(final List<AfiSafi> afiSafis,
+ static Set<TablesKey> getGracefulTables(final Collection<? extends AfiSafi> afiSafis,
final BGPTableTypeRegistryConsumer tableTypeRegistry) {
Set<TablesKey> gracefulTables = new HashSet<>();
for (final AfiSafi afiSafi : afiSafis) {
- if (afiSafi.getGracefulRestart() != null
- && afiSafi.getGracefulRestart().getConfig() != null
- && afiSafi.getGracefulRestart().getConfig().isEnabled()) {
- final Class<? extends AfiSafiType> afiSafiName = afiSafi.getAfiSafiName();
- if (afiSafiName != null) {
- final Optional<TablesKey> tableKey = tableTypeRegistry.getTableKey(afiSafiName);
- if (tableKey.isPresent()) {
- final TablesKey tablesKey = tableKey.get();
- gracefulTables.add(tablesKey);
+ final GracefulRestart gr = afiSafi.getGracefulRestart();
+ if (gr != null) {
+ final Config config = gr.getConfig();
+ if (config != null && Boolean.TRUE.equals(config.isEnabled())) {
+ final Class<? extends AfiSafiType> afiSafiName = afiSafi.getAfiSafiName();
+ if (afiSafiName != null) {
+ final Optional<TablesKey> tableKey = tableTypeRegistry.getTableKey(afiSafiName);
+ if (tableKey.isPresent()) {
+ final TablesKey tablesKey = tableKey.get();
+ gracefulTables.add(tablesKey);
+ }
}
}
}
return gracefulTables;
}
- static Map<TablesKey, Integer> getLlGracefulTimers(final List<AfiSafi> afiSafis,
+ static Map<TablesKey, Integer> getLlGracefulTimers(final Collection<? extends AfiSafi> afiSafis,
final BGPTableTypeRegistryConsumer tableTypeRegistry) {
final Map<TablesKey, Integer> timers = new HashMap<>();
afiSafis.forEach(afiSafi -> {