BUG-9261: introduce new Credential types
[netconf.git] / netconf / netconf-console / src / main / java / org / opendaylight / netconf / console / commands / NetconfConnectDeviceCommand.java
index 7139e1ea313b1055018a732457a171a206871c6b..6cffd1b164aedb74db928ba5ef6d633189921e7b 100644 (file)
@@ -8,18 +8,19 @@
 
 package org.opendaylight.netconf.console.commands;
 
+import com.google.common.annotations.VisibleForTesting;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.shell.console.AbstractAction;
 import org.opendaylight.netconf.console.api.NetconfCommands;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Host;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
+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.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
 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.LoginPasswordDeprecatedBuilder;
 
 @Command(name = "netconf:connect-device", scope = "netconf", description = "Connect to a netconf device.")
 public class NetconfConnectDeviceCommand extends AbstractAction {
@@ -30,12 +31,19 @@ public class NetconfConnectDeviceCommand extends AbstractAction {
         this.service = service;
     }
 
+    @VisibleForTesting
+    NetconfConnectDeviceCommand(final NetconfCommands service, final String deviceIp, final String devicePort) {
+        this.service = service;
+        this.deviceIp = deviceIp;
+        this.devicePort = devicePort;
+    }
+
     @Option(name = "-i",
             aliases = { "--ipaddress" },
             description = "IP address of the netconf device",
             required = true,
             multiValued = false)
-    private String deviceIp = "";
+    private String deviceIp;
 
     @Option(name = "-p",
             aliases = { "--port" },
@@ -60,17 +68,24 @@ public class NetconfConnectDeviceCommand extends AbstractAction {
 
     @Option(name = "-t",
             aliases = { "--tcp-only" },
-            description = "Type of connection, true for tcp only, false by default",
+            description = "Type of connection, true for tcp only",
             required = false,
             multiValued = false)
     private String connectionType = "false";
 
+    @Option(name = "-sl",
+            aliases = { "--schemaless" },
+            description = "Schemaless surpport, true for schemaless",
+            required = false,
+            multiValued = false)
+    private String schemaless = "false";
+
     @Option(name = "-id",
             aliases = { "--identifier" },
             description = "Node Identifier of the netconf device",
             required = false,
             multiValued = false)
-    private String deviceId = "";
+    private String deviceId;
 
     @Override
     protected Object doExecute() throws Exception {
@@ -78,13 +93,16 @@ public class NetconfConnectDeviceCommand extends AbstractAction {
             return "Invalid IP:" + deviceIp + " or Port:" + devicePort + "Please enter a valid entry to proceed.";
         }
 
-        final boolean isTcpOnly = (connectionType.equals("true")) ? true : false;
-        final Credentials credentials = new LoginPasswordBuilder().setPassword(password).setUsername(username).build();
+        final boolean isTcpOnly = connectionType.equals("true");
+        final boolean isSchemaless = schemaless.equals("true");
+        final Credentials credentials =
+                new LoginPasswordDeprecatedBuilder().setPassword(password).setUsername(username).build();
 
         final NetconfNode netconfNode = new NetconfNodeBuilder()
                                         .setHost(new Host(new IpAddress(new Ipv4Address(deviceIp))))
                                         .setPort(new PortNumber(Integer.decode(devicePort)))
                                         .setTcpOnly(isTcpOnly)
+                                        .setSchemaless(isSchemaless)
                                         .setCredentials(credentials)
                                         .build();