import com.google.common.base.MoreObjects;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.util.concurrent.Future;
+import java.math.BigDecimal;
import org.opendaylight.netconf.api.NetconfMessage;
import org.opendaylight.netconf.api.NetconfTerminationReason;
import org.opendaylight.netconf.callhome.protocol.CallHomeChannelActivator;
import org.opendaylight.netconf.client.NetconfClientSessionListener;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Host;
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;
+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.credentials.credentials.LoginPasswordBuilder;
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.network.topology.topology.Node;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yangtools.yang.common.Uint32;
// Non-final to allow mocking
class CallHomeMountSessionContext {
return key;
}
+ /**
+ * Create device default configuration.
+ *
+ * <p>
+ * This configuration is a replacement of configuration device data
+ * which is normally stored in configuration datastore but is absent for call-home devices.
+ *
+ * @return {@link Node} containing the default device configuration
+ */
+ // FIXME make these defaults tune-able in odl-netconf-callhome-server
Node getConfigNode() {
return new NodeBuilder()
.setNodeId(getId())
.addAugmentation(new NetconfNodeBuilder()
- .setHost(new Host(key.getIpAddress()))
- .setPort(key.getPort())
- .setTcpOnly(Boolean.FALSE)
- .setCredentials(new LoginPasswordBuilder()
- .setUsername("ommited")
- .setPassword("ommited")
- .build())
- .setSchemaless(Boolean.FALSE)
+ .setHost(new Host(key.getIpAddress()))
+ .setPort(key.getPort())
+ .setTcpOnly(false)
+ .setProtocol(new ProtocolBuilder()
+ .setName(Protocol.Name.valueOf(protocol.getTransportType().name()))
+ .build())
+ .setSchemaless(false)
+ .setReconnectOnChangedSchema(false)
+ .setConnectionTimeoutMillis(Uint32.valueOf(20000))
+ .setDefaultRequestTimeoutMillis(Uint32.valueOf(60000))
+ .setMaxConnectionAttempts(Uint32.ZERO)
+ .setBetweenAttemptsTimeoutMillis(Uint16.valueOf(2000))
+ .setSleepFactor(new BigDecimal("1.5"))
+ .setKeepaliveDelay(Uint32.valueOf(120))
+ .setConcurrentRpcLimit(Uint16.ZERO)
+ .setActorResponseWaitTime(Uint16.valueOf(5))
+ // the real call-home device credentials are applied in CallHomeAuthProviderImpl
+ .setCredentials(new LoginPasswordBuilder()
+ .setUsername("omitted")
+ .setPassword("omitted")
+ .build())
.build())
.build();
}