Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import org.opendaylight.netconf.client.mdsal.api.SchemaResourceManager;
import org.opendaylight.netconf.client.mdsal.impl.DefaultBaseNetconfSchemaProvider;
import org.opendaylight.netconf.client.mdsal.impl.DefaultSchemaResourceManager;
import org.opendaylight.netconf.common.NetconfTimer;
import org.opendaylight.netconf.common.di.DefaultNetconfTimer;
import org.opendaylight.netconf.topology.callhome.CallHomeMountService;
import org.opendaylight.netconf.topology.callhome.CallHomeMountSshAuthProvider;
Expand All @@ -31,27 +30,30 @@ public class NetconfCallhomePlugin extends AbstractLightyModule {

private final IetfZeroTouchCallHomeServerProvider provider;
private final CallHomeMountService dispatcher;
private final CallHomeMountStatusReporter mountStatusReporter;
private final NetconfTopologySchemaAssembler netconfTopologySchemaAssembler;
private final DefaultNetconfTimer timer;

public NetconfCallhomePlugin(final LightyServices lightyServices, final String topologyId,
final ExecutorService executorService, final String adress, final int port) {
super(executorService);
final DefaultBaseNetconfSchemaProvider defaultBaseNetconfSchemas = new
DefaultBaseNetconfSchemaProvider(lightyServices.getYangParserFactory());
final SchemaResourceManager manager = new DefaultSchemaResourceManager(lightyServices.getYangParserFactory());
final var mountStatusReporter = new CallHomeMountStatusReporter(
mountStatusReporter = new CallHomeMountStatusReporter(
lightyServices.getBindingDataBroker());
final CallHomeSshAuthProvider authProvider = new CallHomeMountSshAuthProvider(
lightyServices.getBindingDataBroker(), mountStatusReporter);
final var recorder = new CallHomeMountStatusReporter(lightyServices.getBindingDataBroker());
final NetconfTimer timer = new DefaultNetconfTimer();
timer = new DefaultNetconfTimer();
final CallHomeMountService.Configuration configuration = new Configuration(adress, port);
netconfTopologySchemaAssembler = new NetconfTopologySchemaAssembler(1);

this.dispatcher =
new CallHomeMountService(topologyId, timer,
new NetconfTopologySchemaAssembler(1),
netconfTopologySchemaAssembler,
manager, defaultBaseNetconfSchemas, lightyServices.getBindingDataBroker(),
lightyServices.getDOMMountPointService(), new DeviceActionFactoryImpl(), configuration);
this.provider = new IetfZeroTouchCallHomeServerProvider(timer, dispatcher, authProvider, recorder,
this.provider = new IetfZeroTouchCallHomeServerProvider(timer, dispatcher, authProvider, mountStatusReporter,
configuration);
}

Expand All @@ -63,14 +65,27 @@ protected boolean initProcedure() {
@SuppressWarnings("checkstyle:illegalCatch")
@Override
protected boolean stopProcedure() {
boolean success = true;
success &= closeResource(provider);
success &= closeResource(dispatcher);
success &= closeResource(netconfTopologySchemaAssembler);
success &= closeResource(timer);
success &= closeResource(mountStatusReporter);
return success;
}

@SuppressWarnings({"checkstyle:illegalCatch"})
private static boolean closeResource(final AutoCloseable resource) {
if (resource == null) {
return true;
}
try {
this.dispatcher.close();
this.provider.close();
} catch (final Exception e) {
LOG.error("{} failed to close!", this.provider.getClass(), e);
resource.close();
return true;
} catch (Exception e) {
LOG.error("{} failed to close!", resource.getClass().getName(), e);
return false;
}
return true;
}

public static class Configuration implements CallHomeMountService.Configuration {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ public final class NetconfTopologyPlugin extends AbstractTopologyPlugin {
private NetconfTopologyImpl netconfTopologyImpl;
private final AAAEncryptionService encryptionService;
private final LightyServices lightyServices;
private NetconfTopologySchemaAssembler assembler;
private DefaultNetconfTimer timer;

NetconfTopologyPlugin(final LightyServices lightyServices, final String topologyId,
final ExecutorService executorService, final AAAEncryptionService encryptionService) {
Expand All @@ -53,15 +55,16 @@ protected boolean initProcedure() {
final NetconfKeystoreService service = new DefaultNetconfKeystoreService(
lightyServices.getBindingDataBroker(), lightyServices.getRpcProviderService(),
lightyServices.getClusterSingletonServiceProvider(), encryptionService);
final NetconfClientFactory netconfFactory = new NetconfClientFactoryImpl(new DefaultNetconfTimer());
timer = new DefaultNetconfTimer();
final NetconfClientFactory netconfFactory = new NetconfClientFactoryImpl(timer);
final CredentialProvider credentialProvider = new DefaultCredentialProvider(service);
final SslContextFactoryProvider factoryProvider = new DefaultSslContextFactoryProvider(service);
final NetconfClientConfigurationBuilderFactory factory = new NetconfClientConfigurationBuilderFactoryImpl(
encryptionService, credentialProvider, factoryProvider);
final NetconfTopologySchemaAssembler assembler = new NetconfTopologySchemaAssembler(1);
assembler = new NetconfTopologySchemaAssembler(1);
final SchemaResourceManager schemaResourceManager =
new DefaultSchemaResourceManager(lightyServices.getYangParserFactory());
netconfTopologyImpl = new NetconfTopologyImpl(topologyId, netconfFactory, new DefaultNetconfTimer(), assembler,
netconfTopologyImpl = new NetconfTopologyImpl(topologyId, netconfFactory, timer, assembler,
schemaResourceManager, lightyServices.getBindingDataBroker(), lightyServices.getDOMMountPointService(),
encryptionService, factory, lightyServices.getRpcProviderService(),
defaultBaseNetconfSchemas, new LightyDeviceActionFactory());
Expand All @@ -70,14 +73,29 @@ protected boolean initProcedure() {

@Override
protected boolean stopProcedure() {
if (netconfTopologyImpl != null) {
netconfTopologyImpl.close();
}
return true;
boolean success = true;
success &= closeResource(netconfTopologyImpl);
success &= closeResource(assembler);
success &= closeResource(timer);
return success;
}

@Override
public boolean isClustered() {
return false;
}

@SuppressWarnings({"checkstyle:illegalCatch"})
private static boolean closeResource(final AutoCloseable resource) {
if (resource == null) {
return true;
}
try {
resource.close();
return true;
} catch (Exception e) {
LOG.error("{} failed to close!", resource.getClass().getName(), e);
return false;
}
}
}
Loading