X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnetconf%2Ftools%2Fnetconf-cli%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fcli%2Fcommands%2Flocal%2FDisconnect.java;fp=opendaylight%2Fnetconf%2Ftools%2Fnetconf-cli%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fcli%2Fcommands%2Flocal%2FDisconnect.java;h=2bb9c00dcf1d4b17921587f211973193702f5624;hb=23fe9ca678ada6263fec5dd996f4025e4a32fcf5;hp=0000000000000000000000000000000000000000;hpb=071a641d7c12c0e6112d5ce0afe806b54f116ed2;p=controller.git diff --git a/opendaylight/netconf/tools/netconf-cli/src/main/java/org/opendaylight/controller/netconf/cli/commands/local/Disconnect.java b/opendaylight/netconf/tools/netconf-cli/src/main/java/org/opendaylight/controller/netconf/cli/commands/local/Disconnect.java new file mode 100644 index 0000000000..2bb9c00dcf --- /dev/null +++ b/opendaylight/netconf/tools/netconf-cli/src/main/java/org/opendaylight/controller/netconf/cli/commands/local/Disconnect.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * 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.controller.netconf.cli.commands.local; + +import org.opendaylight.controller.netconf.cli.NetconfDeviceConnectionManager; +import org.opendaylight.controller.netconf.cli.commands.AbstractCommand; +import org.opendaylight.controller.netconf.cli.commands.Command; +import org.opendaylight.controller.netconf.cli.commands.input.Input; +import org.opendaylight.controller.netconf.cli.commands.input.InputDefinition; +import org.opendaylight.controller.netconf.cli.commands.output.Output; +import org.opendaylight.controller.netconf.cli.commands.output.OutputDefinition; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder; +import org.opendaylight.yangtools.yang.model.api.RpcDefinition; + +/** + * Local disconnect command + */ +public class Disconnect extends AbstractCommand { + + private final NetconfDeviceConnectionManager connectionManager; + + public Disconnect(final QName qName, final InputDefinition inputDefinition, + final OutputDefinition outputDefinition, final NetconfDeviceConnectionManager connectionManager, + final String description) { + super(qName, inputDefinition, outputDefinition, description); + this.connectionManager = connectionManager; + } + + @Override + public Output invoke(final Input inputArgs) { + connectionManager.disconnect(); + + return new Output( + ImmutableContainerNodeBuilder.create() + .withNodeIdentifier(new NodeIdentifier(getCommandId())) + .withChild(ImmutableLeafNodeBuilder.create() + .withNodeIdentifier(new NodeIdentifier(QName.create(getCommandId(), "status"))) + .withValue("Connection disconnected").build()).build()); + } + + public static Command create(final RpcDefinition rpcDefinition, + final NetconfDeviceConnectionManager commandDispatcher) { + return new Disconnect(rpcDefinition.getQName(), getInputDefinition(rpcDefinition), + getOutputDefinition(rpcDefinition), commandDispatcher, rpcDefinition.getDescription()); + } +}