[要約] RFC 7047は、Open vSwitchデータベース管理プロトコルに関する仕様であり、Open vSwitchの設定や状態を管理するためのプロトコルを提供する。目的は、ネットワーク管理者が効果的にOpen vSwitchを管理できるようにすること。

Independent Submission                                          B. Pfaff
Request for Comments: 7047                                 B. Davie, Ed.
Category: Informational                                     VMware, Inc.
ISSN: 2070-1721                                            December 2013
        

The Open vSwitch Database Management Protocol

Open vSwitchデータベース管理プロトコル

Abstract

概要

Open vSwitch is an open-source software switch designed to be used as a vswitch (virtual switch) in virtualized server environments. A vswitch forwards traffic between different virtual machines (VMs) on the same physical host and also forwards traffic between VMs and the physical network. Open vSwitch is open to programmatic extension and control using OpenFlow and the OVSDB (Open vSwitch Database) management protocol. This document defines the OVSDB management protocol. The Open vSwitch project includes open-source OVSDB client and server implementations.

Open vSwitchは、仮想サーバー環境でvswitch(仮想スイッチ)として使用するように設計されたオープンソースのソフトウェアスイッチです。 vswitchは、同じ物理ホスト上の異なる仮想マシン(VM)間のトラフィックを転送し、VMと物理ネットワーク間のトラフィックも転送します。 Open vSwitchは、プログラムによる拡張とOpenFlowおよびOVSDB(Open vSwitch Database)管理プロトコルを使用した制御に対してオープンです。このドキュメントでは、OVSDB管理プロトコルを定義しています。 Open vSwitchプロジェクトには、オープンソースのOVSDBクライアントとサーバーの実装が含まれています。

Status of This Memo

本文書の状態

This document is not an Internet Standards Track specification; it is published for informational purposes.

このドキュメントはInternet Standards Trackの仕様ではありません。情報提供を目的として公開されています。

This is a contribution to the RFC Series, independently of any other RFC stream. The RFC Editor has chosen to publish this document at its discretion and makes no statement about its value for implementation or deployment. Documents approved for publication by the RFC Editor are not a candidate for any level of Internet Standard; see Section 2 of RFC 5741.

これは、他のRFCストリームとは無関係に、RFCシリーズへの貢献です。 RFCエディターは、このドキュメントを独自の裁量で公開することを選択し、実装または展開に対するその価値については何も述べていません。 RFC Editorによって公開が承認されたドキュメントは、どのレベルのインターネット標準の候補にもなりません。 RFC 5741のセクション2をご覧ください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7047.

このドキュメントの現在のステータス、エラータ、およびフィードバックの提供方法に関する情報は、http://www.rfc-editor.org/info/rfc7047で入手できます。

Copyright Notice

著作権表示

Copyright (c) 2013 IETF Trust and the persons identified as the document authors. All rights reserved.

Copyright(c)2013 IETF Trustおよびドキュメントの作成者として識別された人物。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.

