0

ユーザーが netconfedit-configを送信すると、システム内で一連のアクションが開始され、システムの構成がアトミックに変更され、ユーザーに成功または失敗の通知が送信されるカスタム システムを作成しています。

これは、最後にコミットまたはロールバックする大きな SQL トランザクションと考えてください。

だから、ステップ

  1. ユーザーがedit-config
  2. システムは構成を受け入れ、この構成を実装するために動作します
  3. 構成が成功した場合、親指を立てた応答で送信します (これを行う正式な方法がわからない)
  4. 構成が失敗した場合は、親指の応答で送信します (構成が内部的にロールバックされていることを確認する必要があります)。
  5. これはすべてアトミックに行われます。そのため、ユーザーが 2 つの構成を続けて送信しても、互いに競合することはありません。

これを実装するための私たちの実用的なアイデア (おそらく最良のものではない) は、 を受け入れることでこれを実行しedit-config、次に sysrepo 内で、成功フラグまたは失敗フラグを使用してリーフの一部を編集し、それらが同じセッション内で発生することでした。初期変更。これにより、すべてがアトミックに保たれることを期待していました。セッション外で編集を行うと、複数の構成変更が互いに競合する可能性があります。

純粋な netconf を使用してこれを行うか、sysrepo を直接活用するかについては確信が持てませんでした。これらすべてのプラグイン/バインディングが sysrepo 用に作成されていることに気付き、それらを直接使用してデータストアと通信できると考えました。

しかし、そうは言っても、私たちの実用的なアイデアはおそらくベストプラクティスのアプローチではありません. これを達成するための最良の方法は何ですか?

私たちのシステムは次のとおりです。

そして、私たちのyangファイルは

module rxmbn {
  namespace "urn:com:zug:rxmbn";
  prefix rxmbn;

  container rxmbn-config {
    config true;
    leaf raw {
      type string;
    }
    leaf raw_hashCode {
      type int32;
    }
    leaf odl_last_processed_hashCode {
      type int32;
    }
    leaf processed {
      type boolean;
      default "false";
    }
  }
}

現在、次のことができます。

  • edit-config を netopeer サーバーに対して実行します
  • sysrepo データストアで新しい構成レジスタを確認できます
  • sysrepo が sysrepo の API を介してデータを登録する瞬間をキャプチャできます

しかし、私たちは問題を抱えています

  • 更新セッション中にデータストアをアトミックに編集する (ロックが原因で、これは正常です。実際、更新セッション中に編集する方法がない場合、それは問題なく、必要ありません。主な目標は次の箇条書きです)
  • 新しい edit-config にアトミックに反応し、エンド ユーザーに応答する

私たちは皆、netconf と yang に少し慣れていないので、netopeer セッションまたは sysrepo を介してnotificationapi またはapiを活用する何らかの方法があると確信していますが、まだ十分にわかっていません。event

このためのアトミックトランザクションを作成するための例や実装のアドバイスがあれば、それは本当に役に立ちます。

4

1 に答える 1