2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.netconf.test.tool.config;
10 import com.google.common.collect.ImmutableSet;
12 import java.security.PublicKey;
14 import java.util.concurrent.TimeUnit;
15 import org.apache.sshd.server.auth.pubkey.PublickeyAuthenticator;
16 import org.apache.sshd.server.session.ServerSession;
17 import org.opendaylight.netconf.api.xml.XmlNetconfConstants;
18 import org.opendaylight.netconf.auth.AuthProvider;
19 import org.opendaylight.netconf.test.tool.operations.OperationsCreator;
20 import org.opendaylight.netconf.test.tool.rpchandler.RpcHandler;
21 import org.opendaylight.netconf.test.tool.rpchandler.RpcHandlerDefault;
22 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory;
25 public class Configuration {
27 private static final Logger LOG = LoggerFactory.getLogger(Configuration.class);
29 public static final Set<String> DEFAULT_BASE_CAPABILITIES_EXI = ImmutableSet.of(
30 XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_BASE_1_0,
31 XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_BASE_1_1,
32 XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_CAPABILITY_EXI_1_0
35 public static final Set<String> DEFAULT_BASE_CAPABILITIES = ImmutableSet.of(
36 XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_BASE_1_0,
37 XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_BASE_1_1
40 public static final Set<YangResource> DEFAULT_YANG_RESOURCES = ImmutableSet.of(
41 new YangResource("ietf-netconf-monitoring", "2010-10-04",
42 "/META-INF/yang/ietf-netconf-monitoring.yang"),
43 new YangResource("ietf-netconf-monitoring-extension", "2013-12-10",
44 "/META-INF/yang/ietf-netconf-monitoring-extension.yang"),
45 new YangResource("ietf-yang-types", "2013-07-15",
46 "/META-INF/yang/ietf-yang-types@2013-07-15.yang"),
47 new YangResource("ietf-inet-types", "2013-07-15",
48 "/META-INF/yang/ietf-inet-types@2013-07-15.yang")
51 public static final AuthProvider DEFAULT_AUTH_PROVIDER = (username, password) -> {
52 LOG.info("Auth with username and password: {}", username);
56 public static final PublickeyAuthenticator DEFAULT_PUBLIC_KEY_AUTHENTICATOR = new PublickeyAuthenticator() {
58 public boolean authenticate(final String username, final PublicKey key, final ServerSession session) {
59 LOG.info("Auth with public key: {}", key);
64 private int generateConfigsTimeout = (int) TimeUnit.MINUTES.toMillis(30);
65 private int threadPoolSize = 8;
66 private int startingPort = 17830;
67 private int deviceCount = 1;
68 private boolean ssh = true;
69 private String ip = "0.0.0.0";
70 private Set<YangResource> defaultYangResources = DEFAULT_YANG_RESOURCES;
72 private Set<String> models;
73 private Set<String> capabilities = DEFAULT_BASE_CAPABILITIES_EXI;
74 private RpcHandler rpcHandler = new RpcHandlerDefault();
75 private OperationsCreator operationsCreator;
76 private AuthProvider authProvider = DEFAULT_AUTH_PROVIDER;
77 private PublickeyAuthenticator publickeyAuthenticator = DEFAULT_PUBLIC_KEY_AUTHENTICATOR;
80 private boolean mdSal = false;
83 private File rpcConfigFile;
86 private File notificationFile;
89 private File initialConfigXMLFile;
92 private File schemasDir;
94 public Configuration() {
97 public PublickeyAuthenticator getPublickeyAuthenticator() {
98 return publickeyAuthenticator;
101 public void setPublickeyAuthenticator(final PublickeyAuthenticator publickeyAuthenticator) {
102 this.publickeyAuthenticator = publickeyAuthenticator;
105 public AuthProvider getAuthProvider() {
109 public void setAuthProvider(final AuthProvider authProvider) {
110 this.authProvider = authProvider;
113 public Set<YangResource> getDefaultYangResources() {
114 return defaultYangResources;
117 public void setDefaultYangResources(final Set<YangResource> defaultYangResources) {
118 this.defaultYangResources = defaultYangResources;
121 public int getThreadPoolSize() {
122 return threadPoolSize;
125 public void setThreadPoolSize(final int threadPoolSize) {
126 this.threadPoolSize = threadPoolSize;
129 public int getStartingPort() {
133 public void setStartingPort(final int startingPort) {
134 this.startingPort = startingPort;
137 public int getDeviceCount() {
141 public void setDeviceCount(final int deviceCount) {
142 this.deviceCount = deviceCount;
145 public int getGenerateConfigsTimeout() {
146 return generateConfigsTimeout;
149 public void setGenerateConfigsTimeout(final int generateConfigsTimeout) {
150 this.generateConfigsTimeout = generateConfigsTimeout;
153 public boolean isSsh() {
157 public void setSsh(final boolean ssh) {
161 public String getIp() {
165 public void setIp(final String ip) {
169 public Set<String> getModels() {
173 public void setModels(final Set<String> models) {
174 this.models = models;
177 public Set<String> getCapabilities() {
181 public void setCapabilities(final Set<String> capabilities) {
182 this.capabilities = capabilities;
185 public RpcHandler getRpcHandler() {
189 public void setRpcHandler(final RpcHandler rpcHandler) {
190 this.rpcHandler = rpcHandler;
193 public OperationsCreator getOperationsCreator() {
194 return operationsCreator;
197 public void setOperationsCreator(final OperationsCreator operationsCreator) {
198 this.operationsCreator = operationsCreator;
202 public boolean isMdSal() {
207 public void setMdSal(final boolean mdSal) {
212 public File getRpcConfigFile() {
213 return rpcConfigFile;
217 public void setRpcConfigFile(final File rpcConfigFile) {
218 this.rpcConfigFile = rpcConfigFile;
222 public File getNotificationFile() {
223 return notificationFile;
227 public void setNotificationFile(final File notificationFile) {
228 this.notificationFile = notificationFile;
232 public File getInitialConfigXMLFile() {
233 return initialConfigXMLFile;
237 public void setInitialConfigXMLFile(final File initialConfigXMLFile) {
238 this.initialConfigXMLFile = initialConfigXMLFile;
242 public boolean isXmlConfigurationProvided() {
243 return initialConfigXMLFile != null && notificationFile != null;
247 public File getSchemasDir() {
252 public void setSchemasDir(final File schemasDir) {
253 this.schemasDir = schemasDir;