この文書は、BCP 78およびこの文書の発行日に有効なIETF文書に関するIETFトラストの法的規定(http://trustee.ietf.org/license-info)の対象となります。これらのドキュメントは、このドキュメントに関するあなたの権利と制限を説明しているため、注意深く確認してください。

Table of Contents

目次

   1. Introduction ....................................................3
      1.1. Requirements Language ......................................3
      1.2. Terminology ................................................3
   2. System Overview .................................................4
   3. OVSDB Structure .................................................5
      3.1. JSON Usage .................................................6
      3.2. Schema Format ..............................................7
   4. Wire Protocol ..................................................12
      4.1. RPC Methods ...............................................12
           4.1.1. List Databases .....................................12
           4.1.2. Get Schema .........................................13
           4.1.3. Transact ...........................................13
           4.1.4. Cancel .............................................16
           4.1.5. Monitor ............................................16
           4.1.6. Update Notification ................................18
           4.1.7. Monitor Cancellation ...............................19
           4.1.8. Lock Operations ....................................19
           4.1.9. Locked Notification ................................21
           4.1.10. Stolen Notification ...............................21
           4.1.11. Echo ..............................................22
   5. Database Operations ............................................22
      5.1. Notation ..................................................22
      5.2. Operations ................................................27
           5.2.1. Insert .............................................27
           5.2.2. Select .............................................28
           5.2.3. Update .............................................29
           5.2.4. Mutate .............................................29
           5.2.5. Delete .............................................30
           5.2.6. Wait ...............................................31
           5.2.7. Commit .............................................32
           5.2.8. Abort ..............................................32
           5.2.9. Comment ............................................32
           5.2.10. Assert ............................................33
   6. IANA Considerations ............................................33
   7. Security Considerations ........................................33
   8. Acknowledgements ...............................................34
   9. References .....................................................34
      9.1. Normative References ......................................34
      9.2. Informative References ....................................34
        
1. Introduction
1. はじめに

In virtualized server environments, it is typically required to use a vswitch (virtual switch) to forward traffic between different virtual machines (VMs) on the same physical host and between VMs and the physical network. Open vSwitch [OVS] is an open-source software switch designed to be used as a vswitch in such environments. Open vSwitch (OVS) is open to programmatic extension and control using OpenFlow [OF-SPEC] and the OVSDB (Open vSwitch Database) management protocol. This document defines the OVSDB management protocol. The Open vSwitch project includes open-source OVSDB client and server implementations.

仮想サーバー環境では、通常、vswitch(仮想スイッチ)を使用して、同じ物理ホスト上の異なる仮想マシン(VM)間、およびVMと物理ネットワーク間でトラフィックを転送する必要があります。 Open vSwitch [OVS]は、このような環境でvswitchとして使用するように設計されたオープンソースのソフトウェアスイッチです。 Open vSwitch(OVS)は、OpenFlow [OF-SPEC]およびOVSDB(Open vSwitch Database)管理プロトコルを使用してプログラムによる拡張と制御を行うことができます。このドキュメントでは、OVSDB管理プロトコルを定義しています。 Open vSwitchプロジェクトには、オープンソースのOVSDBクライアントとサーバーの実装が含まれています。

The OVSDB management protocol uses JSON [RFC4627] for its wire format and is based on JSON-RPC version 1.0 [JSON-RPC].

OVSDB管理プロトコルは、そのワイヤー形式にJSON [RFC4627]を使用し、JSON-RPCバージョン1.0 [JSON-RPC]に基づいています。

The schema of the Open vSwitch database is documented in [DB-SCHEMA]. This document specifies the protocol for interacting with that database for the purposes of managing and configuring Open vSwitch instances. The protocol specified in this document also provides means for discovering the schema in use, as described in Section 4.1.2.

Open vSwitchデータベースのスキーマは[DB-SCHEMA]に文書化されています。このドキュメントでは、Open vSwitchインスタンスを管理および構成する目的で、そのデータベースと対話するためのプロトコルを指定します。このドキュメントで指定されているプロトコルは、セクション4.1.2で説明されているように、使用中のスキーマを検出する手段も提供します。

The OVSDB management protocol is intended to allow programmatic access to the Open vSwitch database as documented in [DB-SCHEMA]. This database holds the configuration for one Open vSwitch daemon. As currently defined, this information describes the switching behavior of a virtual switch and does not describe the behavior or configuration of a routing system. In the event that the schema is extended in a future release to cover elements of the routing system, implementers and operators need to be aware of the work of the IETF's I2RS working group that specifies protocols and data models for real-time or event driven interaction with the routing system.

[DB-SCHEMA]で文書化されているように、OVSDB管理プロトコルは、Open vSwitchデータベースへのプログラムによるアクセスを可能にすることを目的としています。このデータベースは、1つのOpen vSwitchデーモンの構成を保持します。現在定義されているように、この情報は仮想スイッチのスイッチング動作を説明するものであり、ルーティングシステムの動作や構成については説明していません。スキーマがルーティングシステムの要素をカバーするように将来のリリースで拡張される場合、実装者とオペレーターは、リアルタイムまたはイベント駆動の相互作用のプロトコルとデータモデルを指定するIETFのI2RSワーキンググループの作業を認識する必要があります。ルーティングシステムで。

1.1. Requirements Language
1.1. 要件言語

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

このドキュメントのキーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「MAY」、および「OPTIONAL」は、 [RFC2119]で説明されているように解釈されます。

1.2. Terminology
1.2. 用語

UUID: Universally Unique Identifier. A 128-bit identifier that is unique in space and time [DCE].

UUID:Universally Unique Identifier。空間と時間[DCE]で一意の128ビットの識別子。

OVS: Open vSwitch. An open-source virtual switch.

OVS:vSwitchを開きます。オープンソースの仮想スイッチ。

OVSDB: The database that is used for the purpose of configuring OVS instances.

OVSDB:OVSインスタンスを構成する目的で使用されるデータベース。

JSON: Javascript Object Notation [RFC4627].

JSON:Javascript Object Notation [RFC4627]。

JSON-RPC: JSON Remote Procedure Call [JSON-RPC].

JSON-RPC:JSONリモートプロシージャコール[JSON-RPC]。

Durable: Reliably written to non-volatile storage (e.g., disk). OVSDB supports the option to specify whether or not transactions are durable.

耐久性:不揮発性ストレージ(ディスクなど)に確実に書き込まれます。 OVSDBは、トランザクションが永続的であるかどうかを指定するオプションをサポートしています。

Note that the JSON specification [RFC4627] provides precise definitions of a number of important terms such as JSON values, objects, arrays, numbers, and strings. In all cases, this document uses the definitions from [RFC4627].

JSON仕様[RFC4627]は、JSON値、オブジェクト、配列、数値、文字列など、いくつかの重要な用語の正確な定義を提供していることに注意してください。すべての場合において、このドキュメントでは[RFC4627]の定義を使用します。

2. System Overview
2. システムの概要

Figure 1 illustrates the main components of Open vSwitch and the interfaces to a control and management cluster. An OVS instance comprises a database server (ovsdb-server), a vswitch daemon (ovs-vswitchd), and, optionally, a module that performs fast-path forwarding. The "management and control cluster" consists of some number of managers and controllers. Managers use the OVSDB management protocol to manage OVS instances. An OVS instance is managed by at least one manager. Controllers use OpenFlow to install flow state in OpenFlow switches. An OVS instance can support multiple logical datapaths, referred to as "bridges". There is at least one controller for each OpenFlow bridge.

図1は、Open vSwitchの主なコンポーネントと、制御および管理クラスターへのインターフェイスを示しています。 OVSインスタンスは、データベースサーバー(ovs​​db-server)、vswitchデーモン(ovs-vswitchd)、およびオプションで高速パス転送を実行するモジュールで構成されます。 「管理および制御クラスター」は、いくつかのマネージャーとコントローラーで構成されます。マネージャーはOVSDB管理プロトコルを使用してOVSインスタンスを管理します。 OVSインスタンスは、少なくとも1つのマネージャーによって管理されます。コントローラーはOpenFlowを使用して、OpenFlowスイッチにフロー状態をインストールします。 OVSインスタンスは、「ブリッジ」と呼ばれる複数の論理データパスをサポートできます。 OpenFlowブリッジごとに少なくとも1つのコントローラーがあります。

The OVSDB management interface is used to perform management and configuration operations on the OVS instance. Compared to OpenFlow, OVSDB management operations occur on a relatively long timescale. Examples of operations that are supported by OVSDB include:

OVSDB管理インターフェースは、OVSインスタンスで管理および設定操作を実行するために使用されます。 OpenFlowと比較すると、OVSDB管理操作は比較的長いタイムスケールで発生します。 OVSDBでサポートされている操作の例は次のとおりです。

o Creation, modification, and deletion of OpenFlow datapaths (bridges), of which there may be many in a single OVS instance;

o OpenFlowデータパス(ブリッジ)の作成、変更、削除。単一のOVSインスタンスに多数存在する場合があります。

o Configuration of the set of controllers to which an OpenFlow datapath should connect;

o OpenFlowデータパスが接続するコントローラーのセットの構成。

o Configuration of the set of managers to which the OVSDB server should connect;

o OVSDBサーバーが接続する必要があるマネージャーのセットの構成。

o Creation, modification, and deletion of ports on OpenFlow datapaths;

o OpenFlowデータパス上のポートの作成、変更、および削除。

o Creation, modification, and deletion of tunnel interfaces on OpenFlow datapaths;

o OpenFlowデータパス上のトンネルインターフェースの作成、変更、削除。

o Creation, modification, and deletion of queues;

o キューの作成、変更、および削除。

o Configuration of QoS (quality of service) policies and attachment of those policies to queues; and

o QoS(サービス品質)ポリシーの構成とそれらのポリシーのキューへのアタッチ。そして

o Collection of statistics.

o 統計の収集。

OVSDB does not perform per-flow operations, leaving those instead to OpenFlow.

OVSDBはフローごとの操作を実行せず、代わりにOpenFlowに任せます。

          +----------------------+
          |      Control &       |
          |     Management       |
          |      Cluster         |
          +----------------------+
             |                \
             | OVSDB           \ OpenFlow
             | Mgmt             \
             |                   \
       +============================================+
       | +--------------+       +--------------+    |
       | |              |       |              |    |
       | | ovsdb-server |-------| ovs-vswitchd |    |
       | |              |       |              |    |
       | +--------------+       +--------------+    |
       |                               |            |
       |                        +----------------+  |
       |                        | Forwarding Path|  |
       |                        +----------------+  |
       +============================================+
        

Figure 1: Open vSwitch Interfaces

図1:Open vSwitchインターフェイス

Further information about the usage of the OVSDB management protocol is provided in [DB-SCHEMA].

OVSDB管理プロトコルの使用に関する詳細情報は、[DB-SCHEMA]で提供されています。

3. OVSDB Structure
3. OVSDBの構造

This section outlines the overall structure of databases in OVSDB. As described here, the database is reasonably generic. For the complete and current description of the database schema as used in OVS, refer to [DB-SCHEMA]. See also Section 4.1.2 for information on how the OVSDB management protocol may be used to discover the schema currently in use.

このセクションでは、OVSDB内のデータベースの全体的な構造について概説します。ここで説明するように、データベースはかなり一般的です。 OVSで使用されるデータベーススキーマの現在の完全な説明については、[DB-SCHEMA]を参照してください。 OVSDB管理プロトコルを使用して現在使用中のスキーマを検出する方法については、セクション4.1.2も参照してください。

3.1. JSON Usage
3.1. JSONの使用

OVSDB uses JSON [RFC4627] for both its schema format and its wire protocol format. The JSON implementation in Open vSwitch has the following limitations:

OVSDBは、スキーマ形式とワイヤプロトコル形式の両方にJSON [RFC4627]を使用します。 Open vSwitchのJSON実装には、次の制限があります。

o Null bytes (\u0000) SHOULD NOT be used in strings.

o nullバイト(\ u0000)は文字列では使用しないでください。

o Only UTF-8 encoding is supported.

o UTF-8エンコーディングのみがサポートされています。

The descriptions below use the following shorthand notations for JSON values. Terminology follows [RFC4627].

以下の説明では、JSON値に次の省略表記を使用しています。用語は[RFC4627]に従います。

<string> A JSON string. Any Unicode string is allowed. Implementations SHOULD disallow null bytes.

<string> JSON文字列。すべてのUnicode文字列が許可されます。実装ではnullバイトを許可しないでください。

<id> A JSON string matching [a-zA-Z_][a-zA-Z0-9_]*. <id>s that begin with _ are reserved to the implementation and MUST NOT be used by the user.

<id> [a-zA-Z _] [a-zA-Z0-9 _] *に一致するJSON文字列。 _で始まる<id>は実装用に予約されており、ユーザーが使用することはできません。

   <version>
      A JSON string that contains a version number that matches [0-9]+
      \.[0-9]+\.[0-9]+
        

<boolean> A JSON true or false value.

<boolean> JSONのtrueまたはfalseの値。

<number> A JSON number.

<number> JSON番号。

<integer> A JSON number with an integer value, within the range -(2**63)...+ (2**63)-1.

<integer>-(2 ** 63)... +(2 ** 63)-1の範囲内の整数値を持つJSON番号。

<json-value> Any JSON value.

<json-value>任意のJSON値。

<nonnull-json-value> Any JSON value except null.

<nonnull-json-value> null以外のJSON値。

<error> A JSON object with the following members:

<error>以下のメンバーを持つJSONオブジェクト:

           "error": <string>          required
           "details": <string>        optional
        

The value of the "error" member is a short string, specified in this document, that broadly indicates the class of the error. Most "error" strings are specific to contexts described elsewhere in this document, but the following "error" strings may appear in any context where an <error> is permitted:

「エラー」メンバーの値は、このドキュメントで指定されている短い文字列であり、エラーのクラスを広く示します。ほとんどの「エラー」文字列は、このドキュメントの他の場所で説明されているコンテキストに固有ですが、次の「エラー」文字列は、<error>が許可されているすべてのコンテキストで表示される可能性があります。

      "error": "resources exhausted"
         The operation requires more resources (memory, disk, CPU, etc.)
         than are currently available to the database server.
        
      "error": "I/O error"
         Problems accessing the disk, network, or other required
         resources prevented the operation from completing.
        

Database implementations MAY use "error" strings not specified in this document to indicate errors that do not fit into any of the specified categories. Optionally, an <error> MAY include a "details" member, whose value is a string that describes the error in more detail for the benefit of a human user or administrator. This document does not specify the format or content of the "details" string. An <error> MAY also have other members that describe the error in more detail. This document does not specify the names or values of these members.

データベースの実装は、このドキュメントで指定されていない「エラー」文字列を使用して、指定されたカテゴリのいずれにも当てはまらないエラーを示す場合があります。オプションで、<error>には "details"メンバーを含めることができます。このメンバーの値は、人間のユーザーまたは管理者のために、エラーをより詳細に説明する文字列です。このドキュメントでは、「詳細」文字列の形式や内容を指定していません。 <error>には、エラーをより詳細に説明する他のメンバーが含まれる場合があります。このドキュメントでは、これらのメンバーの名前や値を指定していません。

3.2. Schema Format
3.2. スキームフォーマット

An Open vSwitch configuration database consists of a set of tables, each of which has a number of columns and zero or more rows. A schema for the database is represented by <database-schema>, as described below.

Open vSwitch構成データベースは一連のテーブルで構成されており、各テーブルには多数の列と0個以上の行があります。以下で説明するように、データベースのスキーマは<database-schema>で表されます。

<database-schema> A JSON object with the following members:

<database-schema>以下のメンバーを持つJSONオブジェクト:

           "name": <id>                            required
           "version": <version>                    required
           "cksum": <string>                       optional
           "tables": {<id>: <table-schema>, ...}   required
        

The "name" identifies the database as a whole. It must be provided to most JSON-RPC requests to identify the database being operated on.

「名前」はデータベース全体を識別します。操作対象のデータベースを識別するために、ほとんどのJSON-RPCリクエストに提供する必要があります。

The "version" reports the version of the database schema. It is REQUIRED to be present. Open vSwitch semantics for "version" are described in [DB-SCHEMA]. Other schemas may use it differently.

「バージョン」はデータベーススキーマのバージョンを報告します。出席する必要があります。 「バージョン」のOpen vSwitchセマンティクスは、[DB-SCHEMA]で説明されています。他のスキーマではこれを別の方法で使用する場合があります。

The "cksum" optionally reports an implementation-defined checksum for the database schema. Its use is primarily as a tool for schema developers, and clients SHOULD ignore it.

「cksum」は、オプションで、データベーススキーマの実装定義のチェックサムを報告します。その使用は主にスキーマ開発者のためのツールとしてであり、クライアントはそれを無視すべきです。

The value of "tables" is a JSON object whose names are table names and whose values are <table-schema>s.

「tables」の値は、名前がテーブル名で値が<table-schema>であるJSONオブジェクトです。

<table-schema> A JSON object with the following members:

<table-schema>以下のメンバーを持つJSONオブジェクト:

         "columns": {<id>: <column-schema>, ...}   required
         "maxRows": <integer>                      optional
         "isRoot": <boolean>                       optional
         "indexes": [<column-set>*]                optional
        

The value of "columns" is a JSON object whose names are column names and whose values are <column-schema>s.

「columns」の値は、名前が列名で値が<column-schema>であるJSONオブジェクトです。

Every table has the following columns whose definitions are not included in the schema:

すべてのテーブルには次の列があり、その定義はスキーマに含まれていません。

"_uuid": This column, which contains exactly one UUID value, is initialized to a random value by the database engine when it creates a row. It is read-only, and its value never changes during the lifetime of a row.

"_uuid":この列はUUID値を1つだけ含み、行を作成するときにデータベースエンジンによってランダムな値に初期化されます。これは読み取り専用であり、その値は行の存続期間中に変更されることはありません。

"_version": Like "_uuid", this column contains exactly one UUID value, initialized to a random value by the database engine when it creates a row, and it is read-only. However, its value changes to a new random value whenever any other field in the row changes. Furthermore, its value is ephemeral: when the database is closed and reopened, or when the database process is stopped and then started again, each "_version" also changes to a new random value.

"_version": "_uuid"と同様に、この列には1つのUUID値が含まれ、データベースエンジンが行を作成するときにデータベースエンジンによってランダムな値に初期化され、読み取り専用です。ただし、行の他のフィールドが変更されるたびに、その値は新しいランダムな値に変更されます。さらに、その値は一時的なものです。データベースが閉じられて再度開かれたとき、またはデータベースプロセスが停止してから再開されたとき、各 "_version"も新しいランダムな値に変更されます。

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 in Section 4.1.3). If "maxRows" is not specified, the size of the table is limited only by the resources available to the database server. "maxRows" constraints are enforced after unreferenced rows are deleted from tables with a false "isRoot".

「maxRows」が正の整数として指定されている場合、テーブルに存在する可能性のある最大行数を制限します。これは「遅延」制約であり、トランザクションのコミット時にのみ適用されます(4.1.3項の「トランザクション」リクエストを参照)。 「maxRows」が指定されていない場合、テーブルのサイズは、データベースサーバーで使用可能なリソースによってのみ制限されます。 「maxRows」制約は、参照されていない行が偽の「isRoot」でテーブルから削除された後に適用されます。

The "isRoot" boolean is used to determine whether rows in the table require strong references from other rows to avoid garbage collection. (See the discussion of "strong" and "weak" references below in the description of <base-type>.) If "isRoot" is specified as true, then rows in the table exist independent of any references (they can be thought of as part of the "root set" in a garbage collector). If "isRoot" is omitted or specified as false, then any given row in the table may exist only when there is at least one reference to it, with refType "strong", from a different row (in the same table or a different table). This is a "deferred" action: unreferenced rows in the table are deleted just before transaction commit.

