X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ovsdb%2FSPECS;h=260786edb9bbd37d935344b26864531b90cf9cd9;hb=a339aa8162f4ac29784bc4e35612137f9cb1a025;hp=f5d748c03cb5dd9f33903611adf56222066ebc04;hpb=5f55c39b21e69025045437ffbd3bb98fe6ce2e89;p=openvswitch diff --git a/ovsdb/SPECS b/ovsdb/SPECS index f5d748c0..260786ed 100644 --- a/ovsdb/SPECS +++ b/ovsdb/SPECS @@ -5,6 +5,19 @@ Basic Notation -------------- +OVSDB uses JSON, as defined by RFC 4627, for its schema format and its +wire protocol format. The JSON implementation in Open vSwitch has the +following limitations: + + - Null bytes (\u0000) are not allowed in strings. + + - Only UTF-8 encoding is supported. (RFC 4627 also mentions + UTF-16BE, UTF-16LE, and UTF-32.) + + - RFC 4627 says that names within a JSON object should be unique. + The Open vSwitch JSON parser discards all but the last value + for a name that is specified more than once. + The descriptions below use the following shorthand notations for JSON values. Additional notation is presented later. @@ -101,6 +114,7 @@ is represented by , as described below. A JSON object with the following members: "columns": {: , ...} required + "maxRows": optional The value of "columns" is a JSON object whose names are column names and whose values are s. @@ -122,17 +136,27 @@ is represented by , as described below. the database process is stopped and then started again, each "_version" also changes to a new random value. + If "maxRows" is specified, as a positive integer, it limits the + maximum number of rows that may be present in the table. This is + a "deferred" constraint, enforced only at transaction commit time + (see the "transact" request below). If "maxRows" is not + specified, the size of the table is limited only by the resources + available to the database server. + A JSON object with the following members: "type": required "ephemeral": optional + "mutable": optional The "type" specifies the type of data stored in this column. If "ephemeral" is specified as true, then this column's values are not guaranteed to be durable; they may be lost when the database - restarts. + restarts. If "mutable" is specified as false, then this column's + values may not be modified after they are initially set with the + "insert" operation. @@ -243,6 +267,8 @@ over HTTP, for these reasons: * The JSON-RPC specification for HTTP transport is incomplete. +We are using TCP port 6632 for the database JSON-RPC connection. + The database wire protocol consists of the following JSON-RPC methods: list_dbs @@ -362,6 +388,11 @@ include at least the following: transaction), and this column is not allowed to be empty because its has a "min" of 1. + "error": "constraint violation" + + The number of rows in a table exceeds the maximum number + permitted by the table's "maxRows" value (see ). + If "params" contains one or more "wait" operations, then the transaction may take an arbitrary amount of time to complete. The database implementation must be capable of accepting, executing, and @@ -410,8 +441,10 @@ Request object members: "params": [, , ] required "id": required - is an object that maps from a table name to a -. + is an object that maps from a table name to an +array of objects. For backward compatibility, a +single may be used instead of an array; it is +treated as a single-element array. Each is an object with the following members: @@ -432,15 +465,16 @@ Response object members: "id": same "id" as request This JSON-RPC request enables a client to replicate tables or subsets -of tables within database . Each specifies -a table to be replicated. The JSON-RPC response to the "monitor" -includes the initial contents of each table. Afterward, when changes -to those tables are committed, the changes are automatically sent to -the client using the "update" monitor notification. This monitoring -persists until the JSON-RPC session terminates or until the client -sends a "monitor_cancel" JSON-RPC request. +of tables within database . Each element of + specifies a table to be replicated. The JSON-RPC +response to the "monitor" includes the initial contents of each table, +unless disabled (see below). Afterward, when changes to those tables +are committed, the changes are automatically sent to the client using +the "update" monitor notification. This monitoring persists until the +JSON-RPC session terminates or until the client sends a +"monitor_cancel" JSON-RPC request. -Each describes how to monitor a table: +Each describes how to monitor columns in a table: The circumstances in which an "update" notification is sent for a row within the table are determined by : @@ -458,8 +492,13 @@ Each describes how to monitor a table: sent whenever when a row in the table is modified. The "columns" member specifies the columns whose values are - monitored. If "columns" is omitted, all columns in the table, - except for "_uuid", are monitored. + monitored. It must not contain duplicates. If "columns" is + omitted, all columns in the table, except for "_uuid", are + monitored. + +If there is more than one in an array of them, then +each in the array should specify both "columns" and +"select", and the "columns" must be non-overlapping sets. The "result" in the JSON-RPC response to the "monitor" request is a object (see below) that contains the contents of the