X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=netconf%2Fnetconf-topology-singleton%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Ftopology%2Fsingleton%2Fimpl%2FMasterSalFacade.java;h=8e13f630d8fc267a34ce5af2786ff56871f8e7b0;hb=4685af5ad0d723e1aaaacba29b577d37a59a1043;hp=8e45cbc37462965dcb324e75c62c7d470723fc9f;hpb=77eb72cb594acdcf302a9a49aeb9ced8281bab8c;p=netconf.git diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/MasterSalFacade.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/MasterSalFacade.java index 8e45cbc374..8e13f630d8 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/MasterSalFacade.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/MasterSalFacade.java @@ -13,29 +13,28 @@ import akka.actor.ActorSystem; import akka.cluster.Cluster; import akka.dispatch.OnComplete; import akka.pattern.Patterns; -import com.google.common.base.Optional; +import akka.util.Timeout; import com.google.common.base.Preconditions; import java.util.List; import java.util.stream.Collectors; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.dom.api.DOMActionService; import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; +import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; import org.opendaylight.controller.md.sal.dom.api.DOMNotification; import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; -import org.opendaylight.controller.sal.core.api.Broker; import org.opendaylight.netconf.sal.connect.api.RemoteDeviceHandler; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCapabilities; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences; +import org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceDataBroker; import org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceNotificationService; import org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceSalProvider; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; -import org.opendaylight.netconf.topology.singleton.api.NetconfDOMTransaction; -import org.opendaylight.netconf.topology.singleton.impl.tx.NetconfMasterDOMTransaction; -import org.opendaylight.netconf.topology.singleton.impl.utils.NetconfTopologyUtils; import org.opendaylight.netconf.topology.singleton.messages.CreateInitialMasterActorData; -import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; +import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import scala.concurrent.Future; @@ -45,55 +44,63 @@ class MasterSalFacade implements AutoCloseable, RemoteDeviceHandler() { @Override - public void onComplete(final Throwable failure, final Object success) throws Throwable { + public void onComplete(final Throwable failure, final Object success) { if (failure == null) { updateDeviceData(); return; } - throw failure; + + LOG.error("{}: CreateInitialMasterActorData to {} failed", id, masterActorRef, failure); } }, actorSystem.dispatcher()); @@ -101,6 +108,7 @@ class MasterSalFacade implements AutoCloseable, RemoteDeviceHandler sendInitialDataToActor() { final List sourceIdentifiers = - remoteSchemaContext.getAllModuleIdentifiers().stream().map(mi -> - RevisionSourceIdentifier.create(mi.getName(), - (SimpleDateFormatUtil.DEFAULT_DATE_REV == mi.getRevision() ? Optional.absent() : - Optional.of(SimpleDateFormatUtil.getRevisionFormat().format(mi.getRevision()))))) - .collect(Collectors.toList()); - - // send initial data to master actor and create actor for providing it - return Patterns.ask(masterActorRef, new CreateInitialMasterActorData(deviceDataBroker, sourceIdentifiers), - NetconfTopologyUtils.TIMEOUT); + SchemaContextUtil.getConstituentModuleIdentifiers(currentSchemaContext).stream() + .map(mi -> RevisionSourceIdentifier.create(mi.getName(), mi.getRevision())) + .collect(Collectors.toList()); + + LOG.debug("{}: Sending CreateInitialMasterActorData with sourceIdentifiers {} to {}", + id, sourceIdentifiers, masterActorRef); + + // send initial data to master actor + return Patterns.ask(masterActorRef, new CreateInitialMasterActorData(deviceDataBroker, sourceIdentifiers, + deviceRpc), actorResponseWaitTime); } private void updateDeviceData() { - Cluster cluster = Cluster.get(actorSystem); - salProvider.getTopologyDatastoreAdapter().updateClusteredDeviceData(true, cluster.selfAddress().toString(), + final String masterAddress = Cluster.get(actorSystem).selfAddress().toString(); + LOG.debug("{}: updateDeviceData with master address {}", id, masterAddress); + salProvider.getTopologyDatastoreAdapter().updateClusteredDeviceData(true, masterAddress, netconfSessionPreferences.getNetconfDeviceCapabilities()); } @@ -164,6 +178,7 @@ class MasterSalFacade implements AutoCloseable, RemoteDeviceHandler