「isRoot」ブール値は、ガベージコレクションを回避するために、テーブル内の行が他の行からの強い参照を必要とするかどうかを決定するために使用されます。 (<base-type>の説明で以下の「強い」および「弱い」参照の説明を参照してください。)「isRoot」がtrueとして指定されている場合、テーブルの行は参照とは無関係に存在します(それらはガベージコレクタの「ルートセット」の一部として)。 「isRoot」が省略されているかfalseとして指定されている場合、(同じテーブルまたは別のテーブル内の)別の行からのrefType "strong"の参照が少なくとも1つある場合にのみ、テーブル内の特定の行が存在する可能性があります。 )。これは「据え置き」アクションです。テーブル内の参照されていない行は、トランザクションコミットの直前に削除されます。

For compatibility with schemas created before "isRoot" was introduced, if "isRoot" is omitted or false in every <table-schema> in a given <database-schema>, then every table is part of the root set.

「isRoot」が導入される前に作成されたスキーマとの互換性のために、「isRoot」が省略されるか、特定の<database-schema>のすべての<table-schema>でfalseの場合、すべてのテーブルがルートセットの一部になります。

If "indexes" is specified, it must be an array of zero or more <column-set>s. A <column-set> is an array of one or more strings, each of which names a column. Each <column-set> is a set of columns whose values, taken together within any given row, must be unique within the table. This is a "deferred" constraint, enforced only at transaction commit time, after unreferenced rows are deleted and dangling weak references are removed. Ephemeral columns may not be part of indexes.

「インデックス」を指定する場合は、0個以上の<column-set>の配列にする必要があります。 <column-set>は、1つ以上の文字列の配列で、それぞれが列に名前を付けます。各<column-set>は列のセットであり、特定の行内で一緒に取得される値は、テーブル内で一意である必要があります。これは「遅延」制約であり、参照されていない行が削除され、ぶら下がっている弱い参照が削除された後、トランザクションのコミット時にのみ適用されます。エフェメラル列はインデックスの一部ではない場合があります。

<column-schema> A JSON object with the following members:

<column-schema>以下のメンバーを持つJSONオブジェクト:

         "type": <type>                            required
         "ephemeral": <boolean>                    optional
         "mutable": <boolean>                      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. A column whose type (either key or value) is a strong reference to a table that is not part of the root set is always durable, regardless of this value. (Otherwise, restarting the database could lose entire rows.)

「ephemeral」がtrueとして指定されている場合、この列の値は永続的であることが保証されていません。データベースを再起動すると失われる可能性があります。タイプ(キーまたは値)がルートセットの一部ではないテーブルへの強い参照である列は、この値に関係なく常に永続的です。 (それ以外の場合、データベースを再起動すると、行全体が失われる可能性があります。)

If "mutable" is specified as false, then this column's values may not be modified after they are initially set with the "insert" operation.

"mutable"がfalseとして指定されている場合、この列の値は、 "insert"操作で最初に設定された後は変更できません。

<type> The type of a database column. Either an <atomic-type> or a JSON object that describes the type of a database column, with the following members:

<type>データベース列のタイプ。 <atomic-type>またはデータベース列のタイプを説明するJSONオブジェクトのいずれかで、以下のメンバーが含まれます。

         "key": <base-type>                 required
         "value": <base-type>               optional
         "min": <integer>                   optional
         "max": <integer> or "unlimited"    optional
        

If "min" or "max" is not specified, each defaults to 1. If "max" is specified as "unlimited", then there is no specified maximum number of elements, although the implementation will enforce some limit. After considering defaults, "min" must be exactly 0 or exactly 1, "max" must be at least 1, and "max" must be greater than or equal to "min".

「min」または「max」が指定されていない場合、それぞれのデフォルトは1です。「max」が「unlimited」として指定されている場合、指定された要素の最大数はありませんが、実装によって制限が適用されます。デフォルトを考慮した後、「min」は正確に0または正確に1でなければならず、「max」は少なくとも1でなければならず、「max」は「min」以上でなければなりません。

If "min" and "max" are both 1 and "value" is not specified, the type is the scalar type specified by "key".

「min」と「max」の両方が1で「value」が指定されていない場合、タイプは「key」で指定されたスカラータイプです。

If "min" is not 1 or "max" is not 1, or both, and "value" is not specified, the type is a set of scalar type "key".

「min」が1でないか、「max」が1でないか、またはその両方で、「value」が指定されていない場合、タイプはスカラータイプ「key」のセットです。

If "value" is specified, the type is a map from type "key" to type "value".

「値」が指定されている場合、タイプはタイプ「キー」からタイプ「値」へのマップです。

<base-type> The type of a key or value in a database column. Either an <atomic-type> or a JSON object with the following members:

<base-type>データベース列のキーまたは値のタイプ。 <atomic-type>または次のメンバーを持つJSONオブジェクトのいずれか:

         "type": <atomic-type>            required
         "enum": <value>                  optional
         "minInteger": <integer>          optional, integers only
         "maxInteger": <integer>          optional, integers only
         "minReal": <real>                optional, reals only
         "maxReal": <real>                optional, reals only
         "minLength": <integer>           optional, strings only
         "maxLength": <integer>           optional, strings only
         "refTable": <id>                 optional, UUIDs only
         "refType": "strong" or "weak"    optional, only with "refTable"
        

An <atomic-type> by itself is equivalent to a JSON object with a single member "type" whose value is the <atomic-type>.

<atomic-type>自体は、値が<atomic-type>である単一のメンバー「type」を持つJSONオブジェクトと同等です。

"enum" may be specified as a <value> whose type is a set of one or more values specified for the member "type". If "enum" is specified, then the valid values of the <base-type> are limited to those in the <value>.

「列挙型」は、タイプがメンバー「タイプ」に指定された1つ以上の値のセットである<値>として指定できます。 「enum」が指定されている場合、<base-type>の有効な値は<value>の値に制限されます。

"enum" is mutually exclusive with the following constraints:

「列挙型」は、以下の制約と相互に排他的です。

If "type" is "integer", then "minInteger" or "maxInteger" or both may also be specified, restricting the valid integer range. If both are specified, then "maxInteger" must be greater than or equal to "minInteger".

"type"が "integer"の場合、 "minInteger"または "maxInteger"または両方を指定して、有効な整数の範囲を制限できます。両方を指定する場合、「maxInteger」は「minInteger」以上でなければなりません。

If "type" is "real", then "minReal" or "maxReal" or both may also be specified, restricting the valid real range. If both are specified, then "maxReal" must be greater than or equal to "minReal".

「type」が「real」の場合、「minReal」または「maxReal」または両方を指定して、有効な実範囲を制限することもできます。両方を指定する場合、「maxReal」は「minReal」以上にする必要があります。

If "type" is "string", then "minLength" and "maxLength" or both may be specified, restricting the valid length of value strings. If both are specified, then "maxLength" must be greater than or equal to "minLength". String length is measured in characters.

「type」が「string」の場合、「minLength」と「maxLength」、またはその両方を指定して、値の文字列の有効な長さを制限できます。両方を指定する場合、「maxLength」は「minLength」以上にする必要があります。文字列の長さは文字数で測定されます。

If "type" is "uuid", then "refTable", if present, must be the name of a table within this database. If "refTable" is specified, then "refType" may also be specified. If "refTable" is set, the effect depends on "refType":

「type」が「uuid」の場合、「refTable」は、存在する場合、このデータベース内のテーブルの名前でなければなりません。 「refTable」が指定されている場合、「refType」も指定できます。 「refTable」が設定されている場合、効果は「refType」に依存します。

+ If "refType" is "strong" or if "refType" is omitted, the allowed UUIDs are limited to UUIDs for rows in the named table.

+ 「refType」が「strong」の場合、または「refType」が省略されている場合、許可されるUUIDは、名前付きテーブルの行のUUIDに制限されます。

+ If "refType" is "weak", then any UUIDs are allowed, but UUIDs that do not correspond to rows in the named table will be automatically deleted. When this situation arises in a map, both the key and the value will be deleted from the map.

+ 「refType」が「weak」の場合、任意のUUIDが許可されますが、名前付きテーブルの行に対応しないUUIDは自動的に削除されます。この状況がマップで発生すると、キーと値の両方がマップから削除されます。

"refTable" constraints are "deferred" constraints: they are enforced only at transaction commit time (see the "transact" request in Section 4.1.3). The other constraints on <base-type> are "immediate", enforced immediately by each operation.

「refTable」制約は「据え置き」制約です。これらは、トランザクションのコミット時にのみ実施されます(4.1.3項の「transact」リクエストを参照)。 <base-type>に対するその他の制約は「即時」であり、各操作によって直ちに適用されます。

<atomic-type> One of the strings "integer", "real", "boolean", "string", or "uuid", representing the specified scalar type.

<atomic-type>指定されたスカラー型を表す文字列「integer」、「real」、「boolean」、「string」、または「uuid」のいずれか。

4. Wire Protocol
4. ワイヤープロトコル

The database wire protocol is implemented in JSON-RPC 1.0 [JSON-RPC]. While the JSON-RPC specification allows a range of transports, implementations of this specification SHOULD operate directly over TCP. See Section 6 for discussion of the TCP port.

データベースワイヤプロトコルは、JSON-RPC 1.0 [JSON-RPC]で実装されています。 JSON-RPC仕様ではさまざまなトランスポートが許可されていますが、この仕様の実装はTCPで直接動作する必要があります(SHOULD)。 TCPポートの説明については、セクション6を参照してください。

4.1. RPC Methods
4.1. RPCメソッド

The following subsections describe the RPC methods that are supported. As described in the JSON-RPC 1.0 specification, each request comprises a string containing the name of the method, a (possibly null) array of parameters to pass to the method, and a request ID, which can be used to match the response to the request. Each response comprises a result object (non-null in the event of a successful invocation), an error object (non-null in the event of an error), and the ID of the matching request. More details on each method, its parameters, and its results are described below.

次のサブセクションでは、サポートされているRPCメソッドについて説明します。 JSON-RPC 1.0仕様で説明されているように、各リクエストは、メソッドの名前を含む文字列、メソッドに渡すパラメーターの配列(nullの可能性があります)、およびリクエストと一致するために使用できるリクエストIDで構成されますリクエスト。各応答は、結果オブジェクト(呼び出しが成功した場合はnull以外)、エラーオブジェクト(エラーが発生した場合はnull以外)、および一致する要求のIDで構成されます。各メソッド、そのパラメーター、および結果の詳細については、以下で説明します。

An OVSDB server MUST implement all of the following methods. An OVSDB client MUST implement the "Echo" method and is otherwise free to implement whichever methods suit the implementation's needs.

OVSDBサーバーは、以下のすべてのメソッドを実装する必要があります。 OVSDBクライアントは「エコー」メソッドを実装する必要があり、そうでない場合は、実装のニーズに適したメソッドを自由に実装できます。

The operations that may be performed on the OVS database using these methods (e.g., the "transact" method) are described in Section 5.

これらのメソッド(「トランザクション」メソッドなど)を使用してOVSデータベースで実行できる操作については、セクション5で説明します。

4.1.1. List Databases
4.1.1. データベースの一覧表示

This operation retrieves an array whose elements are the names of the databases that can be accessed over this management protocol connection.

この操作は、この管理プロトコル接続を介してアクセスできるデータベースの名前を要素とする配列を取得します。

The request object contains the following members:

リクエストオブジェクトには次のメンバーが含まれます。

   o  "method": "list_dbs"
        
   o  "params": []
        
   o  "id": <nonnull-json-value>
        

The response object contains the following members:

応答オブジェクトには次のメンバーが含まれます。

   o  "result": [<db-name>,...]
        

o "error": null

o 「エラー」:null

o "id": same "id" as request

o "id":リクエストと同じ "id"

