Move shaded components to third-party/
[netconf.git] / netconf / netconf-console / src / main / java / org / opendaylight / netconf / console / commands / NetconfConnectDeviceCommand.java
index cedb5db57652cea52398c41ce62acef831caed53..b45d7cb8edb17a655e89bae219914fed81c6f811 100644 (file)
@@ -5,45 +5,46 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.netconf.console.commands;
 
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Strings;
-import java.util.Arrays;
+import com.google.common.collect.ImmutableSet;
 import org.apache.karaf.shell.api.action.Action;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Reference;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.opendaylight.netconf.console.api.NetconfCommands;
 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.NetconfNodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.parameters.Protocol.Name;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.parameters.ProtocolBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.parameters.protocol.specification.TlsCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.parameters.protocol.specification.TlsCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.parameters.protocol.specification.tls._case.TlsBuilder;
-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;
-
-@Command(name = "netconf:connect-device", scope = "netconf", description = "Connect to a netconf device.")
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.connection.parameters.Protocol.Name;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.connection.parameters.ProtocolBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.connection.parameters.protocol.specification.TlsCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.connection.parameters.protocol.specification.TlsCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.connection.parameters.protocol.specification.tls._case.TlsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.credentials.credentials.LoginPasswordBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNodeBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
+
+@Service
+@Command(name = "connect-device", scope = "netconf", description = "Connect to a netconf device.")
 public class NetconfConnectDeviceCommand implements Action {
 
-    protected final NetconfCommands service;
+    @Reference
+    private NetconfCommands service;
+
+    public NetconfConnectDeviceCommand() {
 
-    public NetconfConnectDeviceCommand(final NetconfCommands service) {
-        this.service = service;
     }
 
     @VisibleForTesting
-    NetconfConnectDeviceCommand(final NetconfCommands service, final String deviceIp, final String devicePort) {
+    NetconfConnectDeviceCommand(final NetconfCommands service) {
         this.service = service;
-        this.deviceIp = deviceIp;
-        this.devicePort = devicePort;
     }
 
     @VisibleForTesting
@@ -74,6 +75,7 @@ public class NetconfConnectDeviceCommand implements Action {
             aliases = { "--username" },
             description = "Username for netconf connection",
             required = false,
+            censor = true,
             multiValued = false)
     private String username;
 
@@ -81,6 +83,7 @@ public class NetconfConnectDeviceCommand implements Action {
             aliases = { "--password" },
             description = "Password for netconf connection",
             required = false,
+            censor = true,
             multiValued = false)
     private String password;
 
@@ -130,7 +133,7 @@ public class NetconfConnectDeviceCommand implements Action {
 
         final NetconfNodeBuilder netconfNodeBuilder = new NetconfNodeBuilder();
         netconfNodeBuilder.setHost(new Host(new IpAddress(new Ipv4Address(deviceIp))))
-                          .setPort(new PortNumber(Integer.decode(devicePort)))
+                          .setPort(new PortNumber(Uint16.valueOf(Integer.decode(devicePort))))
                           .setTcpOnly(isTcpOnly)
                           .setSchemaless(isSchemaless);
 
@@ -139,9 +142,10 @@ public class NetconfConnectDeviceCommand implements Action {
                 return "Empty Username:" + username + " or Password:" + password
                         + ". In TCP or SSH mode, you must provide valid username and password.";
             }
-            final Credentials credentials =
-                    new LoginPasswordBuilder().setPassword(password).setUsername(username).build();
-            netconfNodeBuilder.setCredentials(credentials);
+            netconfNodeBuilder.setCredentials(new LoginPasswordBuilder()
+                .setUsername(username)
+                .setPassword(password)
+                .build());
             if (!isTcpOnly) {
                 netconfNodeBuilder.setProtocol(new ProtocolBuilder().setName(Name.SSH).build());
             }
@@ -150,7 +154,7 @@ public class NetconfConnectDeviceCommand implements Action {
             if (!Strings.isNullOrEmpty(excludedTlsVersions)) {
                 tlsCase = new TlsCaseBuilder()
                             .setTls(new TlsBuilder()
-                                    .setExcludedVersions(Arrays.asList(excludedTlsVersions.split(","))).build())
+                                    .setExcludedVersions(ImmutableSet.copyOf(excludedTlsVersions.split(","))).build())
                             .build();
             }
             netconfNodeBuilder.setProtocol(new ProtocolBuilder()