3 * * Copyright (C) 2014 EBay Software Foundation
5 * * This program and the accompanying materials are made available under the
6 * * terms of the Eclipse Public License v1.0 which accompanies this distribution,
7 * * and is available at http://www.eclipse.org/legal/epl-v10.html
9 * * Authors : Ashwin Raveendran
13 package org.opendaylight.ovsdb.lib;
15 import com.google.common.util.concurrent.ListenableFuture;
16 import org.opendaylight.ovsdb.lib.message.MonitorRequest;
17 import org.opendaylight.ovsdb.lib.operations.Operation;
18 import org.opendaylight.ovsdb.lib.operations.OperationResult;
19 import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
20 import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
22 import java.util.List;
25 * The main interface to interact with a device speaking ovsdb protocol in an asynchronous fashion and hence most
26 * operations return a Future object representing the eventual response data from the remote.
28 public interface OvsDBClient {
31 * Represents the Open Vswitch Schema
33 String OPEN_VSWITCH_SCHEMA = "Open_vSwitch";
36 * Gets the list of database names exposed by this ovsdb capable device
37 * @return list of database names
39 ListenableFuture<List<String>> getDatabases();
42 * Asynchronously returns the schema object for a specific database
43 * @param database name of the database schema
44 * @param cacheResult if the results be cached by this instance
45 * @return DatabaseSchema future
47 ListenableFuture<DatabaseSchema> getSchema(String database, boolean cacheResult);
50 * Allows for a mini DSL way of collecting the transactions to be executed against the ovsdb instance.
51 * @return TransactionBuilder
53 TransactionBuilder transactBuilder();
56 * Execute the list of operations in a single Transactions. Similar to the transactBuilder() method
57 * @param operations List of operations that needs to be part of a transact call
58 * @return Future object representing the result of the transaction. Calling
59 * cancel on the Future would cause OVSDB cancel operation to be fired against
62 ListenableFuture<List<OperationResult>> transact(List<Operation> operations);
66 * ovsdb <a href="http://tools.ietf.org/html/draft-pfaff-ovsdb-proto-04#section-4.1.5">monitor</a> operation.
67 * @param monitorRequest represents what needs to be monitored including a client specified monitor handle. This
68 * handle is used to later cancel ({@link #cancelMonitor(MonitorHandle)}) the monitor.
69 * @param callback receives the monitor response
71 public void monitor(MonitorRequest monitorRequest, MonitorCallBack callback);
74 * Cancels an existing monitor method.
75 * @param handler Handle identifying a specific monitor request that is being cancelled.
76 * @throws java.lang.IllegalStateException if there is no outstanding monitor request for this handle
78 public void cancelMonitor(MonitorHandle handler);
81 * ovsdb <a href="http://tools.ietf.org/html/draft-pfaff-ovsdb-proto-04#section-4.1.8">lock</a> operation.
82 * @param lockId a client specified id for the lock; this can be used for unlocking ({@link #unLock(String)})
83 * @param lockedCallBack Callback to nofify when the lock is acquired
84 * @param stolenCallback Callback to notify when an acquired lock is stolen by another client
86 public void lock(String lockId, LockAquisitionCallback lockedCallBack, LockStolenCallback stolenCallback);
89 * ovsdb steal operation, see {@link #lock(String, LockAquisitionCallback, LockStolenCallback)}
93 public ListenableFuture<Boolean> steal(String lockId);
96 * ovsdb unlock operaiton, see {@link #unLock(String)}
100 public ListenableFuture<Boolean> unLock(String lockId);
103 * Starts the echo service. The {@code callbackFilters} can be used to get notified on the absence of echo
104 * notifications from the remote device and control the frequency of such notifications.
105 * @param callbackFilters callbacks for notifying the client of missing echo calls from remote.
107 public void startEchoService(EchoServiceCallbackFilters callbackFilters);
110 * Stops the echo service, i.e echo requests from the remote would not be acknowledged after this call.
112 public void stopEchoService();