4.1.2. Get Schema
4.1.2. スキーマを取得

This operation retrieves a <database-schema> that describes hosted database <db-name>.

この操作は、ホストされているデータベース<db-name>を記述する<database-schema>を取得します。

The request object contains the following members:

リクエストオブジェクトには次のメンバーが含まれます。

   o  "method": "get_schema"
        
   o  "params": [<db-name>]
        
   o  "id": <nonnull-json-value>
        

The response object contains the following members:

応答オブジェクトには次のメンバーが含まれます。

   o  "result": <database-schema>
        

o "error": null

o 「エラー」:null

o "id": same "id" as request

o "id":リクエストと同じ "id"

In the event that the database named in the request does not exist, the server sends a JSON-RPC error response of the following form:

リクエストで指定されたデータベースが存在しない場合、サーバーは次の形式のJSON-RPCエラー応答を送信します。

o "result": null

o 「結果」:null

   o  "error": "unknown database"
        

o "id": same "id" as request

o "id":リクエストと同じ "id"

4.1.3. Transact
4.1.3. 取引

This RPC method causes the database server to execute a series of operations in the specified order on a given database.

このRPCメソッドにより、データベースサーバーは、指定されたデータベースに対して、指定された順序で一連の操作を実行します。

The request object contains the following members:

リクエストオブジェクトには次のメンバーが含まれます。

   o  "method": "transact"
        
   o  "params": [<db-name>, <operation>*]
        
   o  "id": <nonnull-json-value>
        

The value of "id" MUST be unique among all in-flight transactions within the current JSON-RPC session. Otherwise, the server may return a JSON-RPC error.

「id」の値は、現在のJSON-RPCセッション内のすべての処理中のトランザクション間で一意である必要があります。そうしないと、サーバーがJSON-RPCエラーを返す場合があります。

The "params" array for this method consists of a <db-name> that identifies the database to which the transaction applies, followed by zero or more JSON objects, each of which represents a single database operation. Section 5 describes the valid operations. The database server executes each of the specified operations in the specified order, except if an operation fails, then the remaining operations are not executed. The set of operations is executed as a single atomic, consistent, isolated transaction. The transaction is committed if and only if every operation succeeds. Durability of the commit is not guaranteed unless the "commit" operation, with "durable" set to true, is included in the operation set. See Section 5 for more discussion of the database operations.

このメソッドの「params」配列は、トランザクションが適用されるデータベースを識別する<db-name>と、その後に続く0個以上のJSONオブジェクトで構成され、それぞれが単一のデータベース操作を表します。セクション5では、有効な操作について説明します。データベースサーバは、指定された各操作を指定された順序で実行します。ただし、操作が失敗した場合、残りの操作は実行されません。一連の操作は、単一のアトミックで一貫性のある分離されたトランザクションとして実行されます。トランザクションは、すべての操作が成功した場合にのみコミットされます。 「durable」がtrueに設定された「commit」操作が操作セットに含まれていない限り、コミットの永続性は保証されません。データベース操作の詳細については、セクション5を参照してください。

The response object contains the following members:

応答オブジェクトには次のメンバーが含まれます。

   o  "result": [<object>*]
        

o "error": null

o 「エラー」:null

o "id": same "id" as request

o "id":リクエストと同じ "id"

Regardless of whether errors occur in the database operations, the response is always a JSON-RPC response with null "error" and a "result" member that is an array with the same number of elements as "params". Each element of the "result" array corresponds to the same element of the "params" array. The "result" array elements may be interpreted as follows:

データベース操作でエラーが発生するかどうかに関係なく、応答は常にnullの「エラー」と「params」と同じ数の要素を持つ配列である「result」メンバーを持つJSON-RPC応答です。 「result」配列の各要素は、「params」配列の同じ要素に対応しています。 「結果」の配列要素は、次のように解釈されます。

o A JSON object that does not contain an "error" member indicates that the operation completed successfully. The specific members of the object are specified below in the descriptions of individual operations. Some operations do not produce any results, in which case the object will have no members.

o 「エラー」メンバーを含まないJSONオブジェクトは、操作が正常に完了したことを示します。オブジェクトの特定のメンバーは、個々の操作の説明で以下に指定されています。一部の操作では結果が生成されません。その場合、オブジェクトにはメンバーがありません。

o An <error> indicates that the matching operation completed with an error.

o <error>は、一致する操作がエラーで完了したことを示します。

o A JSON null value indicates that the operation was not attempted because a prior operation failed.

o JSONのnull値は、前の操作が失敗したために操作が試行されなかったことを示します。

In general, "result" contains some number of successful results, possibly followed by an error, in turn followed by enough JSON null values to match the number of elements in "params". There is one exception: if all of the operations succeed, but the results cannot be committed, then "result" will have one more element than "params", with the additional element being an <error>. In this case, the possible "error" strings include the following:

一般に、「結果」にはいくつかの成功した結果が含まれ、その後にエラーが続く可能性があり、次に「パラメータ」の要素の数と一致するのに十分なJSON null値が続きます。 1つの例外があります。すべての操作は成功しても結果をコミットできない場合、「result」には「params」より1つ多い要素があり、追加の要素は<error>です。この場合、考えられる「エラー」文字列には次のものがあります。

   "error": "referential integrity violation"
      When the commit was attempted, a column's value referenced the
      UUID for a row that did not exist in the table named by the
      column's <base-type> key or value "refTable" that has a "refType"
      of "strong".  (This can be caused by inserting a row that
      references a nonexistent row, by deleting a row that is still
      referenced by another row, by specifying the UUID for a row in the
      wrong table, and other ways.)
        
   "error": "constraint violation"
      A number of situations can arise in which the attempted commit
      would lead to a constraint on the database being violated.  (See
      Section 3.2 for more discussion of constraints.)  These situations
      include:
        

* The number of rows in a table exceeds the maximum number permitted by the table's "maxRows" value.

* テーブルの行数が、テーブルの「maxRows」値で許可されている最大数を超えています。

* Two or more rows in a table had the same values in the columns that comprise an index.

* テーブルの2つ以上の行で、インデックスを構成する列の値が同じでした。

