/* * Copyright 2015 Open Networking Laboratory * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.onosproject.netconf; import java.util.List; /** * NETCONF session object that allows NETCONF operations on top with the physical * device on top of an SSH connection. */ // TODO change return type of methdos to public interface NetconfSession { /** * Retrives the requested configuration, different from get-config. * @param request the XML containing the request to the server. * @return device running configuration */ String get(String request); /** * Executes an RPC to the server. * @param request the XML containing the RPC for the server. * @return Server response or ERROR */ String doRPC(String request); /** * Retrives the specified configuration. * * @param targetConfiguration the type of configuration to retrieve. * @return specified configuration. */ String getConfig(String targetConfiguration); /** * Retrives part of the specivied configuration based on the filterSchema. * * @param targetConfiguration the type of configuration to retrieve. * @param configurationFilterSchema XML schema to filter the configuration * elements we are interested in * @return device running configuration. */ String getConfig(String targetConfiguration, String configurationFilterSchema); /** * Retrives part of the specified configuration based on the filterSchema. * * @param newConfiguration configuration to set * @return true if the configuration was edited correctly */ boolean editConfig(String newConfiguration); /** * Copies the new configuration, an Url or a complete configuration xml tree * to the target configuration. * The target configuration can't be the running one * * @param targetConfiguration the type of configuration to retrieve. * @param newConfiguration configuration to set * @return true if the configuration was copied correctly */ boolean copyConfig(String targetConfiguration, String newConfiguration); /** * Deletes part of the specified configuration based on the filterSchema. * * @param targetConfiguration the name of the configuration to delete * @return true if the configuration was copied correctly */ boolean deleteConfig(String targetConfiguration); /** * Locks the candidate configuration. * * @return true if successful. */ boolean lock(); /** * Unlocks the candidate configuration. * * @return true if successful. */ boolean unlock(); /** * Closes the Netconf session with the device. * the first time it tries gracefully, then kills it forcefully * @return true if closed */ boolean close(); /** * Gets the session ID of the Netconf session. * * @return Session ID as a string. */ String getSessionId(); /** * Gets the capabilities of the Netconf server associated to this session. * * @return Network capabilities as a string. */ String getServerCapabilities(); /** * Sets the device capabilities. * @param capabilities list of capabilities the device has. */ void setDeviceCapabilities(List capabilities); }