2017-11-23 4 views
0

私はOpenDaylight Carbonによって制御されるopenvswitch(v2.5.2)を備えたミニネット(v2.2.2)ネットワークを持っています。私のアプリケーションはOpenDaylightカラフ機能です。 アプリケーションは、グループテーブル(タイプ=すべて)へのフロー(マルチキャスト用)を作成し、必要に応じてバケットを追加/削除します。 は、バケットを追加/削除するには、私が最初に既存のグループのテーブルがあるかどうかを確認:OpenDaylightでOpenFlowグループテーブルのバケットリストを更新する

InstanceIdentifier<Group> groupIid = InstanceIdentifier.builder(Nodes.class) 
    .child(Node.class, new NodeKey(NodId)) 
    .augmentation(FlowCapableNode.class) 
    .child(Group.class, grpKey) 
    .build(); 
ReadOnlyTransaction roTx = dataBroker.newReadOnlyTransaction(); 
Future<Optional<Group>> futOptGrp = rwTx.read(LogicalDatastoreType.OPERATIONAL, groupIid); 

それがグループテーブルが見つからない場合は、(SalGroupService.addGroup())が作成されます。グループテーブルが見つかった場合は更新されます(SalGroupService.updateGroup())。

問題は、RPCコールadd/updateGroup()の後にデータモデルの変更を表示するまでに時間がかかることです。 Future<RPCResult<?>>を待つことは、データモデルがデバイスと同じ状態であることを保証するものではありません。

したがって、データモデルからグループテーブルとバケットリストを読み取って、実際にデバイスの現在の状態と同じ状態を読み取っていることを確認するにはどうすればよいですか。

私はあなたが

を連鎖トランザクションを使用する必要があります。しかし、私はどのように把握することはできません

  • 書き込み/データブローカを読むためにトランザクションを与える
    • がUpdateGroupInputBuilderはsetTransactionUriを(持っている/追加することを知っていますこれらを組み合わせる。 ありがとう

      編集:またはRPC呼び出しの代わりに書き込みトランザクションを使用する必要がありますか?

  • 答えて

    0

    フローを書き込むためにRPC呼び出しを使用して削除し、設定データストアへの書き込みを使用して切り替えました。実際のデバイスと運用データストアに変更が反映されるのはまだまだ時間がかかりますが、読み取りと書き込みの両方にconfigデータストアを使用していれば問題ありません。

    ただし、configデータストアの変更によって常に実際のデバイスに変更されるという保証はありません。私の流れは、葛藤が起こりそうにないという意味では複雑ではありません。それでも、運用データストアと構成データストアの一貫性を確認することにします。

    関連する問題