* A column with a <base-type> key or value "refTable" whose "refType" is "weak" became empty due to deletion(s), and this column is not allowed to be empty because its <type> has a "min" of 1. Such deletions may be the result of rows that it referenced being deleted (or never having existed, if the column's row was inserted within the transaction).

* <base-type>キーまたは値「refTable」が「refType」が「weak」である列は、削除により空になり、この<type>には「min」があるため、この列を空にすることはできません"of 1.このような削除は、参照された行が削除された結果である可能性があります(または、列の行がトランザクション内に挿入された場合、存在しなかった可能性があります)。

   "error": "resources exhausted"
      The operation requires more resources (memory, disk, CPU, etc.)
      than are currently available to the database server.
        
   "error": "I/O error"
      Problems accessing the disk, network, or other required resources
      prevented the operation from completing.
        

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 replying to other transactions and other JSON-RPC requests while a transaction or transactions containing "wait" operations are outstanding on the same or different JSON-RPC sessions.

「params」に1つ以上の「待機」操作が含まれている場合、トランザクションが完了するまでに任意の時間がかかることがあります。データベースの実装は、「待機」操作を含むトランザクションが同じまたは異なるJSON-RPCセッションで未処理である間、他のトランザクションおよび他のJSON-RPCリクエストを受け入れ、実行、および応答できる必要があります。

4.1.4. Cancel
4.1.4. キャンセル

The "cancel" method is a JSON-RPC notification, i.e., no matching response is provided. It instructs the database server to immediately complete or cancel the "transact" request whose "id" is the same as the notification's "params" value. The notification object has the following members:

「キャンセル」メソッドはJSON-RPC通知です。つまり、一致する応答は提供されません。これは、「id」が通知の「params」値と同じである「transact」要求をすぐに完了するかキャンセルするようにデータベースサーバーに指示します。通知オブジェクトには次のメンバーがあります。

   o  "method": "cancel"
        
   o  "params": [the "id" for an outstanding request]
        

o "id": null

o 「id」:null

If the "transact" request can be completed immediately, then the server sends a response in the form described for "transact" (Section 4.1.3). Otherwise, the server sends a JSON-RPC error response of the following form:

「トランザクション」リクエストをすぐに完了することができる場合、サーバーは「トランザクション」で説明した形式で応答を送信します(セクション4.1.3)。それ以外の場合、サーバーは次の形式のJSON-RPCエラー応答を送信します。

o "result": null

o 「結果」:null

   o  "error": "canceled"
        

o "id": the "id" member of the canceled request.

o 「is」:キャンセルリクエストの「id」メンバー。

The "cancel" notification itself has no reply.

「キャンセル」通知自体には返信がありません。

4.1.5. Monitor
4.1.5. モニター

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. The request object has the following members:

「モニター」要求により、クライアントは、テーブルまたはテーブルのサブセットの完全な初期状態を受信し、それらのテーブルへの変更の通知を要求することにより、OVSDBデータベース内のテーブルまたはテーブルのサブセットを複製できます。リクエストオブジェクトには次のメンバーがあります。

   o  "method": "monitor"
        
   o  "params": [<db-name>, <json-value>, <monitor-requests>]
        
   o  "id": <nonnull-json-value>
        

The <json-value> parameter is used to match subsequent update notifications (see below) to this request. The <monitor-requests> object maps the name of the table to be monitored to an array of <monitor-request> objects.

<json-value>パラメーターは、後続の更新通知(以下を参照)をこの要求に一致させるために使用されます。 <monitor-requests>オブジェクトは、監視するテーブルの名前を<monitor-request>オブジェクトの配列にマップします。

Each <monitor-request> is an object with the following members:

各<monitor-request>は、次のメンバーを持つオブジェクトです。

       "columns": [<column>*]            optional
       "select": <monitor-select>        optional
        

The columns, if present, define the columns within the table to be monitored. <monitor-select> is an object with the following members:

列が存在する場合は、監視するテーブル内の列を定義します。 <monitor-select>は、次のメンバーを持つオブジェクトです。

       "initial": <boolean>              optional
       "insert": <boolean>               optional
       "delete": <boolean>               optional
       "modify": <boolean>               optional
        

The contents of this object specify how the columns or table are to be monitored, as explained in more detail below.

このオブジェクトの内容は、以下で詳しく説明するように、列またはテーブルの監視方法を指定します。

The response object has the following members:

応答オブジェクトには次のメンバーがあります。

   o  "result": <table-updates>
        

o "error": null

o 「エラー」:null

o "id": same "id" as request

o "id":リクエストと同じ "id"

The <table-updates> object is described in detail in Section 4.1.6. It contains the contents of the tables for which "initial" rows are selected. If no tables' initial contents are requested, then "result" is an empty object.

<table-updates>オブジェクトについては、4.1.6項で詳しく説明しています。 「初期」行が選択されている表の内容が含まれています。テーブルの初期コンテンツが要求されていない場合、「結果」は空のオブジェクトです。

Subsequently, when changes to the specified tables are committed, the changes are automatically sent to the client using the "update" monitor notification (see Section 4.1.6). This monitoring persists until the JSON-RPC session terminates or until the client sends a "monitor_cancel" JSON-RPC request.

その後、指定されたテーブルへの変更がコミットされると、「更新」モニター通知を使用して変更が自動的にクライアントに送信されます(セクション4.1.6を参照)。この監視は、JSON-RPCセッションが終了するか、クライアントが「monitor_cancel」JSON-RPCリクエストを送信するまで続きます。

Each <monitor-request> specifies one or more columns and the manner in which the columns (or the entire table) are to be monitored. The "columns" member specifies the columns whose values are monitored. It MUST NOT contain duplicates. If "columns" is omitted, all columns in the table, except for "_uuid", are monitored. The circumstances in which an "update" notification is sent for a row within the table are determined by <monitor-select>:

各<monitor-request>は、1つ以上の列と、列(またはテーブル全体)を監視する方法を指定します。 「columns」メンバーは、値が監視される列を指定します。重複してはいけません。 「columns」を省略すると、「_ uuid」を除くテーブル内のすべての列がモニターされます。テーブル内の行に対して「更新」通知が送信される状況は、<monitor-select>によって決定されます。

o If "initial" is omitted or true, every row in the table is sent as part of the response to the "monitor" request.

o 「initial」が省略されているかtrueの場合、テーブルのすべての行が「monitor」リクエストへの応答の一部として送信されます。

o If "insert" is omitted or true, "update" notifications are sent for rows newly inserted into the table.

o 「挿入」が省略されるかtrueの場合、「更新」通知は、テーブルに新しく挿入された行に対して送信されます。

o If "delete" is omitted or true, "update" notifications are sent for rows deleted from the table.

o 「削除」を省略するかtrueにすると、テーブルから削除された行に対して「更新」通知が送信されます。

o If "modify" is omitted or true, "update" notifications are sent whenever a row in the table is modified.

o 「変更」を省略するかtrueにすると、テーブルの行が変更されるたびに「更新」通知が送信されます。

If there is more than one <monitor-request> in an array, then each <monitor-request> in the array should specify both "columns" and "select", and the "columns" MUST be non-overlapping sets.

配列に複数の<monitor-request>がある場合、配列の各<monitor-request>は「columns」と「select」の両方を指定する必要があり、「columns」は重複しないセットである必要があります。

4.1.6. Update Notification
4.1.6. 更新通知

The "update" notification is sent by the server to the client to report changes in tables that are being monitored following a "monitor" request as described above. The notification has the following members:

「更新」通知は、サーバーによってクライアントに送信され、上記の「監視」要求に続いて監視されているテーブルの変更を報告します。通知には次のメンバーが含まれます。

   o  "method": "update"
        
   o  "params": [<json-value>, <table-updates>]
        

o "id": null

o 「id」:null

The <json-value> in "params" is the same as the value passed as the <json-value> in "params" for the corresponding "monitor" request. <table-updates> is an object that maps from a table name to a <table-update>. A <table-update> is an object that maps from the row's UUID to a <row-update> object. A <row-update> is an object with the following members:

「params」の<json-value>は、対応する「monitor」リクエストの「params」の<json-value>として渡される値と同じです。 <table-updates>は、テーブル名から<table-update>にマップするオブジェクトです。 <table-update>は、行のUUIDから<row-update>オブジェクトにマップするオブジェクトです。 <row-update>は、次のメンバーを持つオブジェクトです。

    "old": <row>   present for "delete" and "modify" updates
    "new": <row>   present for "initial", "insert", and "modify" updates
        

The format of <row> is described in Section 5.1.

<row>の形式については、5.1節で説明します。

Each table in which one or more rows has changed (or whose initial view is being presented) is represented in <table-updates>. Each row that has changed (or whose initial view is being presented) is represented in its <table-update> as a member with its name taken from the row's "_uuid" member. The corresponding value is a <row-update>:

1つ以上の行が変更された(または初期ビューが表示されている)各テーブルは、<table-updates>で表されます。変更された(または最初のビューが表示されている)各行は、<table-update>で、行の "_uuid"メンバーから取得された名前を持つメンバーとして表されます。対応する値は<row-update>です。

o The "old" member is present for "delete" and "modify" updates. For "delete" updates, each monitored column is included. For "modify" updates, the prior value of each monitored column whose value has changed is included (monitored columns that have not changed are represented in "new").

o 「古い」メンバーは、「削除」および「変更」の更新のために存在します。 「削除」更新の場合、監視対象の各列が含まれます。 「変更」更新の場合、値が変更された各監視対象列の以前の値が含まれます(変更されていない監視対象列は「新規」で表されます)。

o The "new" member is present for "initial", "insert", and "modify" updates. For "initial" and "insert" updates, each monitored column is included. For "modify" updates, the new value of each monitored column is included.

o 「新規」メンバーは、「初期」、「挿入」、および「変更」の更新のために存在します。 「初期」および「挿入」の更新の場合、監視対象の各列が含まれます。 「変更」更新の場合、各監視対象列の新しい値が含まれます。

Note that initial views of rows are not presented in update notifications, but in the response object to the monitor request. The formatting of the <table-updates> object, however, is the same in either case.

行の初期ビューは、更新通知ではなく、監視リクエストへの応答オブジェクトに表示されることに注意してください。ただし、<table-updates>オブジェクトのフォーマットはどちらの場合も同じです。

4.1.7. Monitor Cancellation
4.1.7. キャンセルの監視

The "monitor_cancel" request cancels a previously issued monitor request. The request object members are:

「monitor_cancel」リクエストは、以前に発行された監視リクエストをキャンセルします。リクエストオブジェクトのメンバーは次のとおりです。

   o  "method": "monitor_cancel"
        
   o  "params": [<json-value>]
        
   o  "id": <nonnull-json-value>
        

The <json-value> in "params" matches the <json-value> in "params" for the ongoing "monitor" request that is to be canceled. No more "update" messages will be sent for this table monitor. The response to this request has the following members:

「params」の<json-value>は、キャンセルされる進行中の「monitor」リクエストの「params」の<json-value>と一致します。このテーブルモニターに対してこれ以上「更新」メッセージは送信されません。この要求への応答には、次のメンバーがあります。

   o  "result": {}
        

o "error": null

o 「エラー」:null

o "id": the request "id" member

o "id":リクエストの "id"メンバー

In the event that a monitor cancellation request refers to an unknown monitor request, an error response with the following members is returned:

モニターのキャンセル要求が不明なモニター要求を参照している場合、次のメンバーのエラー応答が返されます。

o "result": null

o 「結果」:null

   o  "error": "unknown monitor"
        

o "id": the request "id" member

o "id":リクエストの "id"メンバー

4.1.8. Lock Operations
4.1.8. ロック操作

Three RPC methods, "lock", "steal", and "unlock", provide support to clients to perform locking operations on the database. The database server supports an arbitrary number of locks, each of which is identified by a client-defined ID. At any given time, each lock may have at most one owner. The precise usage of a lock is determined by the client. For example, a set of clients may agree that a certain table can only be written by the owner of a certain lock. OVSDB itself does not enforce any restrictions on how locks are used -- it simply ensures that a lock has at most one owner.

「lock」、「steal」、および「unlock」の3つのRPCメソッドは、クライアントがデータベースでロック操作を実行するためのサポートを提供します。データベースサーバーは、任意の数のロックをサポートします。各ロックは、クライアント定義のIDによって識別されます。常に、各ロックには最大で1人の所有者がいます。ロックの正確な使用法はクライアントによって決定されます。たとえば、一連のクライアントは、特定のテーブルは特定のロックの所有者のみが書き込むことができることに同意する場合があります。 OVSDB自体は、ロックの使用方法に制限を課しません。ロックの所有者が1人であることを保証するだけです。

The RPC request objects have the following members:

RPC要求オブジェクトには次のメンバーがあります。

   o  "method": "lock", "steal", or "unlock"
        
   o  "params": [<id>]
        
   o  "id": <nonnull-json-value>
        

The response depends on the request and has the following members:

応答は要求に依存し、次のメンバーがあります。

   o  "result": {"locked": boolean} for "lock"
        
   o  "result": {"locked": true} for "steal"
        
   o  "result": {} for "unlock"
        

o "error": null

o 「エラー」:null

o "id": same "id" as request

o "id":リクエストと同じ "id"

The three methods operate as follows:

3つの方法は次のように動作します。

o "lock": The database will assign this client ownership of the lock as soon as it becomes available. When multiple clients request the same lock, they will receive it in first-come, first-served order.

o 「ロック」:データベースは、ロックが使用可能になるとすぐに、このクライアントにロックの所有権を割り当てます。複数のクライアントが同じロックを要求すると、クライアントは先着順でそれを受け取ります。

o "steal": The database immediately assigns this client ownership of the lock. If there is an existing owner, it loses ownership.

o 「スチール」:データベースは、このクライアントにロックの所有権をすぐに割り当てます。既存の所有者がいる場合は、所有権を失います。

o "unlock": If the client owns the lock, this operation releases it. If the client has requested ownership of the lock, this cancels the request.

o 「ロック解除」:クライアントがロックを所有している場合、この操作はロックを解放します。クライアントがロックの所有権を要求した場合、これは要求をキャンセルします。

(Closing or otherwise disconnecting a database client connection unlocks all of its locks.)

(データベースクライアント接続を閉じるか、または切断すると、すべてのロックが解除されます。)

For any given lock, the client MUST alternate "lock" or "steal" operations with "unlock" operations. That is, if the previous operation on a lock was "lock" or "steal", it MUST be followed by an "unlock" operation, and vice versa.

特定のロックについて、クライアントは「ロック」または「スチール」操作と「ロック解除」操作を交互に行う必要があります。つまり、ロックに対する前の操作が「ロック」または「スチール」であった場合、「ロック解除」操作が後に続く必要があり、その逆も同様です。

For a "lock" operation, the "locked" member in the response object is true if the lock has already been acquired and false if another client holds the lock and the client's request for it was queued. In the latter case, the client will be notified later with a "locked" message (Section 4.1.9) when acquisition succeeds.

「lock」操作の場合、応答オブジェクトの「locked」メンバーは、ロックがすでに取得されている場合はtrueで、別のクライアントがロックを保持していて、そのクライアントの要求がキューに入れられている場合はfalseです。後者の場合、取得が成功すると、後で「ロックされた」メッセージ(セクション4.1.9)でクライアントに通知されます。

These requests complete and send a response quickly, without waiting. The "locked" and "stolen" notifications (see below) report asynchronous changes to ownership.

これらの要求は完了し、待機せずに迅速に応答を送信します。 「ロックされた」および「盗まれた」通知(下記を参照)は、所有権に対する非同期の変更を報告します。

   Note that the scope of a lock is a database server, not a database
   hosted by that server.  A client may choose to implement a naming
   convention, such as "<db-name>__<lock-name>", which can effectively
   limit the scope of a lock to a particular database.
        
4.1.9. Locked Notification
4.1.9. ロックされた通知

The "locked" notification is provided to notify a client that it has been granted a lock that it had previously requested with the "lock" method described above. The notification has the following members:

「ロック」通知は、前述の「ロック」メソッドで以前に要求したロックが許可されたことをクライアントに通知するために提供されます。通知には次のメンバーが含まれます。

   o  "method": "locked"
        
   o  "params": [<id>]
        

o "id": null

o 「id」:null

"Params" contains the name of the lock that was given in the "lock" request. The notified client now owns the lock named in "params".

「Params」には、「lock」リクエストで指定されたロックの名前が含まれています。通知されたクライアントは、「params」で指定されたロックを所有します。

The database server sends this notification after the reply to the corresponding "lock" request (but only if the "locked" member of the response was false) and before the reply to the client's subsequent "unlock" request.

データベースサーバーは、対応する「ロック」要求への応答の後(ただし、応答の「ロック」メンバーがfalseの場合のみ)、クライアントの後続の「ロック解除」要求への応答の前に、この通知を送信します。

4.1.10. Stolen Notification
4.1.10. 盗まれた通知

The "stolen" notification is provided to notify a client, which had previously obtained a lock, that another client has stolen ownership of that lock. The notification has the following members:

「盗まれた」通知は、以前にロックを取得していたクライアントに、別のクライアントがそのロックの所有権を盗んだことを通知するために提供されます。通知には次のメンバーが含まれます。

   o  "method": "stolen"
        
   o  "params": [<id>]
        

o "id": null The notified client no longer owns the lock named in "params". The client MUST still issue an "unlock" request before performing any subsequent "lock" or "steal" operation on the lock.

o "id":null通知されたクライアントは、 "params"で指定されたロックを所有しなくなりました。クライアントは、ロックに対して後続の「ロック」または「スチール」操作を実行する前に、「ロック解除」要求を発行する必要があります。

If the client originally obtained the lock through a "lock" request, then it will automatically regain the lock later after the client that stole it releases it. (The database server will send the client a "locked" notification at that point to let it know.)

クライアントが最初に「ロック」リクエストを介してロックを取得した場合、クライアントがロックを解除した後、それを解放した後で自動的にロックを回復します。 (データベースサーバーは、その時点でクライアントに「ロックされた」通知を送信して通知します。)

If the client originally obtained the lock through a "steal" request, the database server won't automatically reassign it ownership of the lock when it later becomes available. To regain ownership, the client must "unlock" and then "lock" or "steal" the lock again.

クライアントが最初に「スチール」要求によってロックを取得した場合、データベースサーバーは、後で使用可能になったときに、ロックの所有権を自動的に再割り当てしません。所有権を取り戻すには、クライアントは「ロックを解除」してから、再度ロックするか「盗む」必要があります。

4.1.11. Echo
4.1.11. エコー

The "echo" method can be used by both clients and servers to verify the liveness of a database connection. It MUST be implemented by both clients and servers. The members of the request are:

"echo"メソッドは、クライアントとサーバーの両方がデータベース接続の活性を確認するために使用できます。クライアントとサーバーの両方で実装する必要があります。リクエストのメンバーは次のとおりです。

   o  "method": "echo"
        

o "params": JSON array with any contents

o 「params」:任意のコンテンツを含むJSON配列

   o  "id": <json-value>
        

The response object has the following members:

応答オブジェクトには次のメンバーがあります。

o "result": same as "params"

o 「結果」:「params」と同じ

o "error": null

o 「エラー」:null

o "id": the request "id" member

o "id":リクエストの "id"メンバー

5. Database Operations
5. データベース操作

This section describes the operations that may be specified in the "transact" method described in Section 4.1.3.

このセクションでは、セクション4.1.3で説明した「トランザクション」メソッドで指定できる操作について説明します。

5.1. Notation
5.1. 表記

We introduce the following notation for the discussion of operations.

運用を説明するために以下の表記を導入します。

<db-name> An <id> that names a database. The valid <db-name>s can be obtained using a "list_dbs" request. The <db-name> is taken from the "name" member of <database-schema>.

<db-name>データベースに名前を付ける<id>。有効な<db-name>は、「list_dbs」リクエストを使用して取得できます。 <db-name>は、<database-schema>の「name」メンバーから取得されます。

<table> An <id> that names a table.

<table>テーブルを指定する<id>。

<column> An <id> that names a table column.

<column>テーブルの列を指定する<id>。

<row> A JSON object that describes a table row or a subset of a table row. Each member is the name of a table column paired with the <value> of that column.

<row>テーブル行またはテーブル行のサブセットを記述するJSONオブジェクト。各メンバーは、テーブルの列の名前とその列の<値>を組み合わせたものです。

<value> A JSON value that represents the value of a column in a table row, one of <atom>, <set>, or <map>.

<値>テーブル行の列の値を表すJSON値。<atom>、<set>、または<map>のいずれかです。

<atom> A JSON value that represents a scalar value for a column, one of <string>, <number>, <boolean>, <uuid>, or <named-uuid>.

<atom>列のスカラー値を表すJSON値。<string>、<number>、<boolean>、<uuid>、または<named-uuid>のいずれか。

<set> Either an <atom>, representing a set with exactly one element, or a 2-element JSON array that represents a database set value. The first element of the array must be the string "set", and the second element must be an array of zero or more <atom>s giving the values in the set. All of the <atom>s must have the same type.

<set>要素を1つだけ持つセットを表す<atom>、またはデータベースセットの値を表す2要素のJSON配列。配列の最初の要素は文字列「セット」である必要があり、2番目の要素は、セット内の値を与える0個以上の<atom>の配列である必要があります。 <atom>はすべて同じ型でなければなりません。

<map> A 2-element JSON array that represents a database map value. The first element of the array must be the string "map", and the second element must be an array of zero or more <pair>s giving the values in the map. All of the <pair>s must have the same key and value types.

<map>データベースのマップ値を表す2要素のJSON配列。配列の最初の要素は文字列「map」である必要があり、2番目の要素は0またはそれ以上の<pair>の配列で、マップ内の値を与える必要があります。すべての<pair>には、同じキーと値のタイプが必要です。

(JSON objects are not used to represent <map> because JSON only allows string names in an object.)

(JSONオブジェクトは文字列名のみをオブジェクトに許可するため、<map>を表すために使用されません。)

<pair> A 2-element JSON array that represents a pair within a database map. The first element is an <atom> that represents the key, and the second element is an <atom> that represents the value.

<pair>データベースマップ内のペアを表す2要素のJSON配列。最初の要素はキーを表す<atom>で、2番目の要素は値を表す<atom>です。

<uuid> A 2-element JSON array that represents a UUID. The first element of the array must be the string "uuid", and the second element must be a 36-character string giving the UUID in the format described by RFC 4122 [RFC4122]. For example, the following <uuid> represents the UUID 550e8400-e29b-41d4-a716-446655440000:

<uuid> UUIDを表す2要素のJSON配列。配列の最初の要素は文字列「uuid」である必要があり、2番目の要素は、RFC 4122 [RFC4122]で記述されている形式でUUIDを提供する36文字の文字列である必要があります。たとえば、次の<uuid>はUUID 550e8400-e29b-41d4-a716-446655440000を表します。

["uuid", "550e8400-e29b-41d4-a716-446655440000"]

["uuid"、 "550e8400-e29b-41d4-a716-446655440000"]

<named-uuid> A 2-element JSON array that represents the UUID of a row inserted in an "insert" operation within the same transaction. The first element of the array must be the string "named-uuid", and the second element should be the <id> specified as the "uuid-name" for an "insert" operation within the same transaction. For example, if an "insert" operation within this transaction specifies a "uuid-name" of "myrow", the following <named-uuid> represents the UUID created by that operation:

<named-uuid>同じトランザクション内の「挿入」操作で挿入された行のUUIDを表す2要素のJSON配列。配列の最初の要素は文字列「named-uuid」である必要があり、2番目の要素は同じトランザクション内の「挿入」操作の「uuid-name」として指定された<id>である必要があります。たとえば、このトランザクション内の「挿入」操作で「myrow」の「uuid-name」が指定されている場合、次の<named-uuid>は、その操作によって作成されたUUIDを表します。

["named-uuid", "myrow"]

["named-uuid"、 "myrow"]

A <named-uuid> may be used anywhere a <uuid> is valid. This enables a single transaction to both insert a new row and then refer to that row using the "uuid-name" that was associated with that row when it was inserted. Note that the "uuid-name" is only meaningful within the scope of a single transaction.

<named-uuid>は、<uuid>が有効な場所ならどこでも使用できます。これにより、単一のトランザクションで新しい行を挿入し、その行が挿入されたときにその行に関連付けられていた「uuid-name」を使用してその行を参照することができます。 「uuid-name」は、単一のトランザクションの範囲内でのみ意味があることに注意してください。

<condition> A 3-element JSON array of the form [<column>, <function>, <value>] that represents a test on a column value. Except as otherwise specified below, <value> MUST have the same type as <column>. The meaning depends on the type of <column>:

<condition>列値のテストを表す[<column>、<function>、<value>]形式の3要素のJSON配列。以下で特に指定されている場合を除き、<value>は<column>と同じタイプである必要があります。意味は<column>のタイプによって異なります。

integer or real <function> must be "<", "<=", "==", "!=", ">=", ">", "includes", or "excludes".

整数または実数の<function>は、「<」、「<=」、「==」、「!=」、「> =」、「>」、「includes」、または「excludes」である必要があります。

The test is true if the column's value satisfies the relation <function> <value>, e.g., if the column has value 1 and <value> is 2, the test is true if <function> is "<", "<=", or "!=", but not otherwise.

列の値がリレーション<関数> <値>を満たす場合、テストは真です。たとえば、列の値が1で<値>が2の場合、<関数>が "<"、 "<="の場合、テストは真です。 、または「!=」ですが、それ以外の場合は除きます。

"includes" is equivalent to "=="; "excludes" is equivalent to "!=".

「includes」は「==」と同等です。 "excludes"は "!="と同等です。

boolean or string or uuid <function> must be "!=", "==", "includes", or "excludes".

ブール値、文字列、またはuuid <function>は、「!=」、「==」、「includes」、または「excludes」である必要があります。

If <function> is "==" or "includes", the test is true if the column's value equals <value>. If <function> is "!=" or "excludes", the test is inverted.

<function>が "=="または "includes"の場合、列の値が<value>と等しい場合、テストは真になります。 <function>が "!="または "excludes"の場合、テストは逆になります。

set or map <function> must be "!=", "==", "includes", or "excludes".

セットまたはマップ<function>は、「!=」、「==」、「includes」、または「excludes」である必要があります。

If <function> is "==", the test is true if the column's value contains exactly the same values (for sets) or pairs (for maps). If <function> is "!=", the test is inverted.

<function>が "=="の場合、列の値にまったく同じ値(セットの場合)またはペア(マップの場合)が含まれている場合、テストは真になります。 <function>が "!="の場合、テストは逆になります。

If <function> is "includes", the test is true if the column's value contains all of the values (for sets) or pairs (for maps) in <value>. The column's value may also contain other values or pairs.

<関数>が "includes"の場合、列の値に<値>のすべての値(セットの場合)またはペア(マップの場合)が含まれている場合、テストは真になります。列の値には、他の値またはペアが含まれる場合もあります。

If <function> is "excludes", the test is true if the column's value does not contain any of the values (for sets) or pairs (for maps) in <value>. The column's value may contain other values or pairs not in <value>.

<関数>が "excludes"の場合、列の値に<値>の値(セットの場合)またはペア(マップの場合)が含まれていない場合、テストは真になります。列の値には、<値>にない他の値またはペアが含まれる場合があります。

If <function> is "includes" or "excludes", then the required type of <value> is slightly relaxed, in that it may have fewer than the minimum number of elements specified by the column's type. If <function> is "excludes", then the required type is additionally relaxed in that <value> may have more than the maximum number of elements specified by the column's type.

<function>が「includes」または「excludes」の場合、<value>の必要なタイプは少し緩和され、列のタイプで指定された要素の最小数よりも少ない場合があります。 <function>が "excludes"の場合、必要な型はさらに緩和され、<value>は列の型で指定された要素の最大数を超える可能性があります。

<function> One of "<", "<=", "==", "!=", ">=", ">", "includes", or "excludes".

<function>「<」、「<=」、「==」、「!=」、「> =」、「>」、「includes」、または「excludes」のいずれか。

<mutation> A 3-element JSON array of the form [<column>, <mutator>, <value>] that represents a change to a column value. Except as otherwise specified below, <value> must have the same type as <column>. The meaning depends on the type of <column>:

<mutation>列値への変更を表す[<column>、<mutator>、<value>]形式の3要素のJSON配列。以下で特に指定されている場合を除き、<value>は<column>と同じタイプである必要があります。意味は<column>のタイプによって異なります。

integer or real <mutator> must be "+=", "-=", "*=", "/=", or (integer only) "%=". The value of <column> is changed to the sum, difference, product, quotient, or remainder, respectively, of <column> and <value>.

整数または実数の<mutator>は、 "+ ="、 "-="、 "* ="、 "/ ="、または(整数のみ) "%="でなければなりません。 <column>の値は、<column>と<value>の合計、差、積、商、または剰余にそれぞれ変更されます。

Constraints on <column> are ignored when parsing <value>.

<値>を解析するとき、<列>の制約は無視されます。

boolean, string, or uuid No valid <mutator>s are currently defined for these types.

boolean、string、またはuuidこれらのタイプに対して現在有効な<mutator>は定義されていません。

set Any <mutator> valid for the set's element type may be applied to the set, in which case the mutation is applied to each member of the set individually. <value> must be a scalar value of the same type as the set's element type, except that constraints are ignored when parsing <value>.

セットの要素タイプに有効な任意の<mutator>をセットに適用できます。その場合、変更はセットの各メンバーに個別に適用されます。 <値>は、セットの要素タイプと同じタイプのスカラー値でなければなりません。ただし、<値>の解析時に制約は無視されます。

If <mutator> is "insert", then each of the values in the set in <value> is added to <column> if it is not already present. The required type of <value> is slightly relaxed, in that it may have fewer than the minimum number of elements specified by the column's type.

<mutator>が "insert"の場合、<value>のセットの各値は、まだ存在しない場合は<column>に追加されます。必要な<値>の型は、列の型で指定された要素の最小数よりも少ない場合があるため、少し緩和されています。

If <mutator> is "delete", then each of the values in the set in <value> is removed from <column> if it is present there. The required type is slightly relaxed in that <value> may have more or less than the maximum number of elements specified by the column's type.

<mutator>が "delete"の場合、<value>のセット内の各値は、<column>に存在する場合、<column>から削除されます。必要な型は、<値>が列の型で指定された要素の最大数よりも多い場合や少ない場合があるため、少し緩和されています。

map <mutator> must be "insert" or "delete".

マップ<mutator>は「挿入」または「削除」である必要があります。

If <mutator> is "insert", then each of the key-value pairs in the map in <value> is added to <column> only if its key is not already present. The required type of <value> is slightly relaxed, in that it may have fewer than the minimum number of elements specified by the column's type.

<mutator>が "insert"の場合、キーがまだ存在しない場合にのみ、<value>のマップ内の各キーと値のペアが<column>に追加されます。必要な<値>の型は、列の型で指定された要素の最小数よりも少ない場合があるため、少し緩和されています。

If <mutator> is "delete", then <value> may have the same type as <column> (a map type), or it may be a set whose element type is the same as <column>'s key type:

<mutator>が "delete"の場合、<value>は<column>(マップタイプ)と同じタイプか、要素タイプが<column>のキータイプと同じセットである可能性があります。

+ If <value> is a map, the mutation deletes each key-value pair in <column> whose key and value equal one of the key-value pairs in <value>.

+ <値>がマップの場合、ミューテーションにより、<列>の各キーと値のペアが削除されます。キーと値は、<値>のキーと値のペアの1つと同じです。

+ If <value> is a set, the mutation deletes each key-value pair in <column> whose key equals one of the values in <value>.

+ <値>がセットの場合、ミューテーションは、キーが<値>の値の1つと等しい<列>の各キーと値のペアを削除します。

For "delete", <value> may have any number of elements, regardless of restrictions on the number of elements in <column>.

「削除」の場合、<値>には、<列>の要素数の制限に関係なく、任意の数の要素を含めることができます。

<mutator> One of "+=", "-=", "*=", "/=", "%=", "insert", or "delete".

<mutator>「+ =」、「-=」、「* =」、「/ =」、「%=」、「挿入」、または「削除」のいずれか。

5.2. Operations
5.2. 操作

The operations that may be performed as part of a "transact" RPC request (see Section 4.1.3) are described in the following subsections. Each of these operations is a JSON object that may be included as one of the elements of the "params" array that is one of the elements of the "transact" request. The details of each object, its semantics, results, and possible errors are described below.

「トランザクション」RPCリクエスト(セクション4.1.3を参照)の一部として実行される可能性のある操作については、以下のサブセクションで説明します。これらの各オペレーションはJSONオブジェクトであり、「transact」リクエストの要素の1つである「params」配列の要素の1つとして含めることができます。各オブジェクトの詳細、その意味論、結果、および考えられるエラーを以下に示します。

5.2.1. Insert
5.2.1. インサート

The "insert" object contains the following members:

「挿入」オブジェクトには、次のメンバーが含まれます。

      "op": "insert"          required
      "table": <table>        required
      "row": <row>            required
      "uuid-name": <id>       optional
        

The corresponding result object contains the following member:

対応する結果オブジェクトには、次のメンバーが含まれます。

      "uuid": <uuid>
        

The operation inserts "row" into "table". If "row" does not specify values for all the columns in "table", those columns receive default values. The default value for a column depends on its type. The default for a column whose <type> specifies a "min" of 0 is an empty set or empty map. Otherwise, the default is a single value or a single key-value pair, whose value(s) depend on its <atomic-type>:

この操作では、「行」が「テーブル」に挿入されます。 「行」が「テーブル」のすべての列の値を指定しない場合、それらの列はデフォルト値を受け取ります。列のデフォルト値は、そのタイプによって異なります。 <type>が0の「最小」を指定する列のデフォルトは、空のセットまたは空のマップです。それ以外の場合、デフォルトは単一の値または単一のキーと値のペアであり、その値は<atomic-type>に依存します。

o "integer" or "real": 0

o 「整数」または「実数」:0

o "boolean": false

o 「ブール」:false

   o  "string": "" (the empty string)
        

o "uuid": 00000000-0000-0000-0000-000000000000

o 「uuid」:00000000-0000-0000-0000-000000000000

The new row receives a new, randomly generated UUID. If "uuid-name" is supplied, then it is an error if <id> is not unique among the "uuid-name"s supplied on all the "insert" operations within this transaction. The UUID for the new row is returned as the "uuid" member of the result.

新しい行は、ランダムに生成された新しいUUIDを受け取ります。 「uuid-name」が指定されている場合、このトランザクション内のすべての「挿入」操作で指定された「uuid-name」の中で<id>が一意でないと、エラーになります。新しい行のUUIDは、結果の「uuid」メンバーとして返されます。

The errors that may be returned are as follows:

返される可能性のあるエラーは次のとおりです。

   "error": "duplicate uuid-name"
      The same "uuid-name" appears on another "insert" operation within
      this transaction.
        
   "error": "constraint violation"
      One of the values in "row" does not satisfy the immediate
      constraints for its column's <base-type>.  This error will occur
      for columns that are not explicitly set by "row" if the default
      value does not satisfy the column's constraints.
        
5.2.2. Select
5.2.2. 選択する

The "select" object contains the following members:

「select」オブジェクトには、次のメンバーが含まれています。

      "op": "select"                required
      "table": <table>              required
      "where": [<condition>*]       required
      "columns": [<column>*]        optional
        

The corresponding result object contains the following member:

対応する結果オブジェクトには、次のメンバーが含まれます。

      "rows": [<row>*]
        

The operation searches "table" for rows that match all the conditions specified in "where". If "where" is an empty array, every row in "table" is selected.

この操作は、「where」で指定されたすべての条件に一致する行を「table」で検索します。 「where」が空の配列の場合、「table」のすべての行が選択されます。

The "rows" member of the result is an array of objects. Each object corresponds to a matching row, with each column specified in "columns" as a member, the column's name as the member name, and its value as the member value. If "columns" is not specified, all the table's columns are included (including the internally generated "_uuid" and "_version" columns). If two rows of the result have the same values for all included columns, only one copy of that row is included in "rows". Specifying "_uuid" within "columns" will avoid dropping duplicates, since every row has a unique UUID.

結果の「行」メンバーは、オブジェクトの配列です。各オブジェクトは一致する行に対応し、各列は「columns」でメンバーとして指定され、列の名前はメンバー名、その値はメンバー値として指定されます。 "columns"が指定されていない場合、テーブルのすべての列が含まれます(内部的に生成された "_uuid"および "_version"列を含みます)。結果の2つの行が含まれるすべての列で同じ値を持つ場合、その行の1つのコピーのみが「行」に含まれます。 「列」内で「_uuid」を指定すると、すべての行に一意のUUIDがあるため、重複のドロップを回避できます。

The ordering of rows within "rows" is unspecified.

「行」内の行の順序は指定されていません。

5.2.3. Update
5.2.3. 更新

The "update" object contains the following members:

「更新」オブジェクトには、次のメンバーが含まれます。

      "op": "update"                required
      "table": <table>              required
      "where": [<condition>*]       required
      "row": <row>                  required
        

The corresponding result object contains the following member:

対応する結果オブジェクトには、次のメンバーが含まれます。

      "count": <integer>
        

The operation updates rows in a table. It searches "table" for rows that match all the conditions specified in "where". For each matching row, it changes the value of each column specified in "row" to the value for that column specified in "row". The "_uuid" and "_version" columns of a table may not be directly updated with this operation. Columns designated read-only in the schema also may not be updated.

この操作は、テーブルの行を更新します。 「where」で指定されたすべての条件に一致する行を「table」で検索します。一致する各行について、「row」で指定された各列の値を「row」で指定されたその列の値に変更します。テーブルの「_uuid」および「_version」列は、この操作では直接更新されない場合があります。スキーマで読み取り専用に指定された列も更新されない場合があります。

The "count" member of the result specifies the number of rows that matched.

The "count" member of the result specifies the number of rows that matched.

The error that may be returned is:

返される可能性のあるエラーは次のとおりです。

   "error": "constraint violation"
      One of the values in "row" does not satisfy the immediate
      constraints for its column's <base-type>.
        
5.2.4. Mutate
5.2.4. 変異

The "mutate" object contains the following members:

「mutate」オブジェクトには、次のメンバーが含まれています。

      "op":  "mutate"               required
      "table": <table>              required
      "where": [<condition>*]       required
      "mutations": [<mutation>*]    required
        

The corresponding result object contains the following member:

対応する結果オブジェクトには、次のメンバーが含まれます。

      "count": <integer>
        

The operation mutates rows in a table. It searches "table" for rows that match all the conditions specified in "where". For each matching row, it mutates its columns as specified by each <mutation> in "mutations", in the order specified.

この操作は、テーブルの行を変更します。 「where」で指定されたすべての条件に一致する行を「table」で検索します。一致する行ごとに、「mutations」内の各<mutation>で指定された列を指定された順序で変更します。

The "_uuid" and "_version" columns of a table may not be directly modified with this operation. Columns designated read-only in the schema also may not be updated.

この操作では、テーブルの「_uuid」列と「_version」列を直接変更することはできません。スキーマで読み取り専用に指定された列も更新されない場合があります。

The "count" member of the result specifies the number of rows that matched.

結果の「カウント」メンバーは、一致した行の数を指定します。

The errors that may be returned are:

The errors that may be returned are:

"error": "domain error" The result of the mutation is not mathematically defined, e.g., division by zero.

"error": "domain error" The result of the mutation is not mathematically defined, e.g., division by zero.

"error": "range error" The result of the mutation is not representable within the database's format, e.g., an integer result outside the range INT64_MIN...INT64_MAX or a real result outside the range -DBL_MAX...DBL_MAX.

"error": "range error" The result of the mutation is not representable within the database's format, e.g., an integer result outside the range INT64_MIN...INT64_MAX or a real result outside the range -DBL_MAX...DBL_MAX.

   "error": "constraint violation"
      The mutation caused the column's value to violate a constraint,
      e.g., it caused a column to have more or fewer values than are
      allowed, an arithmetic operation caused a set or map to have
      duplicate elements, or it violated a constraint specified by a
      column's <base-type>.
        
5.2.5. Delete
5.2.5. Delete

The "delete" object contains the following members:

「削除」オブジェクトには、次のメンバーが含まれます。

      "op":  "delete"               required
      "table": <table>              required
      "where": [<condition>*]       required
        

The corresponding result object contains the following member:

対応する結果オブジェクトには、次のメンバーが含まれます。

      "count": <integer>
        

The operation deletes all the rows from "table" that match all the conditions specified in "where". The "count" member of the result specifies the number of deleted rows.

この操作は、「where」で指定されたすべての条件に一致する「table」からすべての行を削除します。結果の「カウント」メンバーは、削除された行の数を指定します。

5.2.6. Wait
5.2.6. 待つ

The "wait" object contains the following members:

「待機」オブジェクトには、次のメンバーが含まれます。

      "op": "wait"                        required
      "timeout": <integer>                optional
      "table": <table>                    required
      "where": [<condition>*]             required
      "columns": [<column>*]              required
      "until": "==" or "!="               required
      "rows": [<row>*]                    required
        

There is no corresponding result object.

対応する結果オブジェクトはありません。

The operation waits until a condition becomes true.

操作は、条件がtrueになるまで待機します。

If "until" is "==", it checks whether the query on "table" specified by "where" and "columns", which is evaluated in the same way as specified for "select", returns the result set specified by "rows". If it does, then the operation completes successfully. Otherwise, the entire transaction rolls back. It is automatically restarted later, after a change in the database makes it possible for the operation to succeed. The client will not receive a response until the operation permanently succeeds or fails.

「until」が「==」の場合、「where」および「columns」で指定された「table」に対するクエリが、「select」で指定されたのと同じ方法で評価され、「」で指定された結果セットを返すかどうかをチェックします行」。存在する場合、操作は正常に完了します。それ以外の場合は、トランザクション全体がロールバックされます。データベースの変更により操作が成功した後、自動的に再起動されます。操作が永続的に成功または失敗するまで、クライアントは応答を受け取りません。

If "until" is "!=", the sense of the test is negated. That is, as long as the query on "table" specified by "where" and "columns" returns "rows", the transaction will be rolled back and restarted later.

「until」が「!=」の場合、テストの意味は否定されます。つまり、「where」と「columns」で指定された「table」に対するクエリが「rows」を返す限り、トランザクションはロールバックされ、後で再開されます。

If "timeout" is specified, then the transaction aborts after the specified number of milliseconds. The transaction is guaranteed to be attempted at least once before it aborts. A "timeout" of 0 will abort the transaction on the first mismatch.

「タイムアウト」が指定されている場合、トランザクションは指定されたミリ秒数の後に中止されます。トランザクションは、アボートする前に少なくとも1回試行されることが保証されています。 「タイムアウト」が0の場合、最初の不一致でトランザクションが中止されます。

The error that may be returned is:

返される可能性のあるエラーは次のとおりです。

"error": "timed out" The "timeout" was reached before the transaction was able to complete.

「エラー」:「タイムアウト」トランザクションが完了する前に「タイムアウト」に達しました。

5.2.7. Commit
5.2.7. コミット

The "commit" object contains the following members:

「コミット」オブジェクトには、次のメンバーが含まれます。

      "op": "commit"                      required
      "durable": <boolean>                required
        

There is no corresponding result object.

対応する結果オブジェクトはありません。

If "durable" is specified as true, then the transaction, if it commits, will be stored durably (to disk) before the reply is sent to the client. This operation with "durable" set to false is effectively a no-op.

「durable」がtrueに指定されている場合、トランザクションがコミットされると、応答がクライアントに送信される前に、永続的に(ディスクに)保存されます。 「durable」がfalseに設定されたこの操作は、実質的に何もしません。

The error that may be returned is:

返される可能性のあるエラーは次のとおりです。

   "error": "not supported"
      When "durable" is true, this database implementation does not
      support durable commits.
        
5.2.8. Abort
5.2.8. 中絶

The "abort" object contains the following member:

「アボート」オブジェクトには、次のメンバーが含まれています。

"op": "abort" required

"op": "abort"が必要

There is no corresponding result object (the operation never succeeds).

対応する結果オブジェクトはありません(操作は成功しません)。

The operation aborts the entire transaction with an error. This may be useful for testing.

この操作はトランザクション全体をエラーで中止します。これはテストに役立ちます。

The error that will be returned is:

返されるエラーは次のとおりです。

   "error": "aborted"
      This operation always fails with this error.
        
5.2.9. Comment
5.2.9. コメント

The "comment" object contains the following members:

「コメント」オブジェクトには、次のメンバーが含まれます。

      "op": "comment"                    required
      "comment": <string>                required
        

There is no corresponding result object.

対応する結果オブジェクトはありません。

The operation provides information to a database administrator on the purpose of a transaction. The ovsdb-server implementation, for example, adds comments in transactions that modify the database to the database journal. This can be helpful in debugging, e.g., when there are multiple clients writing to a database. An example of this can be seen in the ovs-vsctl tool, a command line tool that interacts with ovsdb-server. When performing operations on the database, it includes the command that was invoked (e.g., "ovs-vsctl add-br br0") as a comment in the transaction, which can then be seen in the journal alongside the changes that were made to the tables in the database.

この操作は、トランザクションの目的でデータベース管理者に情報を提供します。たとえば、ovsdb-server実装は、データベースをデータベースジャーナルに変更するトランザクションにコメントを追加します。これは、データベースに書き込むクライアントが複数ある場合など、デバッグに役立ちます。この例は、ovsdb-serverと対話するコマンドラインツールであるovs-vsctlツールで確認できます。データベースで操作を実行するとき、トランザクションにコメントとして呼び出されたコマンド(「ovs-vsctl add-br br0」など)が含まれます。これは、次に行われた変更と共にジャーナルで確認できます。データベース内のテーブル。

5.2.10. Assert
5.2.10. 主張する

The assert object contains the following members:

assertオブジェクトには次のメンバーが含まれます。

      "op": "assert"                     required
      "lock": <id>                       required
        

Result object has no members.

結果オブジェクトにはメンバーがありません。

The assert operation causes the transaction to be aborted if the client does not own the lock named <id>.

クライアントが<id>という名前のロックを所有していない場合、アサート操作によりトランザクションが中止されます。

The error that may be returned is:

返される可能性のあるエラーは次のとおりです。

   "error": "not owner"
      The client does not own the named lock.
        
6. IANA Considerations
6. IANAに関する考慮事項

IANA has assigned TCP port 6640 for this protocol. Earlier implementations of OVSDB used another port number, but compliant implementations should use the IANA-assigned number.

IANAは、このプロトコルにTCPポート6640を割り当てています。以前のOVSDBの実装では別のポート番号を使用していましたが、準拠する実装ではIANAが割り当てた番号を使用する必要があります。

IANA has updated the reference for port 6640 to point to this document.

IANAは、このドキュメントを指すようにポート6640の参照を更新しました。

7. Security Considerations
7. セキュリティに関する考慮事項

The main security issue that needs to be addressed for the OVSDB protocol is the authentication, integrity, and privacy of communications between a client and server implementing this protocol. To provide such protection, an OVSDB connection SHOULD be secured using Transport Layer Security (TLS) [RFC5246]. The precise details of how clients and servers authenticate each other is highly dependent on the operating environment. It is often the case that OVSDB clients and servers operate in a tightly controlled environment, e.g., on machines in a single data center where they communicate on an isolated management network.

OVSDBプロトコルで対処する必要がある主なセキュリティ問題は、このプロトコルを実装するクライアントとサーバー間の通信の認証、整合性、およびプライバシーです。そのような保護を提供するために、トランスポート層セキュリティ(TLS)[RFC5246]を使用してOVSDB接続を保護する必要があります(SHOULD)。クライアントとサーバーが相互に認証する方法の詳細は、オペレーティング環境に大きく依存します。多くの場合、OVSDBクライアントとサーバーは、厳格に管理された環境で動作します。たとえば、隔離された管理ネットワーク上で通信する単一のデータセンター内のマシン上などです。

8. Acknowledgements
8. 謝辞

Thanks to Jeremy Stribling and Justin Pettit for their helpful input to this document.

このドキュメントに対する有益な情報を提供してくれたJeremy StriblingとJustin Pettitに感謝します。

9. References
9. 参考文献
9.1. Normative References
9.1. 引用文献

[DCE] "DCE: Remote Procedure Call", Open Group CAE Specification C309, ISBN 1-85912-041-5, August 1994.

[DCE]「DCE:リモートプロシージャコール」、Open Group CAE仕様C309、ISBN 1-85912-041-5、1994年8月。

[JSON-RPC] "JSON-RPC Specification, Version 1.0", <http://json-rpc.org/wiki/specification>.

[JSON-RPC]「JSON-RPC仕様、バージョン1.0」、<http://json-rpc.org/wiki/specification>。

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119] Bradner、S。、「要件レベルを示すためにRFCで使用するキーワード」、BCP 14、RFC 2119、1997年3月。

