Merge "NETCONF-557: Add support for URL capability"
[netconf.git] / netconf / netconf-topology / src / main / java / org / opendaylight / netconf / topology / impl / NetconfConnectorFactoryImpl.java
index dc5649f49a1dd7b4d84c6e52a107885034641ae8..996f7c91ca706f26db5f3981aa64c0854d8aa335 100644 (file)
@@ -7,14 +7,13 @@
  */
 package org.opendaylight.netconf.topology.impl;
 
-import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.MoreExecutors;
 import javax.annotation.Nullable;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
+import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.netconf.topology.api.NetconfConnectorFactory;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Host;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.HostBuilder;
@@ -22,7 +21,8 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.Credentials;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.credentials.LoginPasswordBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.credentials.LoginPwBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.credentials.login.pw.LoginPasswordBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
@@ -45,9 +45,6 @@ public class NetconfConnectorFactoryImpl implements NetconfConnectorFactory {
     private static final InstanceIdentifier<Topology> TOPOLOGY_PATH = InstanceIdentifier.create(NetworkTopology.class)
             .child(Topology.class, new TopologyKey(new TopologyId("topology-netconf")));
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
     public Node newInstance(final DataBroker dataBroker,
                             final String instanceName,
@@ -60,9 +57,12 @@ public class NetconfConnectorFactoryImpl implements NetconfConnectorFactory {
 
         final NodeId nodeId = new NodeId(instanceName);
         final NodeKey nodeKey = new NodeKey(nodeId);
-        final Credentials credentials = new LoginPasswordBuilder()
-                .setUsername(username)
-                .setPassword(password)
+        final Credentials credentials = new LoginPwBuilder()
+                .setLoginPassword(
+                        new LoginPasswordBuilder()
+                                .setUsername(username)
+                                .setPassword(password)
+                                .build())
                 .build();
         final Host host = HostBuilder.getDefaultInstance(address);
         final PortNumber portNumber = new PortNumber(port);
@@ -75,25 +75,24 @@ public class NetconfConnectorFactoryImpl implements NetconfConnectorFactory {
                 .build();
         final Node node =  new NodeBuilder()
                 .setNodeId(nodeId)
-                .setKey(nodeKey)
+                .withKey(nodeKey)
                 .addAugmentation(NetconfNode.class, netconfNode)
                 .build();
 
         final InstanceIdentifier<Node> nodePath = TOPOLOGY_PATH.child(Node.class, nodeKey);
         final WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
         transaction.put(LogicalDatastoreType.CONFIGURATION, nodePath, node);
-        final CheckedFuture<Void, TransactionCommitFailedException> submitFuture = transaction.submit();
-        Futures.addCallback(submitFuture, new FutureCallback<Void>() {
+        transaction.commit().addCallback(new FutureCallback<CommitInfo>() {
             @Override
-            public void onSuccess(@Nullable final Void result) {
+            public void onSuccess(@Nullable final CommitInfo result) {
                 LOG.debug("Node {} was successfully added to the topology", instanceName);
             }
 
             @Override
-            public void onFailure(final Throwable t) {
-                LOG.error("Node {} creation failed: {}", instanceName, t);
+            public void onFailure(final Throwable throwable) {
+                LOG.error("Node {} creation failed", instanceName, throwable);
             }
-        });
+        }, MoreExecutors.directExecutor());
         return node;
     }
 }
\ No newline at end of file