import org.checkerframework.checker.lock.qual.GuardedBy;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.dom.api.DOMRpcResult;
-import org.opendaylight.mdsal.dom.api.DOMRpcService;
import org.opendaylight.netconf.api.NetconfMessage;
import org.opendaylight.netconf.api.xml.XmlNetconfConstants;
import org.opendaylight.netconf.sal.connect.api.DeviceActionFactory;
-import org.opendaylight.netconf.sal.connect.api.MessageTransformer;
import org.opendaylight.netconf.sal.connect.api.NetconfDeviceSchemasResolver;
import org.opendaylight.netconf.sal.connect.api.RemoteDevice;
import org.opendaylight.netconf.sal.connect.api.RemoteDeviceCommunicator;
import org.opendaylight.netconf.sal.connect.api.RemoteDeviceHandler;
+import org.opendaylight.netconf.sal.connect.api.RemoteDeviceId;
import org.opendaylight.netconf.sal.connect.api.RemoteDeviceServices;
+import org.opendaylight.netconf.sal.connect.api.RemoteDeviceServices.Rpcs;
import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCapabilities;
import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCommunicator;
import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences;
import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.BaseSchema;
import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.NetconfMessageTransformer;
import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil;
-import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfCapabilityChange;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapability;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapabilityBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.unavailable.capabilities.UnavailableCapability;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.unavailable.capabilities.UnavailableCapability.FailureReason;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.connection.oper.available.capabilities.AvailableCapability;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.connection.oper.available.capabilities.AvailableCapabilityBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.connection.oper.unavailable.capabilities.UnavailableCapability;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.connection.oper.unavailable.capabilities.UnavailableCapability.FailureReason;
import org.opendaylight.yangtools.concepts.Registration;
import org.opendaylight.yangtools.rfc8528.data.api.MountPointContext;
import org.opendaylight.yangtools.rfc8528.data.util.EmptyMountPointContext;
import org.opendaylight.yangtools.rfc8528.model.api.SchemaMountConstants;
import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.RpcError;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.repo.api.EffectiveModelContextFactory;
private boolean connected = false;
// Message transformer is constructed once the schemas are available
- private MessageTransformer messageTransformer;
+ private NetconfMessageTransformer messageTransformer;
public NetconfDevice(final SchemaResourcesDTO schemaResourcesDTO, final BaseNetconfSchemas baseSchemas,
final RemoteDeviceId id, final RemoteDeviceHandler salFacade,
// TODO check whether the model describing create subscription is present in schema
// Perhaps add a default schema context to support create-subscription if the model was not provided
// (same as what we do for base netconf operations in transformer)
- final ListenableFuture<DOMRpcResult> rpcResultListenableFuture = deviceRpc.invokeRpc(
+ final var rpcResultListenableFuture = deviceRpc.invokeRpc(
NetconfMessageTransformUtil.CREATE_SUBSCRIPTION_RPC_QNAME,
NetconfMessageTransformUtil.CREATE_SUBSCRIPTION_RPC_CONTENT);
}
private synchronized void handleSalInitializationSuccess(final NetconfDeviceSchema deviceSchema,
- final NetconfSessionPreferences remoteSessionCapabilities, final DOMRpcService deviceRpc,
+ final NetconfSessionPreferences remoteSessionCapabilities, final Rpcs deviceRpc,
final RemoteDeviceCommunicator listener) {
//NetconfDevice.SchemaSetup can complete after NetconfDeviceCommunicator was closed. In that case do nothing,
//since salFacade.onDeviceDisconnected was already called.
// salFacade.onDeviceConnected has to be called before the notification handler is initialized
salFacade.onDeviceConnected(deviceSchema, remoteSessionCapabilities,
new RemoteDeviceServices(deviceRpc, deviceActionFactory == null ? null
- : deviceActionFactory.createDeviceAction(messageTransformer, listener,
- mount.getEffectiveModelContext())));
+ : deviceActionFactory.createDeviceAction(messageTransformer, listener)));
notificationHandler.onRemoteSchemaUp(messageTransformer);
LOG.info("{}: Netconf connector initialized successfully", id);
updateTransformer(null);
}
- private synchronized void updateTransformer(final MessageTransformer transformer) {
+ private synchronized void updateTransformer(final NetconfMessageTransformer transformer) {
messageTransformer = transformer;
}
}
private MountPointContext processSchemaMounts(final DOMRpcResult rpcResult, final MountPointContext emptyContext) {
- final Collection<? extends RpcError> errors = rpcResult.getErrors();
+ final var errors = rpcResult.errors();
if (!errors.isEmpty()) {
LOG.warn("{}: Schema-mounts acquisition resulted in errors {}", id, errors);
}
- final NormalizedNode schemaMounts = rpcResult.getResult();
+ final var schemaMounts = rpcResult.value();
if (schemaMounts == null) {
LOG.debug("{}: device does not define any schema mounts", id);
return emptyContext;
}
- if (!(schemaMounts instanceof ContainerNode)) {
- LOG.warn("{}: ignoring non-container schema mounts {}", id, schemaMounts);
- return emptyContext;
- }
- return DeviceMountPointContext.create(emptyContext, (ContainerNode) schemaMounts);
+ return DeviceMountPointContext.create(emptyContext, schemaMounts);
}
@Override