[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally Unique IDentifier (UUID) URN Namespace", RFC 4122, July 2005.

[RFC4122] Leach、P.、Mealling、M。、およびR. Salz、「Universally Unique IDentifier(UUID)URN Namespace」、RFC 4122、2005年7月。

[RFC4627] Crockford, D., "The application/json Media Type for JavaScript Object Notation (JSON)", RFC 4627, July 2006.

[RFC4627] Crockford、D。、「JavaScript Object Notation(JSON)のアプリケーション/ jsonメディアタイプ」、RFC 4627、2006年7月。

[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, August 2008.

[RFC5246] Dierks、T。およびE. Rescorla、「The Transport Layer Security(TLS)Protocol Version 1.2」、RFC 5246、2008年8月。

9.2. Informative References
9.2. 参考引用

[DB-SCHEMA] "Open vSwitch Database Schema", <http://openvswitch.org/ovs-vswitchd.conf.db.5.pdf>.

[DB-SCHEMA]「Open vSwitch Database Schema」、<http://openvswitch.org/ovs-vswitchd.conf.db.5.pdf>。

[OF-SPEC] Open Networking Foundation, "OpenFlow Switch Specification, version 1.3.3", October 2013, <https://www.opennetworking.org>.

[OF-SPEC] Open Networking Foundation、「OpenFlow Switch Specification、version 1.3.3」、2013年10月、<https://www.opennetworking.org>。

[OVS] "Open vSwitch", <http://openvswitch.org/>.

[OVS]「Open vSwitch」、<http://openvswitch.org/>。

Authors' Addresses

著者のアドレス

Ben Pfaff VMware, Inc. 3401 Hillview Ave. Palo Alto, CA 94304 USA

Ben Pfaff VMware、Inc. 3401 Hillview Ave. Palo Alto、CA 94304 USA

   EMail: blp@nicira.com
        

Bruce Davie (editor) VMware, Inc. 3401 Hillview Ave. Palo Alto, CA 94304 USA

Bruce Davie(編集者)VMware、Inc. 3401 Hillview Ave. Palo Alto、CA 94304 USA

   EMail: bsd@nicira.com