blob: 5d08b143913c70b77a1be0de5a0b00b5a335e5bf [file] [log] [blame]
/*
* 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.ovsdb.rfc.jsonrpc;
import java.util.List;
import org.onosproject.ovsdb.rfc.operations.Operation;
import org.onosproject.ovsdb.rfc.schema.DatabaseSchema;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.common.util.concurrent.ListenableFuture;
/**
* The following interface describe the RPC7047's methods that are supported.
*/
public interface OvsdbRPC {
/**
* This operation retrieves a database-schema that describes hosted database
* db-name.
* @param dbnames database name
* @return ListenableFuture of JsonNode
*/
ListenableFuture<JsonNode> getSchema(List<String> dbnames);
/**
* The "echo" method can be used by both clients and servers to verify the
* liveness of a database connection.
* @return return info
*/
ListenableFuture<List<String>> echo();
/**
* The "monitor" request enables a client to replicate tables or subsets of
* tables within an OVSDB database by requesting notifications of changes to
* those tables and by receiving the complete initial state of a table or a
* subset of a table.
* @param dbSchema databse schema
* @param monitorId a id for monitor
* @return ListenableFuture of JsonNode
*/
ListenableFuture<JsonNode> monitor(DatabaseSchema dbSchema, String monitorId);
/**
* This operation retrieves an array whose elements are the names of the
* databases that can be accessed over this management protocol connection.
* @return database names
*/
ListenableFuture<List<String>> listDbs();
/**
* This RPC method causes the database server to execute a series of
* operations in the specified order on a given database.
* @param dbSchema database schema
* @param operations the operations to execute
* @return result the transact result
*/
ListenableFuture<List<JsonNode>> transact(DatabaseSchema dbSchema,
List<Operation> operations);
}