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 {
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" },
@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 {
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();